<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>arm on SANJAY REGMI</title>
    <link>https://sanjayregmi.com/tags/arm/</link>
    <description>Recent content in arm on SANJAY REGMI</description>
    <generator>Hugo -- gohugo.io</generator>
    <language>en-US</language>
    <lastBuildDate>Fri, 10 Apr 2026 12:21:22 -0700</lastBuildDate>
    
	<atom:link href="https://sanjayregmi.com/tags/arm/index.xml" rel="self" type="application/rss+xml" />
    
    
    
    
    
    
    
    <item>
      <title>What to do When You Cannot Find &#39;Microsoft Print to PDF&#39; Option When Trying to Print to PDF</title>
      <link>https://sanjayregmi.com/posts/when-you-cannot-find-microsoft-print-to-pdf-option-when-trying-to-print-to-pdf/</link>
      <pubDate>Fri, 10 Apr 2026 12:21:22 -0700</pubDate>
      
      <guid>https://sanjayregmi.com/posts/when-you-cannot-find-microsoft-print-to-pdf-option-when-trying-to-print-to-pdf/</guid>
      <description>&lt;p&gt;Sometimes you&amp;rsquo;ll come across Windows 11 computers that do not have the very handy &amp;ldquo;Microsoft Print to PDF&amp;rdquo; option in the list of printers to select. This option is very handy to save files as PDF and to split big PPDF by individual pages. Here are the steps you could try to get that option back and working.&lt;sup id=&#34;fnref:1&#34;&gt;&lt;a href=&#34;#fn:1&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;1&lt;/a&gt;&lt;/sup&gt;&lt;sup id=&#34;fnref:2&#34;&gt;&lt;a href=&#34;#fn:2&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;2&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Go to the search button on Windows, search for &amp;ldquo;Windows Features&amp;rdquo; and check under &amp;ldquo;Turn Windows on or off&amp;rdquo; box if &amp;ldquo;Microsoft Print to PDF&amp;rdquo; is turned off. If turned off, turn it on, and you&amp;rsquo;re good to go. If it&amp;rsquo;s turned on and still you do not see &amp;ldquo;Microsoft Print to PDF option, proceed below.&lt;/li&gt;
&lt;li&gt;Open Command Prompt as an admministrator and run the following:&lt;/li&gt;
&lt;/ol&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;net stop wuauserv
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;net stop bits
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;net stop cryptsvc
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;ren C:&lt;span class=&#34;se&#34;&gt;\W&lt;/span&gt;indows&lt;span class=&#34;se&#34;&gt;\S&lt;/span&gt;oftwareDistribution SoftwareDistribution.old
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;ren C:&lt;span class=&#34;se&#34;&gt;\W&lt;/span&gt;indows&lt;span class=&#34;se&#34;&gt;\S&lt;/span&gt;ystem32&lt;span class=&#34;se&#34;&gt;\c&lt;/span&gt;atroot2 catroot2.old
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;If you get &amp;ldquo;Access denied when running the two last commands, run the top three commands again.&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-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;net start wuauserv
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;net start bits
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;net start cryptsvc
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;DISM /Online /Cleanup-Image /RestoreHealth
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sfc /scannow
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;The above two commands WILL take time. Prepare to wait.&lt;/p&gt;
&lt;ol start=&#34;3&#34;&gt;
&lt;li&gt;Reboot, open Command Prompt as admin and:&lt;/li&gt;
&lt;/ol&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;DISM /Online /Enable-Feature /FeatureName:&lt;span class=&#34;s2&#34;&gt;&amp;#34;Printing-PrintToPDFServices-Features&amp;#34;&lt;/span&gt; /All
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ol start=&#34;4&#34;&gt;
&lt;li&gt;Check if &amp;ldquo;Microsoft Print to PDF&amp;rdquo; is now available when using a PDF Reader (say Foxit).&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;🍟&lt;/p&gt;
&lt;div class=&#34;top-content&#34; style=&#34;text-align: center;&#34;&gt;
  &lt;a href=&#34;https://prasna.ca/contact&#34;&gt;[web]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.linkedin.com/company/prasna-it&#34;&gt;[in]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.facebook.com/prasnait&#34;&gt;[fb]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.instagram.com/prasna.ca&#34;&gt;[ig]&lt;/a&gt; ·
  &lt;a href=&#34;https://x.com/PrasnaIT&#34;&gt;[x]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.tiktok.com/@prasna.ca&#34;&gt;[tt]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.youtube.com/channel/UCbDEvFG_MxmAvLsTeG02S8Q&#34;&gt;[yt]&lt;/a&gt;
&lt;/div&gt;

&lt;div class=&#34;footnotes&#34; role=&#34;doc-endnotes&#34;&gt;
&lt;hr&gt;
&lt;ol&gt;
&lt;li id=&#34;fn:1&#34;&gt;
&lt;p&gt;Tested on Windows 11 Home Premium Edition (Build 26200) (64-bit) (Release ID 25H2), BIOS Version F.29, Released 05/07/2024, HP Laptop 17-cp0xxx&amp;#160;&lt;a href=&#34;#fnref:1&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id=&#34;fn:2&#34;&gt;
&lt;p&gt;Sourced from: &lt;a href=&#34;https://techcommunity.microsoft.com/discussions/windows11/microsoft-print-to-pdf-missing/4416986&#34;&gt;https://techcommunity.microsoft.com/discussions/windows11/microsoft-print-to-pdf-missing/4416986&lt;/a&gt;&amp;#160;&lt;a href=&#34;#fnref:2&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
</description>
    </item>
    
    
    
    <item>
      <title>Two Quick Steps to Upgrade Windows Home to Windows Pro with a cheap license</title>
      <link>https://sanjayregmi.com/posts/two-quick-steps-to-upgrade-windows-home-to-windows-pro/</link>
      <pubDate>Tue, 17 Mar 2026 13:23:29 -0700</pubDate>
      
      <guid>https://sanjayregmi.com/posts/two-quick-steps-to-upgrade-windows-home-to-windows-pro/</guid>
      <description>&lt;p&gt;Step 1: Purchase a low cost Windows license from &lt;a href=&#34;https://www.pcworld.com/article/397575/how-to-get-windows-11-cheap-or-even-for-free.html&#34;&gt;here.&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Step 2: On the machine to be upgraded, start Command Prompt with admin privileges. Run this: &lt;code&gt; changepk.exe /productkey VK7JG-NPHTM-C97JM-9MPGT-3V66T.&lt;/code&gt; This will require you to reboot the machine and install the files necessary to get you into Professional license. If you are not going to buy a license and are okay without activation, you can use it. But if you bought a license go to the next step.&lt;/p&gt;
&lt;p&gt;Step 3: On the machine that has been upgraded, start Command Prompt with admin privileges. Run this: &lt;code&gt;changepk.exe /productkey YourPurchasedSerialNumber&lt;/code&gt;. This time you&amp;rsquo;ll not have to reboot the machine. Go to Settings &amp;ndash;&amp;gt; Activation to see if your machine is now Windows Professional and is activated. It should be.&lt;/p&gt;
&lt;p&gt;Works with Windows 11.&lt;/p&gt;
&lt;p&gt;🍊&lt;/p&gt;
&lt;div class=&#34;top-content&#34; style=&#34;text-align: center;&#34;&gt;
  &lt;a href=&#34;https://prasna.ca/contact&#34;&gt;[web]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.linkedin.com/company/prasna-it&#34;&gt;[in]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.facebook.com/prasnait&#34;&gt;[fb]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.instagram.com/prasna.ca&#34;&gt;[ig]&lt;/a&gt; ·
  &lt;a href=&#34;https://x.com/PrasnaIT&#34;&gt;[x]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.tiktok.com/@prasna.ca&#34;&gt;[tt]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.youtube.com/channel/UCbDEvFG_MxmAvLsTeG02S8Q&#34;&gt;[yt]&lt;/a&gt;
&lt;/div&gt;

</description>
    </item>
    
    
    
    <item>
      <title>Fix Upgrade Issues After Using Pkgbase on FreeBSD 15.x</title>
      <link>https://sanjayregmi.com/posts/fix-upgrade-issues-after-using-pkgbase-on-freebsd-15.x/</link>
      <pubDate>Tue, 03 Feb 2026 22:21:41 -0800</pubDate>
      
      <guid>https://sanjayregmi.com/posts/fix-upgrade-issues-after-using-pkgbase-on-freebsd-15.x/</guid>
      <description>&lt;p&gt;I recently upgraded my nas from 14.x to 15-RELEASE and then converted to &lt;code&gt;pkgbase&lt;/code&gt; because I just loved the idea of being able to do &lt;code&gt;pkg update&lt;/code&gt; and &lt;code&gt;pkg upgrade&lt;/code&gt; for all upgrades moving forward. After the upgrade, the version I was on was 15.RELEASE-p1. After about a month or so, when I noticed p2 was out, I ran &lt;code&gt;pkg update&lt;/code&gt; and &lt;code&gt;pkg upgrade&lt;/code&gt;, it still kept me at p1. Investigating, I figured when I ran the lua based script to upgrade to pkgbase, it didn&amp;rsquo;t (or I forgot) to say &lt;code&gt;yes&lt;/code&gt; for FreeBSD base repository. If you&amp;rsquo;re like me, here&amp;rsquo;s the instructions to fix it quickly.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Open  this file, I&amp;rsquo;ll use &lt;code&gt;vim&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;vim  /usr/local/etc/pkg/repos/FreeBSD-base.conf
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;Change &lt;code&gt;enabled: no&lt;/code&gt; to &lt;code&gt;enabled: yes&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Save it.&lt;/li&gt;
&lt;li&gt;Make sure you did your edit correctly.&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# cat /usr/local/etc/pkg/repos/FreeBSD-base.conf            &lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;FreeBSD-base: &lt;span class=&#34;o&#34;&gt;{&lt;/span&gt; enabled: yes &lt;span class=&#34;o&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;Now do &lt;code&gt;pkg update&lt;/code&gt; and &lt;code&gt;pkg upgrade&lt;/code&gt; and you should get into the latest upgrade.&lt;/li&gt;
&lt;li&gt;Reboot (sadly, you&amp;rsquo;ll have to reboot to be able to use the new kernel)&lt;/li&gt;
&lt;li&gt;After reboot, confirm you&amp;rsquo;ve upgraded by running:&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;freebsd-version -kru
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;All the entries listed by the command should be the latest version and patch levels.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;🍷&lt;/p&gt;
&lt;div class=&#34;top-content&#34; style=&#34;text-align: center;&#34;&gt;
  &lt;a href=&#34;https://prasna.ca/contact&#34;&gt;[web]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.linkedin.com/company/prasna-it&#34;&gt;[in]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.facebook.com/prasnait&#34;&gt;[fb]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.instagram.com/prasna.ca&#34;&gt;[ig]&lt;/a&gt; ·
  &lt;a href=&#34;https://x.com/PrasnaIT&#34;&gt;[x]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.tiktok.com/@prasna.ca&#34;&gt;[tt]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.youtube.com/channel/UCbDEvFG_MxmAvLsTeG02S8Q&#34;&gt;[yt]&lt;/a&gt;
&lt;/div&gt;

</description>
    </item>
    
    
    
    <item>
      <title>Fastest Way to Copy Ext4 Formatted Data to FreeBSD Using WSL2 as an Intermediary</title>
      <link>https://sanjayregmi.com/posts/fastest-way-to-copy-ext4-formatted-data-to-freebsd-using-wsl2-as-an-intermediary/</link>
      <pubDate>Sun, 25 Jan 2026 17:56:52 -0800</pubDate>
      
      <guid>https://sanjayregmi.com/posts/fastest-way-to-copy-ext4-formatted-data-to-freebsd-using-wsl2-as-an-intermediary/</guid>
      <description>&lt;p&gt;I run &lt;a href=&#34;https://sanjayregmi.com/tags/immich/&#34;&gt;immich&lt;/a&gt; on a very old dell laptop with 100mbps ethernet with USB connected disks for data. The disks are formatted ext4 and the dell runs fedora. (Immich doesn’t run on FreeBSD yet. :( ). When the disk was full, I wanted to use my FreeBSD server as the data drive over NFS. And retire the USB disks. This required copying about 500GB of data from the USB disk to my FreeBSD server before I could switch over.&lt;/p&gt;
&lt;p&gt;The first natural idea was to use use &lt;code&gt;rsync&lt;/code&gt;. I quickly figured though that the max speed of copy was 5MB/s probably because of 100Mbps ethernet port.&lt;/p&gt;
&lt;p&gt;The second idea then was to bring the USB disk to the FreeBSD server and mount it there. &lt;del&gt;Because FreeBSD doesn’t directly have NTFS drivers in the kernel for ext4, I used &lt;code&gt;fusefs-ext4fuse&lt;/code&gt;. That bumped the speed to 13MB/s over USB 3.0. That was still too slow.  I also learnt the FreeBSD has &lt;code&gt;fusefs-ext2&lt;/code&gt; but it only works for ext2, even though &lt;code&gt;ext2fs&lt;/code&gt; has a native kernel module.&lt;/del&gt; I seem to have used &lt;code&gt;fuse-ext2 -o async,noatime /dev/da0s1 /mnt/usb&lt;/code&gt; which again gave me 12MB/s, too slow a speed.&lt;sup id=&#34;fnref:1&#34;&gt;&lt;a href=&#34;#fn:1&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;1&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;p&gt;While researching, I figured there was another way that was very strange. It suggested using WSL2. Very curious, I decided to give it a shot. This is how I did it.&lt;sup id=&#34;fnref:2&#34;&gt;&lt;a href=&#34;#fn:2&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;2&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Connect the disk to a Windows box.&lt;/li&gt;
&lt;li&gt;Because Windows doesn&amp;rsquo;t understand ext4 natively, run this in PowerShell (Admin mode) to see if it’s connected:&lt;/li&gt;
&lt;/ol&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;get-ciminstance -query &lt;span class=&#34;s2&#34;&gt;&amp;#34;select * from Win32_DiskDrive&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;The output will be something like:&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-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;DeviceID           Caption                             Partitions Size          Model
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;---
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;se&#34;&gt;\\&lt;/span&gt;.&lt;span class=&#34;se&#34;&gt;\P&lt;/span&gt;HYSICALDRIVE0 Samsung SSD &lt;span class=&#34;m&#34;&gt;840&lt;/span&gt; EVO 250GB           &lt;span class=&#34;m&#34;&gt;3&lt;/span&gt;          &lt;span class=&#34;m&#34;&gt;250056737280&lt;/span&gt;  Samsung SSD &lt;span class=&#34;m&#34;&gt;840&lt;/span&gt; EVO 250GB
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;se&#34;&gt;\\&lt;/span&gt;.&lt;span class=&#34;se&#34;&gt;\P&lt;/span&gt;HYSICALDRIVE1 KINGSTON SNV3S1000G                 &lt;span class=&#34;m&#34;&gt;5&lt;/span&gt;          &lt;span class=&#34;m&#34;&gt;1000202273280&lt;/span&gt; KINGSTON SNV3S1000G
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;se&#34;&gt;\\&lt;/span&gt;.&lt;span class=&#34;se&#34;&gt;\P&lt;/span&gt;HYSICALDRIVE2 TOSHIBA External USB 3.0 USB Device &lt;span class=&#34;m&#34;&gt;1&lt;/span&gt;          &lt;span class=&#34;m&#34;&gt;1000202273280&lt;/span&gt; TOSHIBA External USB 3.0 USB Dev…
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Note the &lt;code&gt;DeviceID&lt;/code&gt;. In my case, it was connected as &lt;code&gt;PHYSICALDRIVE2&lt;/code&gt;.&lt;/p&gt;
&lt;ol start=&#34;3&#34;&gt;
&lt;li&gt;So to mount it in WSL2, you’d run, in the same Admin PowerShell Console:&lt;/li&gt;
&lt;/ol&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; WSL2 --mount &lt;span class=&#34;se&#34;&gt;\\&lt;/span&gt;.&lt;span class=&#34;se&#34;&gt;\P&lt;/span&gt;HYSICALDRIVE2 --PARTITION &lt;span class=&#34;m&#34;&gt;1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;If you get an error like this, its just that you’re not running the command in PowerShell Admin mode:&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-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Failed to attach disk &lt;span class=&#34;s1&#34;&gt;&amp;#39;\\.\PHYSICALDRIVE2&amp;#39;&lt;/span&gt; to WSL22: Error: 0x80040315
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Error code: WSL2/Service/AttachDisk/MountDisk/WSL2_E_ELEVATION_NEEDED_TO_MOUNT_DISK
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ol start=&#34;4&#34;&gt;
&lt;li&gt;Once the above command runs without error, open a WSL2 window and type this:&lt;/li&gt;
&lt;/ol&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;lsblk
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ol start=&#34;5&#34;&gt;
&lt;li&gt;Based on the output of lsblk, you could then mount the disk in WSL2 like this:&lt;/li&gt;
&lt;/ol&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo mount /dev/sd1 /mnt/usb_disk
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;assuming /sd1 is your partition and the mount point is /mnt/usb_disk (you need to create the mountpoint before running the command).&lt;/p&gt;
&lt;ol start=&#34;6&#34;&gt;
&lt;li&gt;Once I did that, I ran an rsync from within WSL2 to my NAS. I couldn’t believe my eyes, when the speed of copy went to 50-70 MB/s!&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Apparently this is because WSL2 runs a proper/genuine Linux kernel so there’s no other layer to disrupt the flow.&lt;/p&gt;
&lt;p&gt;Pleasantly surprised that Windows and WSL2 helped me today with my Linux to FreeBSD data transfer! Wonder what this says about WSL2&amp;rsquo;s development and progress so far&amp;hellip;&lt;/p&gt;
&lt;p&gt;😳&lt;/p&gt;
&lt;div class=&#34;top-content&#34; style=&#34;text-align: center;&#34;&gt;
  &lt;a href=&#34;https://prasna.ca/contact&#34;&gt;[web]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.linkedin.com/company/prasna-it&#34;&gt;[in]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.facebook.com/prasnait&#34;&gt;[fb]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.instagram.com/prasna.ca&#34;&gt;[ig]&lt;/a&gt; ·
  &lt;a href=&#34;https://x.com/PrasnaIT&#34;&gt;[x]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.tiktok.com/@prasna.ca&#34;&gt;[tt]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.youtube.com/channel/UCbDEvFG_MxmAvLsTeG02S8Q&#34;&gt;[yt]&lt;/a&gt;
&lt;/div&gt;

&lt;div class=&#34;footnotes&#34; role=&#34;doc-endnotes&#34;&gt;
&lt;hr&gt;
&lt;ol&gt;
&lt;li id=&#34;fn:1&#34;&gt;
&lt;p&gt;After this post went out, &lt;a href=&#34;https://vermaden.wordpress.com/&#34;&gt;vermaden&lt;/a&gt; found me on the intertubes and showed that there was no problem coping from ext4 to freebsd (kudos to him!). Then I figured I&amp;rsquo;d used, &lt;code&gt;fuse-ext2 -o async,noatime /dev/da0s1 /mnt/usb&lt;/code&gt; which is slow at 12MB/s instead of &lt;code&gt;mount -t ext2fs /dev/da0s1 /mnt/usb&lt;/code&gt; which is fast at 60MB/s. For reading purposes, you could use ext2 drivers to correctly read ext4 formatted data. &lt;a href=&#34;https://x.com/vermaden/status/2015824598562934803&#34;&gt;vermaden suggests&lt;/a&gt; to use &lt;code&gt;lklfuse -o type=ext4&lt;/code&gt; from the &lt;code&gt;fusefs-lkl&lt;/code&gt; package where you get optimal results.&amp;#160;&lt;a href=&#34;#fnref:1&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id=&#34;fn:2&#34;&gt;
&lt;p&gt;WSL version: Linux 6.6.87.2-microsoft-standard-WSL2; PowerShell: 7.4.2; FreeBSD: 15.0-RELEASE-P1; LAN is gigabit ethernet.&amp;#160;&lt;a href=&#34;#fnref:2&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
</description>
    </item>
    
    
    
    <item>
      <title>How to Get the Best Throughput - Both Upload and Download - From Remote Servers When Connected via Tailscale and Using Pfsense Firewall</title>
      <link>https://sanjayregmi.com/posts/how-to-get-the-best-throughput-both-upload-and-download-from-remote-servers-when-connected-via-tailscale-and-using-pfsense-firewall/</link>
      <pubDate>Thu, 15 Jan 2026 16:29:04 -0800</pubDate>
      
      <guid>https://sanjayregmi.com/posts/how-to-get-the-best-throughput-both-upload-and-download-from-remote-servers-when-connected-via-tailscale-and-using-pfsense-firewall/</guid>
      <description>&lt;p&gt;If you’ve had a VPS with Hetzner in Europe (very competitive hosting rates) and you’re a &lt;a href=&#34;https://sanjayregmi.com/tags/tailscale/&#34;&gt;Tailscale aficionado&lt;/a&gt; you’ve probably &lt;a href=&#34;https://sanjayregmi.com/posts/how-to-install-tailscale-on-freebsd/&#34;&gt;used Tailscale&lt;/a&gt; and been unhappy with upload/download speeds in kilobytes when connected via Tailscale over SSH. It turns out one reason for the low throughput is that you use &lt;a href=&#34;https://sanjayregmi.com/tags/pfsense/&#34;&gt;pfSense&lt;/a&gt; as your firewall, and it can be difficult for Tailscale to punch a hole through pfSense. As a result, it falls back to its DERP servers, which are shared resources for all Tailscale users and often have poor throughput. With that said, here’s a quick change to apply on pfSense to alleviate the problem.&lt;/p&gt;
&lt;h4 id=&#34;diagnosis&#34;&gt;Diagnosis&lt;/h4&gt;
&lt;ol&gt;
&lt;li&gt;Let&amp;rsquo;s find out whether your ssh connection to the remote servers is using DERP. Run this from your local machine:&lt;/li&gt;
&lt;/ol&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;tailscale ping &amp;lt;remote-server&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ol start=&#34;2&#34;&gt;
&lt;li&gt;If the results show &lt;code&gt;via DERP&lt;/code&gt;, then its confirmed, you&amp;rsquo;re not going through a direct connection. So proceed to the fix.&lt;/li&gt;
&lt;/ol&gt;
&lt;h4 id=&#34;the-fix-1&#34;&gt;The Fix &lt;sup id=&#34;fnref:1&#34;&gt;&lt;a href=&#34;#fn:1&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;1&lt;/a&gt;&lt;/sup&gt;&lt;/h4&gt;
&lt;ol start=&#34;3&#34;&gt;
&lt;li&gt;Open your pfSense portal and go to &lt;strong&gt;Firewall → NAT → Outbound&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Under &lt;strong&gt;Outbound NAT mode&lt;/strong&gt;, select &lt;strong&gt;Hybrid Outbound NAT&lt;/strong&gt;, then click &lt;strong&gt;Save&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;On the same page, under &lt;strong&gt;Mappings&lt;/strong&gt;, click the first &lt;strong&gt;Add&lt;/strong&gt; button so the new rule is above the &lt;strong&gt;Automatic Rules&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Configure the rule and enable it:
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Protocol:&lt;/strong&gt; &lt;code&gt;UDP&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Static Port:&lt;/strong&gt; enable it&lt;/li&gt;
&lt;li&gt;Click &lt;strong&gt;Save&lt;/strong&gt;, then &lt;strong&gt;Apply Changes&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;On the local machine, open a new terminal and run step 1 again. This time, you should see &lt;code&gt;pong from ...&lt;/code&gt; in the output. That confirms you have a direct connection.&lt;/li&gt;
&lt;li&gt;Check throughput by copying a few files with scp, you should see the throughput is much better than before.&lt;/li&gt;
&lt;li&gt;Consider rebooting pfSense after step 7.&lt;/li&gt;
&lt;li&gt;Tailscale suggests logging in to the Tailscale admin console and going to &lt;strong&gt;Access Controls&lt;/strong&gt;. Find the &lt;code&gt;nodeAttrs&lt;/code&gt; section and add &lt;a href=&#34;https://tailscale.com/kb/1337/policy-syntax&#34;&gt;&lt;code&gt;randomize-client-port&lt;/code&gt; inside the curly brackets&lt;/a&gt;, like this:&lt;/li&gt;
&lt;/ol&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;attr&amp;#34;&lt;/span&gt;: &lt;span class=&#34;o&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;funnel&amp;#34;&lt;/span&gt;, &lt;span class=&#34;s2&#34;&gt;&amp;#34;randomize-client-port&amp;#34;&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;]&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;div class=&#34;top-content&#34; style=&#34;text-align: center;&#34;&gt;
  &lt;a href=&#34;https://prasna.ca/contact&#34;&gt;[web]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.linkedin.com/company/prasna-it&#34;&gt;[in]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.facebook.com/prasnait&#34;&gt;[fb]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.instagram.com/prasna.ca&#34;&gt;[ig]&lt;/a&gt; ·
  &lt;a href=&#34;https://x.com/PrasnaIT&#34;&gt;[x]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.tiktok.com/@prasna.ca&#34;&gt;[tt]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.youtube.com/channel/UCbDEvFG_MxmAvLsTeG02S8Q&#34;&gt;[yt]&lt;/a&gt;
&lt;/div&gt;

&lt;div class=&#34;footnotes&#34; role=&#34;doc-endnotes&#34;&gt;
&lt;hr&gt;
&lt;ol&gt;
&lt;li id=&#34;fn:1&#34;&gt;
&lt;p&gt;Tested works on pfsense community edition version 2.8.1-RELEASE&amp;#160;&lt;a href=&#34;#fnref:1&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
</description>
    </item>
    
    
    
    <item>
      <title>The Easiest and Fail Safe Way to Set Up Scan-to-Email on Your Scanner With Office 365</title>
      <link>https://sanjayregmi.com/posts/easiest-and-fail-safe-way-to-set-up-scan-to-email-on-your-scanner-with-office-365/</link>
      <pubDate>Wed, 14 Jan 2026 14:28:21 -0800</pubDate>
      
      <guid>https://sanjayregmi.com/posts/easiest-and-fail-safe-way-to-set-up-scan-to-email-on-your-scanner-with-office-365/</guid>
      <description>&lt;p&gt;You just bought a shiny new printer, say an HP, and you want to set up Scan to Email so that when you scan from the multifunction device (printer/scanner), you receive an email with the scanned attachment.&lt;/p&gt;
&lt;p&gt;Nowadays, printer manufacturers ship printers with lots of software and often require software to be installed on computers. Installing software on individual machines can be tedious for a small business if you have a bunch of computers.&lt;/p&gt;
&lt;p&gt;The usual way to do this is to buy an extra email account and use it. But with two-factor authentication and Office 365 not enabling app passwords by default, it has become more complicated. (I found out the hard way that gmail app passwords don&amp;rsquo;t work for setting up some HP printers.)&lt;/p&gt;
&lt;p&gt;Here’s a quick and easy method that doesn’t get mentioned enough and that many people still don’t know about. It’s called the &lt;strong&gt;Microsoft Direct Send method&lt;/strong&gt;, and it works as long as you have Office 365 licenses. (You&amp;rsquo;ll not need to buy a new license for this to work.)&lt;sup id=&#34;fnref:1&#34;&gt;&lt;a href=&#34;#fn:1&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;1&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;h4 id=&#34;stage-1--preparation&#34;&gt;Stage 1 – Preparation&lt;/h4&gt;
&lt;ol&gt;
&lt;li&gt;Find your public IP address. Go to whatismyipaddress.com and copy the IP address. For example, your IP might be 1.2.3.4.&lt;/li&gt;
&lt;li&gt;Find your current MX record for the domain. For example: example-ca.mail.protection.outlook.com.&lt;/li&gt;
&lt;li&gt;Update your existing SPF record to include your public IP address, like this:&lt;/li&gt;
&lt;/ol&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;v&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;spf1 a mx ip4:1.2.3.4 include:spf.protection.outlook.com ~all
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h4 id=&#34;stage-2--printer-setup&#34;&gt;Stage 2 – Printer setup&lt;/h4&gt;
&lt;ol start=&#34;4&#34;&gt;
&lt;li&gt;Go to your printer’s Scan to Email settings. Create a new profile and use the following:&lt;/li&gt;
&lt;li&gt;Display Name: Choose a name&lt;/li&gt;
&lt;li&gt;Email address: For example, &lt;a href=&#34;mailto:scanner@example.ca&#34;&gt;scanner@example.ca&lt;/a&gt; (you do not need a valid mailbox or a paid license)&lt;/li&gt;
&lt;li&gt;SMTP Port Number: 25&lt;/li&gt;
&lt;li&gt;Secure connection: None&lt;/li&gt;
&lt;li&gt;Server Authentication: None (or “Server does not require authentication”)&lt;/li&gt;
&lt;li&gt;Save and test using a valid email address. You should receive an email into the valid email address.&lt;/li&gt;
&lt;/ol&gt;
&lt;h4 id=&#34;benefits-of-this-approach&#34;&gt;Benefits of this approach&lt;/h4&gt;
&lt;ol&gt;
&lt;li&gt;No need to install software on each machine to scan. The whole office/users can use it without any further changes.&lt;/li&gt;
&lt;li&gt;Even if poeple change computers, they are upgraded or replaced, this works.&lt;/li&gt;
&lt;li&gt;Will work for multiple Scanner/Multi fuction devices.&lt;/li&gt;
&lt;li&gt;No password to maintain, never expires.&lt;/li&gt;
&lt;li&gt;Does not require any license.&lt;/li&gt;
&lt;/ol&gt;
&lt;h4 id=&#34;further-reading&#34;&gt;Further Reading&lt;/h4&gt;
&lt;p&gt;&lt;a href=&#34;https://learn.microsoft.com/en-us/exchange/mail-flow-best-practices/how-to-set-up-a-multifunction-device-or-application-to-send-email-using-microsoft-365-or-office-365&#34;&gt;https://learn.microsoft.com/en-us/exchange/mail-flow-best-practices/how-to-set-up-a-multifunction-device-or-application-to-send-email-using-microsoft-365-or-office-365&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;🤷&lt;/p&gt;
&lt;div class=&#34;top-content&#34; style=&#34;text-align: center;&#34;&gt;
  &lt;a href=&#34;https://prasna.ca/contact&#34;&gt;[web]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.linkedin.com/company/prasna-it&#34;&gt;[in]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.facebook.com/prasnait&#34;&gt;[fb]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.instagram.com/prasna.ca&#34;&gt;[ig]&lt;/a&gt; ·
  &lt;a href=&#34;https://x.com/PrasnaIT&#34;&gt;[x]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.tiktok.com/@prasna.ca&#34;&gt;[tt]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.youtube.com/channel/UCbDEvFG_MxmAvLsTeG02S8Q&#34;&gt;[yt]&lt;/a&gt;
&lt;/div&gt;

&lt;div class=&#34;footnotes&#34; role=&#34;doc-endnotes&#34;&gt;
&lt;hr&gt;
&lt;ol&gt;
&lt;li id=&#34;fn:1&#34;&gt;
&lt;p&gt;Tested with HP OfficeJet Pro 9130e&amp;#160;&lt;a href=&#34;#fnref:1&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
</description>
    </item>
    
    
    
    <item>
      <title>Swap Growing on Your Freebsd Server? Check Your php_fpm Settings - Step 2</title>
      <link>https://sanjayregmi.com/posts/swap-growing-on-your-freebsd-server-check-your-php-fpm-settings/</link>
      <pubDate>Sat, 10 Jan 2026 19:39:00 -0800</pubDate>
      
      <guid>https://sanjayregmi.com/posts/swap-growing-on-your-freebsd-server-check-your-php-fpm-settings/</guid>
      <description>&lt;p&gt;After &lt;a href=&#34;https://sanjayregmi.com/posts/swap-growing-on-your-freebsd-server-check-your-database-settings&#34;&gt;tuning for swap space by reducing MySQL memory usage&lt;/a&gt;, the other area to look into would be php_fpm settings.&lt;/p&gt;
&lt;p&gt;The settings are located here if you&amp;rsquo;re using a freebsd jail:&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-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;/usr/local/bastille/jails/&amp;lt;your jail name&amp;gt;/root/usr/local/etc/php-fpm.d/www.conf
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Edit the file so your last five values are like this:&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-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;o&#34;&gt;[&lt;/span&gt;www&lt;span class=&#34;o&#34;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;user&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; www
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;group&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; www
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;listen&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; /var/run/php-fpm.sock
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;listen.owner &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; www
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;listen.group &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; www
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;listen.mode &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;m&#34;&gt;0660&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;pm&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; dynamic
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pm.max_children &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;m&#34;&gt;3&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pm.start_servers &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;m&#34;&gt;1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pm.min_spare_servers &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;m&#34;&gt;1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pm.max_spare_servers &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;m&#34;&gt;2&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;The meanings of the last five values are:&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-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;pm&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; dynamic &lt;span class=&#34;c1&#34;&gt;# Worker count adjusts based on load&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pm.max_children &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;m&#34;&gt;3&lt;/span&gt; &lt;span class=&#34;c1&#34;&gt;# Maximum 3 workers (caps memory usage), you might have a lot more by default&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pm.start_servers &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;m&#34;&gt;1&lt;/span&gt; &lt;span class=&#34;c1&#34;&gt;# When the server starts, start with only one worker&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pm.min_spare_servers &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;m&#34;&gt;1&lt;/span&gt; &lt;span class=&#34;c1&#34;&gt;# Keep at least 1 idle worker ready&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pm.max_spare_servers &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;m&#34;&gt;22&lt;/span&gt; &lt;span class=&#34;c1&#34;&gt;# Do not create more than 2 idle workers&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;div class=&#34;top-content&#34; style=&#34;text-align: center;&#34;&gt;
  &lt;a href=&#34;https://prasna.ca/contact&#34;&gt;[web]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.linkedin.com/company/prasna-it&#34;&gt;[in]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.facebook.com/prasnait&#34;&gt;[fb]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.instagram.com/prasna.ca&#34;&gt;[ig]&lt;/a&gt; ·
  &lt;a href=&#34;https://x.com/PrasnaIT&#34;&gt;[x]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.tiktok.com/@prasna.ca&#34;&gt;[tt]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.youtube.com/channel/UCbDEvFG_MxmAvLsTeG02S8Q&#34;&gt;[yt]&lt;/a&gt;
&lt;/div&gt;

</description>
    </item>
    
    
    
    <item>
      <title>Swap Growing on Your Freebsd Server? Check Your Database Settings - Step 1</title>
      <link>https://sanjayregmi.com/posts/swap-growing-on-your-freebsd-server-check-your-database-settings/</link>
      <pubDate>Fri, 09 Jan 2026 15:03:24 -0800</pubDate>
      
      <guid>https://sanjayregmi.com/posts/swap-growing-on-your-freebsd-server-check-your-database-settings/</guid>
      <description>&lt;p&gt;On a FreeBSD machine with a bunch of wordpress website jails that work with one database jail, the system might continuosly use up swap space if your VM has say 4G or less memory.&lt;/p&gt;
&lt;p&gt;If the swap is continuously increasing, figure what is using swap:&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-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;top -o swap -n &lt;span class=&#34;m&#34;&gt;20&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;And if it is a SQL process, open the following file, provided your db jail is called db0, you are using bastille as your jail application and you&amp;rsquo;re using Unix socket:&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-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;/usr/local/bastille/jails/db0/root/usr/local/etc/mysql/my.cnf
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;and make following edit to the file to make this variable 256 Megabytes (if the existing value is larger than that). Or even 128MB. Simple Wordpress sites work without issues with that much memory:&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-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;o&#34;&gt;[&lt;/span&gt;mysqld&lt;span class=&#34;o&#34;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;innodb_buffer_pool_size&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; 256M
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;After that, restart your jail:&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-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;bastille restart db0
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Now, if you run the top command, your swap should have immediately decreased. And then it&amp;rsquo;ll continously decrease over the next few hours.&lt;/p&gt;
&lt;p&gt;If you want to decrease swap usage even further, go over to &lt;a href=&#34;https://sanjayregmi.com/posts/swap-growing-on-your-freebsd-server-check-your-php-fpm-settings&#34;&gt;Swap Growing on Your Freebsd Server? Check Your php_fpm Settings - Step 2&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;😤&lt;/p&gt;
&lt;div class=&#34;top-content&#34; style=&#34;text-align: center;&#34;&gt;
  &lt;a href=&#34;https://prasna.ca/contact&#34;&gt;[web]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.linkedin.com/company/prasna-it&#34;&gt;[in]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.facebook.com/prasnait&#34;&gt;[fb]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.instagram.com/prasna.ca&#34;&gt;[ig]&lt;/a&gt; ·
  &lt;a href=&#34;https://x.com/PrasnaIT&#34;&gt;[x]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.tiktok.com/@prasna.ca&#34;&gt;[tt]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.youtube.com/channel/UCbDEvFG_MxmAvLsTeG02S8Q&#34;&gt;[yt]&lt;/a&gt;
&lt;/div&gt;

</description>
    </item>
    
    
    
    <item>
      <title>Setup Website Monitoring Properly So You Know if Your Database Connection Goes Down</title>
      <link>https://sanjayregmi.com/posts/setup-website-monitoring-properly-so-you-know-if-your-database-connection-goes-down/</link>
      <pubDate>Sun, 04 Jan 2026 00:14:03 -0800</pubDate>
      
      <guid>https://sanjayregmi.com/posts/setup-website-monitoring-properly-so-you-know-if-your-database-connection-goes-down/</guid>
      <description>&lt;p&gt;I monitor my websites with UptimeRobot on the free plan. It&amp;rsquo;s good, the timer checks every five minutes and for most hobby projects, it&amp;rsquo;s more than enough. The monitor URLs were setup as for example, &lt;a href=&#34;https://prasna.ca&#34;&gt;https://prasna.ca&lt;/a&gt;. A few days ago, I realized there was &amp;lsquo;database connection&amp;rsquo; error but since I use redis and CloudFlare, simple curl commands give status 200 and we never found out AND UptimeRobot was happy as well so we didn&amp;rsquo;t know the site was down.&lt;/p&gt;
&lt;p&gt;I figured, if you setup the URLs in UptimeRobot like &lt;a href=&#34;https://prasna.ca/wp-login.php&#34;&gt;https://prasna.ca/wp-login.php&lt;/a&gt;, it catches the db error. And the reason is that URL is not cached and that UptimeRobot seems to be smart enough to find that its a db error and sends &amp;lsquo;website down&amp;rsquo; alerts.&lt;/p&gt;
&lt;p&gt;♨️&lt;/p&gt;
&lt;div class=&#34;top-content&#34; style=&#34;text-align: center;&#34;&gt;
  &lt;a href=&#34;https://prasna.ca/contact&#34;&gt;[web]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.linkedin.com/company/prasna-it&#34;&gt;[in]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.facebook.com/prasnait&#34;&gt;[fb]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.instagram.com/prasna.ca&#34;&gt;[ig]&lt;/a&gt; ·
  &lt;a href=&#34;https://x.com/PrasnaIT&#34;&gt;[x]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.tiktok.com/@prasna.ca&#34;&gt;[tt]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.youtube.com/channel/UCbDEvFG_MxmAvLsTeG02S8Q&#34;&gt;[yt]&lt;/a&gt;
&lt;/div&gt;

</description>
    </item>
    
    
    
    <item>
      <title>Exploit the benefit of security and stability of FreeBSD by running webservers in jails along with reverse proxy jail, database jail and a redis jail</title>
      <link>https://sanjayregmi.com/posts/setup-freebsd-jails-of-database-reverse-proxy-redis-and-individual-websites/</link>
      <pubDate>Thu, 01 Jan 2026 16:07:29 -0800</pubDate>
      
      <guid>https://sanjayregmi.com/posts/setup-freebsd-jails-of-database-reverse-proxy-redis-and-individual-websites/</guid>
      <description>&lt;p&gt;This holiday season I read up on FreeBSD jails. I&amp;rsquo;ve always wanted to be able to setup secure and stable websites. And Jails were the answer.&lt;/p&gt;
&lt;p&gt;I&amp;rsquo;ve used Bastille as a jail tool, there are many out there and you can even do it without a tool, the FreeBSD handbook has enough to set them up.&lt;/p&gt;
&lt;p&gt;My architecture for version one was a reverse proxy for all website jails. Then each website jail would have the whole stack - the database, the php components and the wordpres website. It took some time to build one but then I quickly realized, running MySQL databases for every website was a bit too overkill as MySQL took a lot of RAM out of my Hetzner VM with 4GB of memory. Having said that, if you need absolute security, you should do it this way. But I found a more efficient method for my small websites.&lt;/p&gt;
&lt;p&gt;Version two consisted of a proxy jail for all websites to reverse proxy, one database jail for all website jails to use, one redis jail for all websites jails to use. This was a much better approach. After a lot of trial and error, I built two scripts. One to setup the base system with whatever websites you currently have. Then a second script to just add more websites. Both are ansible playbooks and the way I did was to copy paste the scripts on the console of the VM via SSH. This creates all required files and you can just run the .sh file.&lt;/p&gt;
&lt;p&gt;The script has been designed to run on a freshly spun FreeBSD instance. At Hetzner, you first buy a VM, mount a bootable Freebsd iso. Then reboot the machine. The reboot kicks off booting from the mounted iso. So you install freebsd with ZFS, add a user and put them into wheel group, shutdown the machine. Once the machine is shutdown, unmount the ISO and reboot. You now can ssh into the box using your newly added user. Then do a &amp;lsquo;su&amp;rsquo;, become root and copy paste the script below.&lt;/p&gt;
&lt;p&gt;The script takes care of pkg update, sets up Bastille properly and then builds the entire foundation. It takes cares of setting up of all components, sets up gzip and http2 and redis, certbot etc. At the end, you can just setup the wordpress sites from your browser.&lt;/p&gt;
&lt;h4 id=&#34;scripts&#34;&gt;Scripts&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://sanjayregmi.com/scripts/setup-bastille-wordpress-production-v6-redis.sh&#34;&gt;Foundation script&lt;/a&gt;
Instruction: SSH into the host, copy paste the script into console, run the sh file.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://sanjayregmi.com/scripts/add-wordpress-site-v6.sh&#34;&gt;Add new Wordpress website script&lt;/a&gt;
Instruction: SSH into the host, copy paste the script into console, run the sh file.&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id=&#34;some-specs&#34;&gt;Some specs&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;Host system is using FreeBSD 15.0-RELEASE.&lt;/li&gt;
&lt;li&gt;All jails are also using FreeBSD 15.0-RELEASE.&lt;/li&gt;
&lt;li&gt;Tested on Hetzner VM with 4GB of memory in the second half of December 2025.&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id=&#34;notes&#34;&gt;Notes&lt;/h4&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://sanjayregmi.com/posts/how-to-install-tailscale-on-freebsd/&#34;&gt;Install Tailscale&lt;/a&gt;, enable tailscale setup &amp;ndash;ssh so you can securely connect to the server passwordless. You can then stop the regular SSH from running (Yeah, tailscale doesn&amp;rsquo;t need that). That way, the thousands of bots trying to SSH to your server will not have anything to do at least on your server.https://sanjayregmi.com/posts/how-to-install-tailscale-on-freebsd/&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Use ZFS snapshots for safety, backup.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Hetzner snapshots are very fast, take about one minute for 20GB of data. Use it - it costs extra but it&amp;rsquo;s worth it.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Lock the VM from inadvertent deletion. Hetzner console has the feature and its easy to find and setup.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Setup DragonFly Mail Agent (DMA) on the FreeBSD system so it alerts you via email. &lt;a href=&#34;https://sanjayregmi.com/posts/how-to-enable-sending-email-from-your-freebsd-machine-using-dragonfly-mail-agent-dma/&#34;&gt;It&amp;rsquo;s quick and easy to setup.&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Always take ZFS snapshots before a major update. That&amp;rsquo;s one of the beauties of ZFS.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;🚥&lt;/p&gt;
&lt;div class=&#34;top-content&#34; style=&#34;text-align: center;&#34;&gt;
  &lt;a href=&#34;https://prasna.ca/contact&#34;&gt;[web]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.linkedin.com/company/prasna-it&#34;&gt;[in]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.facebook.com/prasnait&#34;&gt;[fb]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.instagram.com/prasna.ca&#34;&gt;[ig]&lt;/a&gt; ·
  &lt;a href=&#34;https://x.com/PrasnaIT&#34;&gt;[x]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.tiktok.com/@prasna.ca&#34;&gt;[tt]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.youtube.com/channel/UCbDEvFG_MxmAvLsTeG02S8Q&#34;&gt;[yt]&lt;/a&gt;
&lt;/div&gt;

</description>
    </item>
    
    
    
    <item>
      <title>How to Enable Sending Email From Your FreeBSD Machine Using Dragonfly Mail Agent (DMA)</title>
      <link>https://sanjayregmi.com/posts/how-to-enable-sending-email-from-your-freebsd-machine-using-dragonfly-mail-agent-dma/</link>
      <pubDate>Mon, 22 Dec 2025 19:10:57 -0800</pubDate>
      
      <guid>https://sanjayregmi.com/posts/how-to-enable-sending-email-from-your-freebsd-machine-using-dragonfly-mail-agent-dma/</guid>
      <description>&lt;p&gt;After you&amp;rsquo;ve setup your FreeBSD box, having the box email you for all sorts of reports, cron updates etc is really useful. You don&amp;rsquo;t have to login to the machine to see them, you can get them in your email. With DragonFly Mail Agent, the setting of such an email system is quick and easy. Here&amp;rsquo;s the intructions:&lt;/p&gt;
&lt;h4 id=&#34;prerequisites&#34;&gt;Prerequisites&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;Replace &lt;a href=&#34;mailto:nobody@gmail.com&#34;&gt;nobody@gmail.com&lt;/a&gt; with your own email address. Make sure you have two factor authentication on and then you can setup an app password.&lt;/li&gt;
&lt;li&gt;Replace &amp;ldquo;replace-with-your-app-password&amp;rdquo; with your gmail app password.&lt;/li&gt;
&lt;li&gt;The following using gmail as your SMTP provider.&lt;/li&gt;
&lt;li&gt;Assumes you&amp;rsquo;re installing this as root.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;part-one---setup-dma&#34;&gt;Part one - setup DMA&lt;/h2&gt;
&lt;h3 id=&#34;setup-of-dma-for-freebsd-14x&#34;&gt;Setup of DMA for FreeBSD 14.x&lt;/h3&gt;
&lt;h5 id=&#34;install-dma&#34;&gt;Install DMA&lt;/h5&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pkg install dma
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h5 id=&#34;backup-original-config&#34;&gt;Backup original config&lt;/h5&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;cp /usr/local/etc/dma/dma.conf /usr/local/etc/dma/dma.conf.bak
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h5 id=&#34;configure-dma&#34;&gt;Configure DMA&lt;/h5&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;cat &amp;gt; /usr/local/etc/dma/dma.conf &lt;span class=&#34;s&#34;&gt;&amp;lt;&amp;lt; &amp;#39;EOF&amp;#39;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s&#34;&gt;SMARTHOST smtp.gmail.com
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s&#34;&gt;PORT 587
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s&#34;&gt;AUTHPATH /usr/local/etc/dma/auth.conf
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s&#34;&gt;SECURETRANSFER
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s&#34;&gt;STARTTLS
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s&#34;&gt;MASQUERADE nobody@gmail.com
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s&#34;&gt;EOF&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h5 id=&#34;set-up-authentication&#34;&gt;Set up authentication&lt;/h5&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;cat &amp;gt; /usr/local/etc/dma/auth.conf &lt;span class=&#34;s&#34;&gt;&amp;lt;&amp;lt; &amp;#39;EOF&amp;#39;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s&#34;&gt;nobody@gmail.com|smtp.gmail.com:replace-with-your-app-password
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s&#34;&gt;EOF&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h5 id=&#34;secure-auth-file&#34;&gt;Secure auth file&lt;/h5&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;chmod &lt;span class=&#34;m&#34;&gt;640&lt;/span&gt; /usr/local/etc/dma/auth.conf
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;chown root:mail /usr/local/etc/dma/auth.conf
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h5 id=&#34;enable-dma-in-rcconf&#34;&gt;Enable DMA in rc.conf&lt;/h5&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sysrc &lt;span class=&#34;nv&#34;&gt;sendmail_enable&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;NO&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sysrc &lt;span class=&#34;nv&#34;&gt;sendmail_submit_enable&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;NO&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sysrc &lt;span class=&#34;nv&#34;&gt;sendmail_outbound_enable&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;NO&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sysrc &lt;span class=&#34;nv&#34;&gt;sendmail_msp_queue_enable&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;NO&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sysrc &lt;span class=&#34;nv&#34;&gt;dma_enable&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;YES&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h5 id=&#34;set-up-mailwrapper&#34;&gt;Set up mailwrapper&lt;/h5&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;cat &amp;gt; /etc/mail/mailer.conf &lt;span class=&#34;s&#34;&gt;&amp;lt;&amp;lt; &amp;#39;EOF&amp;#39;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s&#34;&gt;sendmail        /usr/local/libexec/dma
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s&#34;&gt;mailq           /usr/local/libexec/dma
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s&#34;&gt;newaliases      /usr/local/libexec/dma
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s&#34;&gt;EOF&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h5 id=&#34;quick-test&#34;&gt;Quick Test&lt;/h5&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;echo&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;Test email&amp;#34;&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; mail -s &lt;span class=&#34;s2&#34;&gt;&amp;#34;Test from FreeBSD&amp;#34;&lt;/span&gt; nobody@gmail.com
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h5 id=&#34;monitor-logs&#34;&gt;Monitor logs&lt;/h5&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;tail -f /var/log/maillog
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id=&#34;setup-of-dma-for-freebsd-15x&#34;&gt;Setup of DMA for FreeBSD 15.x&lt;/h3&gt;
&lt;p&gt;Notice the path for dma is different, its simpler in 15.x.&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-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pkg install dma
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;cp /etc/dma/dma.conf /etc/dma/dma.conf.bak
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;cat &amp;gt; /etc/dma/dma.conf &lt;span class=&#34;s&#34;&gt;&amp;lt;&amp;lt; &amp;#39;EOF&amp;#39;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s&#34;&gt;SMARTHOST smtp.gmail.com
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s&#34;&gt;PORT 587
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s&#34;&gt;AUTHPATH /etc/dma/auth.conf
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s&#34;&gt;SECURETRANSFER
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s&#34;&gt;STARTTLS
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s&#34;&gt;MASQUERADE nobody@gmail.com
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s&#34;&gt;EOF&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;cat &amp;gt; /etc/dma/auth.conf &lt;span class=&#34;s&#34;&gt;&amp;lt;&amp;lt; &amp;#39;EOF&amp;#39;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s&#34;&gt;nobody@gmail.com|smtp.gmail.com:replace-with-your-app-password
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s&#34;&gt;EOF&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;chmod &lt;span class=&#34;m&#34;&gt;640&lt;/span&gt; /etc/dma/auth.conf
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;chown root:mail /etc/dma/auth.conf
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sysrc &lt;span class=&#34;nv&#34;&gt;sendmail_enable&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;NO&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sysrc &lt;span class=&#34;nv&#34;&gt;sendmail_submit_enable&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;NO&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sysrc &lt;span class=&#34;nv&#34;&gt;sendmail_outbound_enable&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;NO&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sysrc &lt;span class=&#34;nv&#34;&gt;sendmail_msp_queue_enable&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;NO&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sysrc &lt;span class=&#34;nv&#34;&gt;dma_enable&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;YES&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;cat &amp;gt; /etc/mail/mailer.conf &lt;span class=&#34;s&#34;&gt;&amp;lt;&amp;lt; &amp;#39;EOF&amp;#39;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s&#34;&gt;sendmail        /usr/libexec/dma
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s&#34;&gt;mailq           /usr/libexec/dma
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s&#34;&gt;newaliases      /usr/libexec/dma
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s&#34;&gt;EOF&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;echo&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;Test email&amp;#34;&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; mail -s &lt;span class=&#34;s2&#34;&gt;&amp;#34;Test from FreeBSD&amp;#34;&lt;/span&gt; nobody@gmail.com
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;tail -f /var/log/maillog
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;part-two---make-cron-send-emails-to-you&#34;&gt;Part two - make cron send emails to you&lt;/h2&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# Create /etc/mail/aliases or add root alias&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;echo&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;root: nobody@gmail.com&amp;#34;&lt;/span&gt; &amp;gt;&amp;gt; /etc/mail/aliases
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# Or if you want all mail to go to your Gmail&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;cat &amp;gt; /etc/mail/aliases &lt;span class=&#34;s&#34;&gt;&amp;lt;&amp;lt; &amp;#39;EOF&amp;#39;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s&#34;&gt;# Send all system mail to Gmail
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s&#34;&gt;root: nobody@gmail.com
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s&#34;&gt;EOF&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# Then rebuild aliases&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;newaliases
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;🔵&lt;/p&gt;
&lt;div class=&#34;top-content&#34; style=&#34;text-align: center;&#34;&gt;
  &lt;a href=&#34;https://prasna.ca/contact&#34;&gt;[web]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.linkedin.com/company/prasna-it&#34;&gt;[in]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.facebook.com/prasnait&#34;&gt;[fb]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.instagram.com/prasna.ca&#34;&gt;[ig]&lt;/a&gt; ·
  &lt;a href=&#34;https://x.com/PrasnaIT&#34;&gt;[x]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.tiktok.com/@prasna.ca&#34;&gt;[tt]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.youtube.com/channel/UCbDEvFG_MxmAvLsTeG02S8Q&#34;&gt;[yt]&lt;/a&gt;
&lt;/div&gt;

</description>
    </item>
    
    
    
    <item>
      <title>Upgrading Proxmox 8 to 9 on Macbook Pro 2015</title>
      <link>https://sanjayregmi.com/posts/upgrading-proxmox-8-to-9-on-macbook-pro-2015/</link>
      <pubDate>Mon, 15 Dec 2025 19:03:56 -0800</pubDate>
      
      <guid>https://sanjayregmi.com/posts/upgrading-proxmox-8-to-9-on-macbook-pro-2015/</guid>
      <description>&lt;p&gt;I run proxmox 8 on an old 2015 ish Macbook Pro. 16GB memory, silent, 500GB SSD, its a good machine. When Proxmox 9 came out, I wanted to upgrade it to 9. Proxmox has an upgrade guide. Followed it, everything went fine. After reboot and upon ssh, I realized, root was mounted readyonly.&lt;sup id=&#34;fnref:1&#34;&gt;&lt;a href=&#34;#fn:1&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;1&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;p&gt;A dmesg check revealed that there were a lot of hard disk read errors. Strange I thought. LLMs said the nvme drives on those machines were not so great and that it was probably failing and it failed now. I wasn&amp;rsquo;t so sure. After a few cleanups and reboots, I decided to use CloneZilla to image the original Mac OS I&amp;rsquo;d saved. Interestingly, restore succeeded without any issues. Now, Clonezilla is all linux and if it was able to first run without issues and succeed in cloning, the mac ssd wasn&amp;rsquo;t the issue.&lt;/p&gt;
&lt;p&gt;Thinking perhaps the upgrade was the issue, I used the Proxmox 9 ISO to do a full and new install. Midway through the installation, I began to get write errors. That was confounding!&lt;/p&gt;
&lt;p&gt;So after some thinking, I tried to install Ubuntu 24.x, same issue. Lastly, I ran the Proxmox 8 install, it installed flawlessly. Then I knew it was a kernel/drivers etc. issue. Took half a day but I&amp;rsquo;m back using the Proxmox server on my trusty macbook pro.&lt;/p&gt;
&lt;p&gt;Learnings - Dont&amp;rsquo; trust LLMs. They don&amp;rsquo;t have the full picture, they go after break fix and sometimes, they&amp;rsquo;ll waste your time going into circles.&lt;/p&gt;
&lt;p&gt;❌&lt;/p&gt;
&lt;div class=&#34;top-content&#34; style=&#34;text-align: center;&#34;&gt;
  &lt;a href=&#34;https://prasna.ca/contact&#34;&gt;[web]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.linkedin.com/company/prasna-it&#34;&gt;[in]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.facebook.com/prasnait&#34;&gt;[fb]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.instagram.com/prasna.ca&#34;&gt;[ig]&lt;/a&gt; ·
  &lt;a href=&#34;https://x.com/PrasnaIT&#34;&gt;[x]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.tiktok.com/@prasna.ca&#34;&gt;[tt]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.youtube.com/channel/UCbDEvFG_MxmAvLsTeG02S8Q&#34;&gt;[yt]&lt;/a&gt;
&lt;/div&gt;

&lt;div class=&#34;footnotes&#34; role=&#34;doc-endnotes&#34;&gt;
&lt;hr&gt;
&lt;ol&gt;
&lt;li id=&#34;fn:1&#34;&gt;
&lt;p&gt;Tested on Proxmox ISO version 9.1-1. Macbook pro 2015 ish. Linux pve-a 6.8.12-17-pve #1 SMP PREEMPT_DYNAMIC PMX 6.8.12-17 (2025-11-21T11:16Z) x86_64 GNU/Linux&amp;#160;&lt;a href=&#34;#fnref:1&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
</description>
    </item>
    
    
    
    <item>
      <title>Hard Disk Noise and Seagate IronWolf Pro 12TB</title>
      <link>https://sanjayregmi.com/posts/hard-disk-noise-and-seagate-ironwolf-pro-12tb/</link>
      <pubDate>Mon, 01 Dec 2025 15:41:08 -0800</pubDate>
      
      <guid>https://sanjayregmi.com/posts/hard-disk-noise-and-seagate-ironwolf-pro-12tb/</guid>
      <description>&lt;p&gt;I bought two &lt;strong&gt;Seagate IronWolf Pro 12TB&lt;/strong&gt; hard drives recently for my home nas. They’re considered great drives for 24/7 operation. I’m using them as mirrored ZFS drives in FreeBSD. One thing that took me by surprise was the noise of the disk! The first time I installed them and I was running them on a desk (yeah, too excited to place them in the case), outside the case, the noise was startling. I thought the disks were bad. I had to repeatedly run smartmontools to check that they were good and that the ZFS pools had no errors. The seeks are pretty loud and unsettling and the writes are noisy as well. Since then, I’ve properly installed them into the case and kept teh case about a metre away and I’ve perhaps gotten used to it. I’ll probably move it out but if you have a lot of continuous disk operations during the day at your office, you’d really have to get used to the noise.&lt;/p&gt;
&lt;p&gt;A month in, ten TBs or reads/writes and they’re happily chugging along.&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;camcontrol devlist output: ST12000NT001-3MD101 EN01
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;♨️&lt;/p&gt;
&lt;div class=&#34;top-content&#34; style=&#34;text-align: center;&#34;&gt;
  &lt;a href=&#34;https://prasna.ca/contact&#34;&gt;[web]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.linkedin.com/company/prasna-it&#34;&gt;[in]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.facebook.com/prasnait&#34;&gt;[fb]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.instagram.com/prasna.ca&#34;&gt;[ig]&lt;/a&gt; ·
  &lt;a href=&#34;https://x.com/PrasnaIT&#34;&gt;[x]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.tiktok.com/@prasna.ca&#34;&gt;[tt]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.youtube.com/channel/UCbDEvFG_MxmAvLsTeG02S8Q&#34;&gt;[yt]&lt;/a&gt;
&lt;/div&gt;

</description>
    </item>
    
    
    
    <item>
      <title>Enjoy Fedora Command Line Input (CLI) colors? Apply it quickly to your Ubuntu and Debian machines</title>
      <link>https://sanjayregmi.com/posts/enjoy-fedora-cli-colors-apply-it-to-ubuntu-and-even-debian/</link>
      <pubDate>Mon, 10 Nov 2025 13:13:59 -0800</pubDate>
      
      <guid>https://sanjayregmi.com/posts/enjoy-fedora-cli-colors-apply-it-to-ubuntu-and-even-debian/</guid>
      <description>&lt;p&gt;I recently installed Fedora and loved the CLI color combinations (vibrant!). I wanted to apply it to Ubuntu and Debian (Proxmox) servers so here are the commands, just copy paste it into your cli.&lt;sup id=&#34;fnref:1&#34;&gt;&lt;a href=&#34;#fn:1&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;1&lt;/a&gt;&lt;/sup&gt;:&lt;/p&gt;
&lt;h4 id=&#34;the-script&#34;&gt;The script&lt;/h4&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code class=&#34;language-bashhup&#34; data-lang=&#34;bashhup&#34;&gt;#!/bin/bash
# Apply Fedora-like CLI colors and prompt on Ubuntu

# Backup existing configuration
cp ~/.bashrc ~/.bashrc.bak.$(date +%s)

# Append Fedora-style prompt and color aliases
cat &amp;lt;&amp;lt;&amp;#39;EOF&amp;#39; &amp;gt;&amp;gt; ~/.bashrc

# ==== Fedora-style CLI color scheme ====

# Enable color support for ls and grep
export LS_OPTIONS=&amp;#39;--color=auto&amp;#39;
eval &amp;#34;$(dircolors -b ~/.dircolors 2&amp;gt;/dev/null || dircolors -b)&amp;#34;
alias ls=&amp;#39;ls $LS_OPTIONS&amp;#39;
alias ll=&amp;#39;ls -l $LS_OPTIONS&amp;#39;
alias l=&amp;#39;ls -lA $LS_OPTIONS&amp;#39;
alias grep=&amp;#39;grep --color=auto&amp;#39;
alias fgrep=&amp;#39;fgrep --color=auto&amp;#39;
alias egrep=&amp;#39;egrep --color=auto&amp;#39;

# Fedora-style prompt
if [ -n &amp;#34;$PS1&amp;#34; ]; then
  if [ &amp;#34;$(id -u)&amp;#34; -eq 0 ]; then
    PS1=&amp;#39;[\033[01;31m]\h[\033[00m]:[\033[01;34m]\w[\033[00m]# &amp;#39;
  else
    PS1=&amp;#39;[\033[01;32m]\u@\h[\033[00m]:[\033[01;34m]\w[\033[00m]\$ &amp;#39;
  fi
fi

# Optional: Fedora-like LS_COLORS palette
if [ ! -f ~/.dircolors ]; then
  wget -q -O ~/.dircolors https://raw.githubusercontent.com/trapd00r/LS_COLORS/master/LS_COLORS
fi

# ==== End Fedora-style CLI ====
EOF

# Reload configuration
source ~/.bashrc

echo &amp;#34;Fedora color scheme applied. Run &amp;#39;source ~/.bashrc&amp;#39; if not already active.&amp;#34;
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;😚&lt;/p&gt;
&lt;div class=&#34;top-content&#34; style=&#34;text-align: center;&#34;&gt;
  &lt;a href=&#34;https://prasna.ca/contact&#34;&gt;[web]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.linkedin.com/company/prasna-it&#34;&gt;[in]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.facebook.com/prasnait&#34;&gt;[fb]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.instagram.com/prasna.ca&#34;&gt;[ig]&lt;/a&gt; ·
  &lt;a href=&#34;https://x.com/PrasnaIT&#34;&gt;[x]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.tiktok.com/@prasna.ca&#34;&gt;[tt]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.youtube.com/channel/UCbDEvFG_MxmAvLsTeG02S8Q&#34;&gt;[yt]&lt;/a&gt;
&lt;/div&gt;

&lt;div class=&#34;footnotes&#34; role=&#34;doc-endnotes&#34;&gt;
&lt;hr&gt;
&lt;ol&gt;
&lt;li id=&#34;fn:1&#34;&gt;
&lt;p&gt;Tested on Ubuntu 22.04.3 LTS and Debian 13.1.&amp;#160;&lt;a href=&#34;#fnref:1&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
</description>
    </item>
    
    
    
    <item>
      <title>Turn your Proxmox host into a fully functional Apple Time Machine backup server using Samba &#43; Avahi — compatible with all modern macOS versions</title>
      <link>https://sanjayregmi.com/posts/turn-your-proxmox-host-into-a-fully-functional-apple-time-machine-backup-server/</link>
      <pubDate>Fri, 07 Nov 2025 12:18:06 -0800</pubDate>
      
      <guid>https://sanjayregmi.com/posts/turn-your-proxmox-host-into-a-fully-functional-apple-time-machine-backup-server/</guid>
      <description>&lt;p&gt;The following is the steps to connect a USB external disk to proxmox host and enable Time machine. The instructions work for macOS 10.13 → 15.7.&lt;sup id=&#34;fnref:1&#34;&gt;&lt;a href=&#34;#fn:1&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;1&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;h4 id=&#34;1-connnect-your-usb-disk-and-mount-it&#34;&gt;1. Connnect your USB disk and mount it&lt;/h4&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;lsblk                     &lt;span class=&#34;c1&#34;&gt;# find your USB disk, e.g. /dev/sdb&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;fdisk /dev/sdb            &lt;span class=&#34;c1&#34;&gt;# create GPT + one partition (n → enter → enter → w)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;mkfs.ext4 /dev/sdb1
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;mkdir -p /mnt/usb-timemachine
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;blkid /dev/sdb1           &lt;span class=&#34;c1&#34;&gt;# copy UUID&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Edit &lt;code&gt;/etc/fstab&lt;/code&gt;:&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-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;nano /etc/fstab
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Add:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;UUID=&amp;lt;your-uuid&amp;gt; /mnt/usb-timemachine ext4 defaults 0 2
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Then:&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-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;mount -a
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h4 id=&#34;2-install-samba--avahi&#34;&gt;2. Install Samba + Avahi&lt;/h4&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;apt update
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;apt install samba avahi-daemon avahi-utils -y
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;systemctl &lt;span class=&#34;nb&#34;&gt;enable&lt;/span&gt; --now smbd nmbd avahi-daemon
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h4 id=&#34;3-create-time-machine-user&#34;&gt;3. Create Time Machine User&lt;/h4&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;useradd -m time-machine-user
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;passwd time-machine-user
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;smbpasswd -a time-machine-user
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;smbpasswd -e time-machine-user
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Prepare the directory:&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-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;mkdir -p /mnt/usb-timemachine/timemachine
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;chown -R time-machine-user:time-machine-user /mnt/usb-timemachine/timemachine
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;chmod -R &lt;span class=&#34;m&#34;&gt;770&lt;/span&gt; /mnt/usb-timemachine/timemachine
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h4 id=&#34;4-configure-samba&#34;&gt;4. Configure Samba&lt;/h4&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;nano /etc/samba/smb.conf
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Replace all contents with:&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-ini&#34; data-lang=&#34;ini&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;[global]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;   &lt;span class=&#34;na&#34;&gt;workgroup&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;WORKGROUP
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s&#34;&gt;   server string = Proxmox Time Capsule
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s&#34;&gt;   map to guest = Bad User
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s&#34;&gt;   disable spoolss = yes
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s&#34;&gt;   host msdfs = no
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s&#34;&gt;   server signing = mandatory
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s&#34;&gt;   smb encrypt = required
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s&#34;&gt;   min protocol = SMB2
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s&#34;&gt;   max protocol = SMB3
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s&#34;&gt;   server min protocol = SMB2_10
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s&#34;&gt;   ea support = yes
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s&#34;&gt;   vfs objects = catia fruit streams_xattr
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s&#34;&gt;   fruit:aapl = yes
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s&#34;&gt;   fruit:metadata = stream
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s&#34;&gt;   fruit:posix_rename = yes
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s&#34;&gt;   fruit:resource = file
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s&#34;&gt;   fruit:locking = none
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s&#34;&gt;   fruit:encoding = native
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s&#34;&gt;   fruit:zero_file_id = yes
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s&#34;&gt;   strict sync = no
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s&#34;&gt;   sync always = no
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s&#34;&gt;   spotlight = no&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;[TimeMachine]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;   &lt;span class=&#34;na&#34;&gt;path&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;/mnt/usb-timemachine/timemachine
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s&#34;&gt;   read only = no
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s&#34;&gt;   valid users = time-machine-user
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s&#34;&gt;   vfs objects = catia fruit streams_xattr
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s&#34;&gt;   fruit:time machine = yes
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s&#34;&gt;   fruit:time machine max size = 900G
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s&#34;&gt;   msdfs root = no&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Restart:&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-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;systemctl restart smbd nmbd
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h4 id=&#34;5-advertise-via-bonjour-avahi&#34;&gt;5. Advertise via Bonjour (Avahi)&lt;/h4&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;nano /etc/avahi/services/smb.service
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Paste:&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-xml&#34; data-lang=&#34;xml&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;cp&#34;&gt;&amp;lt;?xml version=&amp;#34;1.0&amp;#34; standalone=&amp;#39;no&amp;#39;?&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;cp&#34;&gt;&amp;lt;!DOCTYPE service-group SYSTEM &amp;#34;avahi-service.dtd&amp;#34;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nt&#34;&gt;&amp;lt;service-group&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nt&#34;&gt;&amp;lt;name&lt;/span&gt; &lt;span class=&#34;na&#34;&gt;replace-wildcards=&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;yes&amp;#34;&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;&amp;gt;&lt;/span&gt;%h Time Capsule&lt;span class=&#34;nt&#34;&gt;&amp;lt;/name&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nt&#34;&gt;&amp;lt;service&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nt&#34;&gt;&amp;lt;type&amp;gt;&lt;/span&gt;_smb._tcp&lt;span class=&#34;nt&#34;&gt;&amp;lt;/type&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nt&#34;&gt;&amp;lt;port&amp;gt;&lt;/span&gt;445&lt;span class=&#34;nt&#34;&gt;&amp;lt;/port&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nt&#34;&gt;&amp;lt;/service&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nt&#34;&gt;&amp;lt;service&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nt&#34;&gt;&amp;lt;type&amp;gt;&lt;/span&gt;_device-info._tcp&lt;span class=&#34;nt&#34;&gt;&amp;lt;/type&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nt&#34;&gt;&amp;lt;port&amp;gt;&lt;/span&gt;0&lt;span class=&#34;nt&#34;&gt;&amp;lt;/port&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nt&#34;&gt;&amp;lt;txt-record&amp;gt;&lt;/span&gt;model=TimeCapsule8,119&lt;span class=&#34;nt&#34;&gt;&amp;lt;/txt-record&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nt&#34;&gt;&amp;lt;/service&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nt&#34;&gt;&amp;lt;/service-group&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Restart Avahi:&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-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;systemctl restart avahi-daemon
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Verify broadcast:&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-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;avahi-browse -a &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; grep SMB
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Expected output:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;= eth0 IPv4 pve Time Capsule _smb._tcp local
&lt;/code&gt;&lt;/pre&gt;&lt;hr&gt;
&lt;h4 id=&#34;6-test-locally&#34;&gt;6. Test Locally&lt;/h4&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;smbclient -L localhost -U time-machine-user
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Expected:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;Sharename       Type
---------       ----
TimeMachine     Disk
&lt;/code&gt;&lt;/pre&gt;&lt;h4 id=&#34;7-connect-from-macos&#34;&gt;7. Connect from macOS&lt;/h4&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Finder → Go → Connect to Server&lt;/strong&gt;&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;smb://pve.local/TimeMachine
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;em&gt;(or use your Proxmox IP, e.g. &lt;code&gt;smb://192.168.1.8/TimeMachine&lt;/code&gt;)&lt;/em&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Login as &lt;strong&gt;time-machine-user&lt;/strong&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Open &lt;strong&gt;System Settings → General → Time Machine → Add Backup Disk&lt;/strong&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Select &lt;strong&gt;“pve Time Capsule”&lt;/strong&gt; and use the same credentials&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Time Machine will show &lt;strong&gt;“Preparing backup&amp;hellip;”&lt;/strong&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;hr&gt;
&lt;h4 id=&#34;8-verify-on-proxmox&#34;&gt;8. Verify on Proxmox&lt;/h4&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;ls /mnt/usb-timemachine/timemachine
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;You should see:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;&amp;lt;YourMacName&amp;gt;_&amp;lt;UUID&amp;gt;.sparsebundle
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Done!&lt;/p&gt;
&lt;p&gt;You now have a fully compatible, Proxmox-hosted Time Machine server that works across macOS 10.13 → 15.7, supports multiple Macs, uses SMB3 encryption, and broadcasts as a genuine Time Capsule.&lt;/p&gt;
&lt;p&gt;📛&lt;/p&gt;
&lt;div class=&#34;top-content&#34; style=&#34;text-align: center;&#34;&gt;
  &lt;a href=&#34;https://prasna.ca/contact&#34;&gt;[web]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.linkedin.com/company/prasna-it&#34;&gt;[in]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.facebook.com/prasnait&#34;&gt;[fb]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.instagram.com/prasna.ca&#34;&gt;[ig]&lt;/a&gt; ·
  &lt;a href=&#34;https://x.com/PrasnaIT&#34;&gt;[x]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.tiktok.com/@prasna.ca&#34;&gt;[tt]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.youtube.com/channel/UCbDEvFG_MxmAvLsTeG02S8Q&#34;&gt;[yt]&lt;/a&gt;
&lt;/div&gt;

&lt;div class=&#34;footnotes&#34; role=&#34;doc-endnotes&#34;&gt;
&lt;hr&gt;
&lt;ol&gt;
&lt;li id=&#34;fn:1&#34;&gt;
&lt;p&gt;Tested on Proxmox version &lt;strong&gt;Linux pve 6.14.8-2-pve #1 SMP PREEMPT_DYNAMIC PMX 6.14.8-2 (2025-07-22T10:04Z) x86_64 GNU/Linux&lt;/strong&gt;.&amp;#160;&lt;a href=&#34;#fnref:1&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
</description>
    </item>
    
    
    
    <item>
      <title>If You Are Constantly on SSH and Having to Run Long-Running Processes Then Use Tmux</title>
      <link>https://sanjayregmi.com/posts/if-you-are-constantly-on-ssh-and-having-to-run-long-running-processes-use-tmux/</link>
      <pubDate>Mon, 03 Nov 2025 21:14:57 -0800</pubDate>
      
      <guid>https://sanjayregmi.com/posts/if-you-are-constantly-on-ssh-and-having-to-run-long-running-processes-use-tmux/</guid>
      <description>&lt;p&gt;If you&amp;rsquo;re like me, always running ssh to connect to servers and having to run processes and wanting to know what you ran earlier in one combined session, run tmux. No backgrounding of commands, no using nohup, and even if the ssh session breaks, which most of the time it does if you&amp;rsquo;re running something that takes a long time, tmux is the best.&lt;/p&gt;
&lt;p&gt;Running tmux is easy, just install and run tmux. However, we&amp;rsquo;re going to set up tmux such that it runs immediately after ssh. Here are the steps for FreeBSD 14.3.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Edit &lt;code&gt;~/.cshrc&lt;/code&gt;, add the following lines at the bottom of the file:&lt;/li&gt;
&lt;/ul&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;# Auto-start tmux on login (SSH or console)
if (! $?TMUX) then
    if ( -x /usr/local/bin/tmux ) then
        tmux attach -t main &amp;gt;&amp;amp; /dev/null || tmux new -s main
    endif
endif
&lt;/code&gt;&lt;/pre&gt;&lt;ul&gt;
&lt;li&gt;Run a new ssh session and tmux should start automatically.&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id=&#34;note&#34;&gt;Note&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;To get back to the last session, do:&lt;/li&gt;
&lt;/ul&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;tmux ls
&lt;/code&gt;&lt;/pre&gt;&lt;ul&gt;
&lt;li&gt;If you didn&amp;rsquo;t name your tmux session, then the default command would be:&lt;/li&gt;
&lt;/ul&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;tmux attach -t 0
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;🍇&lt;/p&gt;
&lt;div class=&#34;top-content&#34; style=&#34;text-align: center;&#34;&gt;
  &lt;a href=&#34;https://prasna.ca/contact&#34;&gt;[web]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.linkedin.com/company/prasna-it&#34;&gt;[in]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.facebook.com/prasnait&#34;&gt;[fb]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.instagram.com/prasna.ca&#34;&gt;[ig]&lt;/a&gt; ·
  &lt;a href=&#34;https://x.com/PrasnaIT&#34;&gt;[x]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.tiktok.com/@prasna.ca&#34;&gt;[tt]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.youtube.com/channel/UCbDEvFG_MxmAvLsTeG02S8Q&#34;&gt;[yt]&lt;/a&gt;
&lt;/div&gt;

</description>
    </item>
    
    
    
    <item>
      <title>Combine Lots of Video Clips Into One Very Quickly</title>
      <link>https://sanjayregmi.com/posts/combine-lots-of-video-clips-into-one-very-quickly/</link>
      <pubDate>Wed, 29 Oct 2025 21:03:16 -0800</pubDate>
      
      <guid>https://sanjayregmi.com/posts/combine-lots-of-video-clips-into-one-very-quickly/</guid>
      <description>&lt;p&gt;Say you have 30 (or any large number) different clips in a folder that you just want to combine (concatenate) based on the timestamps. You &lt;em&gt;do not&lt;/em&gt; want to reencode them, just want to connect/combine them into one as if they were text files. The reason you do not want to re-encode them is that it&amp;rsquo;ll take a long time to process them and you might lose fidelity of the video if re-encode was not done correctly. The following instructions will just concatenate the files and produce a single file as an output in no time even on old hardware. (Ran this in FreeBSD 14.3 but you should be able to adapt it to a linux box or a  Mac with homebrew).&lt;/p&gt;
&lt;h4 id=&#34;get-a-list-of-files-in-the-order-you-want&#34;&gt;Get a list of files in the order you want:&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;ls -1tr &amp;gt; files.txt&lt;/code&gt;. This saves the files we need in the order we need. You can edit this file using your editor if needed.&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id=&#34;create-the-concatenation-list&#34;&gt;Create the concatenation list&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;Run this in &lt;code&gt;/bin/sh&lt;/code&gt;: &lt;code&gt;for f in $(ls -1tr); do echo &amp;quot;file &#39;$f&#39;&amp;quot; &amp;gt;&amp;gt; concat.txt; done&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id=&#34;run-ffmpeg-to-assemble-into-a-single-file&#34;&gt;Run ffmpeg to assemble into a single file&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;ffmpeg -f concat -i concat.txt -c copy final-single.mp4&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id=&#34;final-check&#34;&gt;Final check&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;Now run it and upload it to your Immich server!&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;💝&lt;/p&gt;
&lt;div class=&#34;top-content&#34; style=&#34;text-align: center;&#34;&gt;
  &lt;a href=&#34;https://prasna.ca/contact&#34;&gt;[web]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.linkedin.com/company/prasna-it&#34;&gt;[in]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.facebook.com/prasnait&#34;&gt;[fb]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.instagram.com/prasna.ca&#34;&gt;[ig]&lt;/a&gt; ·
  &lt;a href=&#34;https://x.com/PrasnaIT&#34;&gt;[x]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.tiktok.com/@prasna.ca&#34;&gt;[tt]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.youtube.com/channel/UCbDEvFG_MxmAvLsTeG02S8Q&#34;&gt;[yt]&lt;/a&gt;
&lt;/div&gt;

</description>
    </item>
    
    
    
    <item>
      <title>Set Up Your Own Photos Server Instead of Google Photos or Something Else by Using Immich and Tailscale</title>
      <link>https://sanjayregmi.com/posts/setup-your-own-photos-server/</link>
      <pubDate>Mon, 20 Oct 2025 20:40:22 -0800</pubDate>
      
      <guid>https://sanjayregmi.com/posts/setup-your-own-photos-server/</guid>
      <description>&lt;p&gt;&lt;small&gt;Last updated: 03 Jan 2026&lt;/small&gt;&lt;/p&gt;
&lt;p&gt;The solution is a free software called Immich &lt;a href=&#34;https://immich.app&#34;&gt;https://immich.app&lt;/a&gt; and you can run it at your home (or in a rented server somewhere) on an old machine with some USB drives or set it up on fancy stuff with RAID etc.&lt;/p&gt;
&lt;p&gt;There are four parts to it:&lt;/p&gt;
&lt;h4 id=&#34;setup-immich-server&#34;&gt;Setup Immich Server&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;Go watch the awesome video that Tailscale folks have produced: &lt;a href=&#34;https://www.youtube.com/watch?v=guHoZ68N3XM&#34;&gt;https://www.youtube.com/watch?v=guHoZ68N3XM&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id=&#34;setup-immich-server-url-with-tailscale&#34;&gt;Setup Immich Server URL with Tailscale&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;This allows you to access your immich server with a URL that is only accessible to you as it using tailscale VPN.&lt;/li&gt;
&lt;li&gt;Tailscale to the rescue again. Watch the same video as above.&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id=&#34;upload-your-media-for-a-large-amount&#34;&gt;Upload your media (for a large amount)&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;Download and install Immich-go, which allows you to upload large amounts of photos and videos to your Immich server with either your own local media or stuff you downloaded from Google Takeout.&lt;/li&gt;
&lt;li&gt;Download and install for your architecture: &lt;a href=&#34;https://github.com/simulot/immich-go/releases/latest&#34;&gt;https://github.com/simulot/immich-go/releases/latest&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Basic commands - to upload from Google Takeout (download as zip): &lt;code&gt;./immich-go upload from-google-photos --server=https://your-immich-server-url --api-key=get-it-from-immich-portal /location-of-your-google-takeout-files&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Basic commands - to upload from a folder in your system: &lt;code&gt;./immich-go upload from-folder --server=https://your-immich-server-url --api-key=get-it-from-immich-portal /path-to-photos-to-upload&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;For very large files and slow networks, you might want to keep the session longer so the files actually get uploaded. The switch to add to the above is: &lt;code&gt;--client-timeout=8h&lt;/code&gt;. Change the 8h (eight hours) to whatever suits you.&lt;/li&gt;
&lt;li&gt;If you want to upload as another user (say a family member wants to upload ttheir google takeout), you can login as them and under settings, generate their own API key that you can use in the above commands so the bulk uploads go to their accounts.&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id=&#34;update-your-immich-server-installed-via-docker-container&#34;&gt;Update your Immich server (installed via docker container)&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;SSH to your server&lt;/li&gt;
&lt;li&gt;Find the the path to immich installation, say &lt;/code&gt;/appdata/immich/&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;run these commands in sequence to stop the docker container.&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;docker compose stop
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;docker compose pull
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;docker compose up -d
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;Check using app or login to immich and see if the version information is correct.&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id=&#34;set-up-backup-jobs-to-at-least-another-disk-ideally-three-copies&#34;&gt;Set up backup jobs to at least another disk (ideally three copies)&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;Of course, back up your main data folder. Use rsync or if in a VM, you&amp;rsquo;ve got better tools.&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id=&#34;enjoy&#34;&gt;Enjoy!&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;Download the app to your phone, set up autobackups, tinker around&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;🐬&lt;/p&gt;
&lt;div class=&#34;top-content&#34; style=&#34;text-align: center;&#34;&gt;
  &lt;a href=&#34;https://prasna.ca/contact&#34;&gt;[web]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.linkedin.com/company/prasna-it&#34;&gt;[in]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.facebook.com/prasnait&#34;&gt;[fb]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.instagram.com/prasna.ca&#34;&gt;[ig]&lt;/a&gt; ·
  &lt;a href=&#34;https://x.com/PrasnaIT&#34;&gt;[x]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.tiktok.com/@prasna.ca&#34;&gt;[tt]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.youtube.com/channel/UCbDEvFG_MxmAvLsTeG02S8Q&#34;&gt;[yt]&lt;/a&gt;
&lt;/div&gt;

</description>
    </item>
    
    
    
    <item>
      <title>Finally You Can Install Latest Versions of Mac OS on Old Hardware</title>
      <link>https://sanjayregmi.com/posts/finally-you-can-install-latest-versions-of-mac-os-on-old-hardware/</link>
      <pubDate>Mon, 13 Oct 2025 19:00:00 -0700</pubDate>
      
      <guid>https://sanjayregmi.com/posts/finally-you-can-install-latest-versions-of-mac-os-on-old-hardware/</guid>
      <description>&lt;p&gt;I keep a bunch of old hardware. The oldest one is a Toshiba Dynabook SS 2000 DS80P (circa 2001). But I digress. I also have a 2015 Mac stuck at Monterey. I&amp;rsquo;m always trying to see if my old machines can be used in any way so they&amp;rsquo;re relevant still today. While researching recently, I came across soemthing called Opencore Legacy Patcher (OLP) that allows you to install latest Mac OSes on old computers! I was jubiliant.&lt;/p&gt;
&lt;p&gt;I tried on a Macbook 2011  (Sequoia) and it stayed on for over two hours (Poor thing has &amp;lsquo;only&amp;rsquo; 2GB memmory). So I skippped. But on the Macbook 2015, it worked! I ended up installing Sequoia. The instructions are very simple, just head over to &lt;a href=&#34;https://github.com/dortania/OpenCore-Legacy-Patcher&#34;&gt;https://github.com/dortania/OpenCore-Legacy-Patcher&lt;/a&gt; and read the getting stated guide - &lt;a href=&#34;https://dortania.github.io/OpenCore-Legacy-Patcher/&#34;&gt;https://dortania.github.io/OpenCore-Legacy-Patcher/&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;The biggest thing about upgrading is getting a more secure Operating System or one that is patched continuously.&lt;/p&gt;
&lt;p&gt;After the upgrade, Macbook is still god, it&amp;rsquo;s not sluggish and works like a charm. If you have an old machine, give it a shot.&lt;/p&gt;
&lt;p&gt;I did the try to install OS 26 which did install but in the login screen, the trackpad wouldn&amp;rsquo;t work and the keyboard wouldn&amp;rsquo;t either. Perhaps it&amp;rsquo;s a bug. So had to revert back to Sequoia.&lt;/p&gt;
&lt;p&gt;If you want to try it out, do clone your mac disk before, instructions here: &lt;a href=&#34;https://sanjayregmi.com/posts/image-and-restore-macs-using-clonezilla/&#34;&gt;https://sanjayregmi.com/posts/image-and-restore-macs-using-clonezilla/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;:contentment:&lt;/p&gt;
&lt;div class=&#34;top-content&#34; style=&#34;text-align: center;&#34;&gt;
  &lt;a href=&#34;https://prasna.ca/contact&#34;&gt;[web]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.linkedin.com/company/prasna-it&#34;&gt;[in]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.facebook.com/prasnait&#34;&gt;[fb]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.instagram.com/prasna.ca&#34;&gt;[ig]&lt;/a&gt; ·
  &lt;a href=&#34;https://x.com/PrasnaIT&#34;&gt;[x]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.tiktok.com/@prasna.ca&#34;&gt;[tt]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.youtube.com/channel/UCbDEvFG_MxmAvLsTeG02S8Q&#34;&gt;[yt]&lt;/a&gt;
&lt;/div&gt;

</description>
    </item>
    
    
    
    <item>
      <title>How to do disk cloning when Clonezilla doesn&#39;t list the external source disk</title>
      <link>https://sanjayregmi.com/posts/how-to-do-disk-cloning-when-clonezilla-does-not-list-the-external-source-disk/</link>
      <pubDate>Tue, 16 Sep 2025 12:32:42 -0700</pubDate>
      
      <guid>https://sanjayregmi.com/posts/how-to-do-disk-cloning-when-clonezilla-does-not-list-the-external-source-disk/</guid>
      <description>&lt;p&gt;I wanted to clone an external SSD at 256GB (source) with internal NVME 512GB (destination) using clonezilla. (It had freebsd in it).  External SSD was connected via usb-c. The machine was a Dell XPS laptop.&lt;sup id=&#34;fnref:1&#34;&gt;&lt;a href=&#34;#fn:1&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;1&lt;/a&gt;&lt;/sup&gt; Each time I ran clonezilla, it wouldn&amp;rsquo;t show me the external disk. However, lsblk showed it and to make matters worse, if I chose the image to disk option, the external disk would show! I even tried with the latest Clonezilla live cd, &amp;ldquo;alternative stable - 20250620-plucky&amp;rdquo; and it had the same issue.&lt;/p&gt;
&lt;p&gt;So at the end, I just did ran a DD command something like:&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-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo dd &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;/dev/source &lt;span class=&#34;nv&#34;&gt;of&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;/dev/dest &lt;span class=&#34;nv&#34;&gt;bs&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;64M &lt;span class=&#34;nv&#34;&gt;status&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;progress &lt;span class=&#34;nv&#34;&gt;oflag&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;direct
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;which in fact worked, even though Clonezilla was refusing to show the source disk.&lt;/p&gt;
&lt;p&gt;Of course you need to fix the partitions (extend them) later becuase the source disk is smaller than the destination but the cloning itself worked without any hiccups.&lt;/p&gt;
&lt;p&gt;🐎&lt;/p&gt;
&lt;div class=&#34;top-content&#34; style=&#34;text-align: center;&#34;&gt;
  &lt;a href=&#34;https://prasna.ca/contact&#34;&gt;[web]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.linkedin.com/company/prasna-it&#34;&gt;[in]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.facebook.com/prasnait&#34;&gt;[fb]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.instagram.com/prasna.ca&#34;&gt;[ig]&lt;/a&gt; ·
  &lt;a href=&#34;https://x.com/PrasnaIT&#34;&gt;[x]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.tiktok.com/@prasna.ca&#34;&gt;[tt]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.youtube.com/channel/UCbDEvFG_MxmAvLsTeG02S8Q&#34;&gt;[yt]&lt;/a&gt;
&lt;/div&gt;

&lt;div class=&#34;footnotes&#34; role=&#34;doc-endnotes&#34;&gt;
&lt;hr&gt;
&lt;ol&gt;
&lt;li id=&#34;fn:1&#34;&gt;
&lt;p&gt;Tested using Clonezilla version &amp;ldquo;alternative stable - 20250620-plucky&amp;rdquo; with and external SSD disk containing FreeBSD 14.3 with zfs to an NVME drive in a Dell XPS 15.&amp;#160;&lt;a href=&#34;#fnref:1&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
</description>
    </item>
    
    
    
    <item>
      <title>Find DMARC DKIM SPF Nameservers With One Script</title>
      <link>https://sanjayregmi.com/posts/find-dmarc-dkim-spf-nameservers-with-one-script/</link>
      <pubDate>Thu, 28 Aug 2025 16:33:52 -0700</pubDate>
      
      <guid>https://sanjayregmi.com/posts/find-dmarc-dkim-spf-nameservers-with-one-script/</guid>
      <description>&lt;p&gt;If you are setting up Microsoft Office or Google Workspace, you&amp;rsquo;re constantly having to check DMARC, DKIM and SPF values and then check if the edited values have propagated. Here&amp;rsquo;s a script that does just that. It even saves main zone records in a new folder with a symlink of the latest output. All output is saved.&lt;/p&gt;
&lt;p&gt;This script was developed with a large language model.&lt;/p&gt;
&lt;h4 id=&#34;features&#34;&gt;Features&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;Displays DKIM, SPF, DMARC and nameserver values.&lt;/li&gt;
&lt;li&gt;Polls against Cloudflare and Google servers.&lt;/li&gt;
&lt;li&gt;Saves a little bit more output to a folder with the domain name.&lt;/li&gt;
&lt;li&gt;Symlnks the latest file with &amp;rsquo;latest&amp;rsquo; in the name.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This script is tested on WSL running Ubuntu 24. Please run it at your own discretion.&lt;/p&gt;
&lt;h4 id=&#34;how-to-run&#34;&gt;How to run&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;Make your script executable. (chmod +x scriptname)&lt;/li&gt;
&lt;li&gt;Enter like this on the terminal: &lt;/code&gt; ./dns-check.sh example.com &lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;cp&#34;&gt;#!/usr/bin/env bash
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;cp&#34;&gt;&lt;/span&gt;&lt;span class=&#34;c1&#34;&gt;# dns-check.sh (summary + zone snapshot only)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# Usage:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;#   ./dns-check.sh [-r 1.1.1.1] domain.com&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# Env:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;#   RESOLVER=1.1.1.1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;#   RESOLVERS=1.1.1.1,8.8.8.8,9.9.9.9&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;set&lt;/span&gt; -euo pipefail
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# ----- args -----&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;resolver_cli&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;[[&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;:-&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;==&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;-r&amp;#34;&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;||&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;:-&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;==&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;--resolver&amp;#34;&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;]]&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;then&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nv&#34;&gt;resolver_cli&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;2&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;:-&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;shift&lt;/span&gt; &lt;span class=&#34;m&#34;&gt;2&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;||&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;true&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;fi&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;domain&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;:-&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;[[&lt;/span&gt; -z &lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;domain&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;]]&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;then&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nb&#34;&gt;echo&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;Usage: &lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$0&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt; [-r 1.1.1.1] domain.com&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;exit&lt;/span&gt; &lt;span class=&#34;m&#34;&gt;1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;fi&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# ----- resolvers -----&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;[[&lt;/span&gt; -n &lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;resolver_cli&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;]]&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;then&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nv&#34;&gt;resolvers&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;resolver_cli&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;elif&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;[[&lt;/span&gt; -n &lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;RESOLVER&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;:-&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;]]&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;then&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nv&#34;&gt;resolvers&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;RESOLVER&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;elif&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;[[&lt;/span&gt; -n &lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;RESOLVERS&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;:-&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;]]&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;then&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nv&#34;&gt;IFS&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;,&amp;#39;&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;read&lt;/span&gt; -r -a resolvers &lt;span class=&#34;o&#34;&gt;&amp;lt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$RESOLVERS&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;else&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nv&#34;&gt;resolvers&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=(&lt;/span&gt;1.1.1.1 8.8.8.8 9.9.9.9&lt;span class=&#34;o&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;fi&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# ----- deps -----&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; ! &lt;span class=&#34;nb&#34;&gt;command&lt;/span&gt; -v dig &amp;gt;/dev/null 2&amp;gt;&lt;span class=&#34;p&#34;&gt;&amp;amp;&lt;/span&gt;1&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;then&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nb&#34;&gt;echo&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;Installing dnsutils...&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; sudo apt update -y &lt;span class=&#34;o&#34;&gt;&amp;amp;&amp;amp;&lt;/span&gt; sudo apt install -y dnsutils
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;fi&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# ----- dig helpers (caching + single active resolver) -----&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;dig_quick_opts&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;+short +time=1 +tries=1&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;dig_dump_opts&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;+noall +answer +time=1 +tries=1&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;ACTIVE_RESOLVER&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;choose_resolver&lt;span class=&#34;o&#34;&gt;()&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;k&#34;&gt;for&lt;/span&gt; r in &lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;resolvers&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[@]&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;do&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; dig &lt;span class=&#34;si&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;dig_quick_opts&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt; @&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$r&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt; NS . &amp;gt;/dev/null 2&amp;gt;&lt;span class=&#34;p&#34;&gt;&amp;amp;&lt;/span&gt;1&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;then&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &lt;span class=&#34;nv&#34;&gt;ACTIVE_RESOLVER&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$r&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;fi&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;k&#34;&gt;done&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nv&#34;&gt;ACTIVE_RESOLVER&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;resolvers&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[0]&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;o&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;choose_resolver
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;declare&lt;/span&gt; -A CACHE_Q   &lt;span class=&#34;c1&#34;&gt;# key &amp;#34;TYPE|NAME&amp;#34; -&amp;gt; +short text&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;declare&lt;/span&gt; -A CACHE_F   &lt;span class=&#34;c1&#34;&gt;# key &amp;#34;TYPE|NAME&amp;#34; -&amp;gt; +answer text&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;_q_raw&lt;span class=&#34;o&#34;&gt;()&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;{&lt;/span&gt;  &lt;span class=&#34;c1&#34;&gt;# raw +short&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nb&#34;&gt;local&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;rr&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;name&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;2&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;o&#34;&gt;[[&lt;/span&gt; -z &lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$rr&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;||&lt;/span&gt; -z &lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$name&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;]]&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;{&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;printf&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; 0&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  dig &lt;span class=&#34;si&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;dig_quick_opts&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt; @&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$ACTIVE_RESOLVER&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$rr&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$name&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt; 2&amp;gt;/dev/null &lt;span class=&#34;o&#34;&gt;||&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;true&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;o&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;_f_raw&lt;span class=&#34;o&#34;&gt;()&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;{&lt;/span&gt;  &lt;span class=&#34;c1&#34;&gt;# raw +answer&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nb&#34;&gt;local&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;rr&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;name&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;2&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;o&#34;&gt;[[&lt;/span&gt; -z &lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$rr&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;||&lt;/span&gt; -z &lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$name&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;]]&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;{&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;printf&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; 0&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  dig &lt;span class=&#34;si&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;dig_dump_opts&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt; @&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$ACTIVE_RESOLVER&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$rr&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$name&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt; 2&amp;gt;/dev/null &lt;span class=&#34;o&#34;&gt;||&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;true&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;o&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;q&lt;span class=&#34;o&#34;&gt;()&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;{&lt;/span&gt;  &lt;span class=&#34;c1&#34;&gt;# cached +short&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nb&#34;&gt;local&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;rr&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;name&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;2&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt; k
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;o&#34;&gt;[[&lt;/span&gt; -z &lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$rr&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;||&lt;/span&gt; -z &lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$name&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;]]&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;{&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;printf&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; 0&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nv&#34;&gt;k&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;rr&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;|&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;name&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;[[&lt;/span&gt; -z &lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;CACHE_Q&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$k&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]+x&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;]]&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;then&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    CACHE_Q&lt;span class=&#34;o&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$k&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;]=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;$(&lt;/span&gt;_q_raw &lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$rr&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$name&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;k&#34;&gt;fi&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nb&#34;&gt;printf&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;%s&amp;#34;&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;CACHE_Q&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$k&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;o&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;f&lt;span class=&#34;o&#34;&gt;()&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;{&lt;/span&gt;  &lt;span class=&#34;c1&#34;&gt;# cached +answer&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nb&#34;&gt;local&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;rr&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;name&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;2&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt; k
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;o&#34;&gt;[[&lt;/span&gt; -z &lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$rr&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;||&lt;/span&gt; -z &lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$name&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;]]&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;{&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;printf&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; 0&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nv&#34;&gt;k&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;rr&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;|&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;name&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;[[&lt;/span&gt; -z &lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;CACHE_F&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$k&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]+x&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;]]&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;then&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    CACHE_F&lt;span class=&#34;o&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$k&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;]=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;$(&lt;/span&gt;_f_raw &lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$rr&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$name&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;k&#34;&gt;fi&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nb&#34;&gt;printf&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;%s&amp;#34;&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;CACHE_F&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$k&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;o&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# ----- TXT helpers -----&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;get_txt_raw_lines&lt;span class=&#34;o&#34;&gt;()&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;{&lt;/span&gt; q TXT &lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$1&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;||&lt;/span&gt; true&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;get_txt_records&lt;span class=&#34;o&#34;&gt;()&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nb&#34;&gt;local&lt;/span&gt; raw line
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nv&#34;&gt;raw&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;$(&lt;/span&gt;get_txt_raw_lines &lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$1&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;o&#34;&gt;[[&lt;/span&gt; -z &lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$raw&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;]]&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;m&#34;&gt;0&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;k&#34;&gt;while&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;IFS&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;read&lt;/span&gt; -r line&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;do&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nb&#34;&gt;printf&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;%s\n&amp;#34;&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$line&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; sed &lt;span class=&#34;s1&#34;&gt;&amp;#39;s/^&amp;#34;//; s/&amp;#34;$//&amp;#39;&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; tr -d &lt;span class=&#34;s1&#34;&gt;&amp;#39;&amp;#34;&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;k&#34;&gt;done&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;lt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$raw&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;o&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;wrap_txt&lt;span class=&#34;o&#34;&gt;()&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;{&lt;/span&gt; fold -s -w &lt;span class=&#34;m&#34;&gt;70&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; sed &lt;span class=&#34;s1&#34;&gt;&amp;#39;s/^/    /&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;ttl_of&lt;span class=&#34;o&#34;&gt;()&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;{&lt;/span&gt;  &lt;span class=&#34;c1&#34;&gt;# parse TTL from cached full answer&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nb&#34;&gt;local&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;rr&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;name&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;2&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt; ttl
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;o&#34;&gt;[[&lt;/span&gt; -z &lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$rr&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;||&lt;/span&gt; -z &lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$name&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;]]&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;{&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;printf&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;Auto&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; 0&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nv&#34;&gt;ttl&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;$(&lt;/span&gt;f &lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$rr&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$name&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; awk &lt;span class=&#34;s1&#34;&gt;&amp;#39;NR==1{print $2}&amp;#39;&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;o&#34;&gt;[[&lt;/span&gt; -n &lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$ttl&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;]]&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;printf&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;%s&amp;#34;&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$ttl&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;||&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;printf&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;Auto&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;o&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# ----- paths -----&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;mkdir -p &lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$domain&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;names&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;ts&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;$(&lt;/span&gt;date +&lt;span class=&#34;s2&#34;&gt;&amp;#34;%Y-%m-%d_%H-%M-%S&amp;#34;&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;zonesfile&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$domain&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;domain&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;_&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;ts&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;.zones&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;zones_latest&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$domain&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;/latest.zones&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# ====== HUMAN READABLE SUMMARY ======&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;echo&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;Checking DNS records for: &lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$domain&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;echo&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;Resolver: &lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$ACTIVE_RESOLVER&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt; (chosen from: &lt;/span&gt;&lt;span class=&#34;si&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;resolvers&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[*]&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;)&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;echo&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;--------------------------------------------------&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# SPF&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;echo&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;[SPF]&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;mapfile -t spf_list &amp;lt; &amp;lt;&lt;span class=&#34;o&#34;&gt;(&lt;/span&gt;get_txt_records &lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$domain&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; awk &lt;span class=&#34;s1&#34;&gt;&amp;#39;BEGIN{IGNORECASE=1} /^v=spf1/ {print}&amp;#39;&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;((&lt;/span&gt; &lt;span class=&#34;si&#34;&gt;${#&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;spf_list&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[@]&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;==&lt;/span&gt; &lt;span class=&#34;m&#34;&gt;0&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;))&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;then&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;echo&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;No SPF record found&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;elif&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;((&lt;/span&gt; &lt;span class=&#34;si&#34;&gt;${#&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;spf_list&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[@]&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;==&lt;/span&gt; &lt;span class=&#34;m&#34;&gt;1&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;))&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;then&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;echo&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;spf_list&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[0]&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;else&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nb&#34;&gt;echo&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;⚠️ Multiple SPF records found (&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;${#&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;spf_list&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[@]&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;). Merge into one:&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;k&#34;&gt;for&lt;/span&gt; i in &lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;!spf_list[@]&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;do&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;printf&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;  [%d] %s\n&amp;#34;&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;$((&lt;/span&gt;i+1&lt;span class=&#34;k&#34;&gt;))&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;spf_list&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$i&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;done&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;fi&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;echo&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# DMARC&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;echo&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;[DMARC]&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;mapfile -t dmarc_list &amp;lt; &amp;lt;&lt;span class=&#34;o&#34;&gt;(&lt;/span&gt;get_txt_records &lt;span class=&#34;s2&#34;&gt;&amp;#34;_dmarc.&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$domain&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; awk &lt;span class=&#34;s1&#34;&gt;&amp;#39;BEGIN{IGNORECASE=1} /^v=DMARC1/ {print}&amp;#39;&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;((&lt;/span&gt; &lt;span class=&#34;si&#34;&gt;${#&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;dmarc_list&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[@]&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;==&lt;/span&gt; &lt;span class=&#34;m&#34;&gt;0&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;))&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;then&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;echo&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;No DMARC record found&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;elif&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;((&lt;/span&gt; &lt;span class=&#34;si&#34;&gt;${#&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;dmarc_list&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[@]&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;==&lt;/span&gt; &lt;span class=&#34;m&#34;&gt;1&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;))&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;then&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;echo&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;dmarc_list&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[0]&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;else&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nb&#34;&gt;echo&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;⚠️ Multiple DMARC records found (&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;${#&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;dmarc_list&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[@]&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;). Merge into a single record.&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;k&#34;&gt;for&lt;/span&gt; i in &lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;!dmarc_list[@]&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;do&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;printf&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;  [%d] %s\n&amp;#34;&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;$((&lt;/span&gt;i+1&lt;span class=&#34;k&#34;&gt;))&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;dmarc_list&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$i&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;done&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;fi&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;echo&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# MX&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;echo&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;[MX]&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;mx&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;$(&lt;/span&gt;q MX &lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$domain&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;||&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;true&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;o&#34;&gt;[[&lt;/span&gt; -n &lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$mx&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;]]&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;echo&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$mx&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; sort -n -k1 &lt;span class=&#34;o&#34;&gt;||&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;echo&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;No MX records found&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;echo&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# NS&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;echo&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;[Nameservers]&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;ns&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;$(&lt;/span&gt;q NS &lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$domain&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;||&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;true&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;o&#34;&gt;[[&lt;/span&gt; -n &lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$ns&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;]]&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;echo&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$ns&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; sort &lt;span class=&#34;o&#34;&gt;||&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;echo&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;No NS records found&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;echo&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# DKIM&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;echo&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;[DKIM]&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;policy_recs&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;$(&lt;/span&gt;get_txt_records &lt;span class=&#34;s2&#34;&gt;&amp;#34;_domainkey.&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$domain&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;||&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;true&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;[[&lt;/span&gt; -n &lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$policy_recs&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;]]&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;then&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nb&#34;&gt;echo&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;Policy (_domainkey.&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$domain&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;):&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;k&#34;&gt;while&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;IFS&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;read&lt;/span&gt; -r pline&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;do&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;echo&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;  &lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$pline&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;done&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;lt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$policy_recs&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nb&#34;&gt;echo&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;fi&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;selectors&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=(&lt;/span&gt;s1 s2 selector1 selector2 default google mail k1 k2 mx dkim&lt;span class=&#34;o&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;found_txt&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;0&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;found_cname&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;0&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;any_found&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;false&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;dkim_found_names&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;for&lt;/span&gt; sel in &lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;selectors&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[@]&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;do&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nv&#34;&gt;rec&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$sel&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;._domainkey.&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$domain&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nv&#34;&gt;txt_lines&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;$(&lt;/span&gt;get_txt_records &lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$rec&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;||&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;true&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nv&#34;&gt;cname&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;$(&lt;/span&gt;q CNAME &lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$rec&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;||&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;true&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;[[&lt;/span&gt; -n &lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$cname&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;]]&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;then&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nv&#34;&gt;any_found&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;true&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;((&lt;/span&gt;found_cname++&lt;span class=&#34;o&#34;&gt;))&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;||&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;true&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nb&#34;&gt;echo&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;Selector: &lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$sel&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;echo&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;  Record: &lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$rec&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;echo&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;  CNAME → &lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$cname&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;echo&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nv&#34;&gt;dkim_found_names&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;+=(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$rec&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;k&#34;&gt;fi&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;[[&lt;/span&gt; -n &lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$txt_lines&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;]]&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;then&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;while&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;IFS&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;read&lt;/span&gt; -r tline&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;do&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;echo&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$tline&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; grep -qi &lt;span class=&#34;s1&#34;&gt;&amp;#39;^v=DKIM1&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;then&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;nv&#34;&gt;any_found&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;true&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;((&lt;/span&gt;found_txt++&lt;span class=&#34;o&#34;&gt;))&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;||&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;true&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;nb&#34;&gt;echo&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;Selector: &lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$sel&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;echo&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;  Record: &lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$rec&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;echo&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;  TXT →&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;nb&#34;&gt;echo&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$tline&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; wrap_txt&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;echo&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;nv&#34;&gt;dkim_found_names&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;+=(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$rec&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &lt;span class=&#34;k&#34;&gt;fi&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;done&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;lt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$txt_lines&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;k&#34;&gt;fi&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;done&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;o&#34;&gt;[[&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$any_found&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt; !&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;true&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;]]&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;echo&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;No DKIM records found with common selectors.&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;echo&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;Summary: DKIM TXT=&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$found_txt&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;, CNAME=&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$found_cname&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;echo&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;--------------------------------------------------&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# ===== ZONE SNAPSHOT (full answers; uses cached f()) =====&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;o&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nb&#34;&gt;echo&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;; Zone snapshot for &lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$domain&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nb&#34;&gt;echo&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;; Generated: &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;$(&lt;/span&gt;date&lt;span class=&#34;k&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt; | Resolver: &lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$ACTIVE_RESOLVER&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nb&#34;&gt;echo&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nv&#34;&gt;types&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=(&lt;/span&gt;SOA NS A AAAA CNAME MX TXT SRV CAA DS DNSKEY&lt;span class=&#34;o&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nv&#34;&gt;names&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$domain&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;_dmarc.&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$domain&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;_domainkey.&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$domain&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;www.&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$domain&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt; &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;se&#34;&gt;&lt;/span&gt;         &lt;span class=&#34;s2&#34;&gt;&amp;#34;autodiscover.&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$domain&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;enterpriseenrollment.&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$domain&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;enterpriseregistration.&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$domain&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt; &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;se&#34;&gt;&lt;/span&gt;         &lt;span class=&#34;s2&#34;&gt;&amp;#34;lyncdiscover.&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$domain&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;sip.&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$domain&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;_sip._tls.&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$domain&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;_sipfederationtls._tcp.&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$domain&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt; &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;se&#34;&gt;&lt;/span&gt;         &lt;span class=&#34;s2&#34;&gt;&amp;#34;s1._domainkey.&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$domain&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;s2._domainkey.&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$domain&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;selector1._domainkey.&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$domain&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;selector2._domainkey.&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$domain&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt; &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;se&#34;&gt;&lt;/span&gt;         &lt;span class=&#34;s2&#34;&gt;&amp;#34;apple-domain-verification.&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$domain&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;[[&lt;/span&gt; -f &lt;span class=&#34;s2&#34;&gt;&amp;#34;names/&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$domain&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;.txt&amp;#34;&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;]]&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;then&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;while&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;IFS&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;read&lt;/span&gt; -r lbl&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;do&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &lt;span class=&#34;o&#34;&gt;[[&lt;/span&gt; -z &lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$lbl&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;||&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$lbl&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;~ ^# &lt;span class=&#34;o&#34;&gt;]]&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;continue&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &lt;span class=&#34;nv&#34;&gt;names&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;+=(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$lbl&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$domain&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;done&lt;/span&gt; &amp;lt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;names/&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$domain&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;.txt&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;k&#34;&gt;fi&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;((&lt;/span&gt; &lt;span class=&#34;si&#34;&gt;${#&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;dkim_found_names&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[@]&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;))&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;then&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;names&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;+=(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;dkim_found_names&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[@]&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;fi&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  readarray -t names &amp;lt; &amp;lt;&lt;span class=&#34;o&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;printf&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;%s\n&amp;#34;&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;names&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[@]&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; awk &lt;span class=&#34;s1&#34;&gt;&amp;#39;!seen[$0]++&amp;#39;&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;k&#34;&gt;for&lt;/span&gt; n in &lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;names&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[@]&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;do&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nb&#34;&gt;echo&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;;; ===== &lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$n&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt; =====&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;for&lt;/span&gt; rr in &lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;types&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[@]&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;do&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &lt;span class=&#34;nv&#34;&gt;ans&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;$(&lt;/span&gt;f &lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$rr&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$n&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;||&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;true&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &lt;span class=&#34;o&#34;&gt;[[&lt;/span&gt; -n &lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$ans&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;]]&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;{&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;echo&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;;; -- &lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$rr&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;echo&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$ans&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;done&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nb&#34;&gt;echo&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;k&#34;&gt;done&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;o&#34;&gt;}&lt;/span&gt; &amp;gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$zonesfile&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# latest pointer for zones&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; ln -sfn &lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;$(&lt;/span&gt;basename &lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$zonesfile&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$zones_latest&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt; 2&amp;gt;/dev/null&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;then&lt;/span&gt; :&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;else&lt;/span&gt; cp -f &lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$zonesfile&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$zones_latest&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;fi&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;echo&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;Zone snapshot written to: &lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$zonesfile&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;echo&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;Updated latest → &lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$zones_latest&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&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;div class=&#34;top-content&#34; style=&#34;text-align: center;&#34;&gt;
  &lt;a href=&#34;https://prasna.ca/contact&#34;&gt;[web]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.linkedin.com/company/prasna-it&#34;&gt;[in]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.facebook.com/prasnait&#34;&gt;[fb]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.instagram.com/prasna.ca&#34;&gt;[ig]&lt;/a&gt; ·
  &lt;a href=&#34;https://x.com/PrasnaIT&#34;&gt;[x]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.tiktok.com/@prasna.ca&#34;&gt;[tt]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.youtube.com/channel/UCbDEvFG_MxmAvLsTeG02S8Q&#34;&gt;[yt]&lt;/a&gt;
&lt;/div&gt;

</description>
    </item>
    
    
    
    <item>
      <title>Image and Restore Macs Using Clonezilla</title>
      <link>https://sanjayregmi.com/posts/image-and-restore-macs-using-clonezilla/</link>
      <pubDate>Wed, 13 Aug 2025 18:10:53 -0700</pubDate>
      
      <guid>https://sanjayregmi.com/posts/image-and-restore-macs-using-clonezilla/</guid>
      <description>&lt;p&gt;If you want to quickly image a Mac’s hard disk (create an exact copy saved as a compressed file) and later restore it, Clonezilla is a simple and reliable choice. This method is especially useful for older Intel-based Macs where internet recovery can be slow or unreliable. Here&amp;rsquo;s how you do it.&lt;/p&gt;
&lt;h2 id=&#34;preprequisites&#34;&gt;Preprequisites&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;An external SSD or hard drive to store the image&lt;/li&gt;
&lt;li&gt;A USB drive to boot Clonezilla (created with &lt;strong&gt;Ventoy&lt;/strong&gt;)  [Ventoy is awesome, keep a USB stick handy with all sorts of ISOs!]&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Download links:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://www.ventoy.net&#34;&gt;Ventoy – Official Website&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://clonezilla.org&#34;&gt;Clonezilla – Official Website&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;1-build-the-bootable-usb-with-ventoy-and-clonezilla&#34;&gt;1. Build the Bootable USB with Ventoy and Clonezilla&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;Download and install Ventoy on a USB drive.&lt;/li&gt;
&lt;li&gt;Copy the Clonezilla ISO file  (amd64) into the USB drive (Ventoy supports booting directly from ISOs).&lt;/li&gt;
&lt;li&gt;Safely eject the USB drive once it’s ready.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;2-boot-the-mac-from-the-ventoy-usb&#34;&gt;2. Boot the Mac from the Ventoy USB&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;Insert the Ventoy USB drive into the Mac.&lt;/li&gt;
&lt;li&gt;Power on the Mac and &lt;strong&gt;hold the Option (⌥)&lt;/strong&gt; key during startup.&lt;/li&gt;
&lt;li&gt;Select &lt;strong&gt;EFI Boot&lt;/strong&gt; from the startup menu.&lt;/li&gt;
&lt;li&gt;Ventoy will load, even if the Mac displays a “security violation” message — you can safely proceed.&lt;/li&gt;
&lt;li&gt;From Ventoy, choose the &lt;strong&gt;Clonezilla ISO&lt;/strong&gt;, and when prompted:
&lt;ul&gt;
&lt;li&gt;Use &lt;strong&gt;GRUB&lt;/strong&gt; to boot Clonezilla.&lt;/li&gt;
&lt;li&gt;Choose &lt;strong&gt;Load into memory&lt;/strong&gt; and select &lt;strong&gt;Large fonts&lt;/strong&gt; (helpful on Retina displays).&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;3-create-an-image-of-the-disk&#34;&gt;3. Create an Image of the Disk&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;In Clonezilla, choose &lt;strong&gt;Beginner Mode&lt;/strong&gt; for simplicity.&lt;/li&gt;
&lt;li&gt;Select &lt;strong&gt;device-image&lt;/strong&gt; mode (save disk as an image).&lt;/li&gt;
&lt;li&gt;Choose your external SSD or hard drive as the destination.&lt;/li&gt;
&lt;li&gt;Use &lt;strong&gt;compression (zipped folder)&lt;/strong&gt; to save space — this skips empty disk sectors.&lt;/li&gt;
&lt;li&gt;Proceed with the imaging process. The system drive will be saved as a compressed image file.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;This will take time, take a break. :)&lt;/p&gt;
&lt;h2 id=&#34;4-restore-the-image-to-a-disk&#34;&gt;4. Restore the Image to a Disk&lt;/h2&gt;
&lt;p&gt;To restore, follow the same initial steps:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Boot the Mac again using &lt;strong&gt;Option → EFI Boot → Ventoy → Clonezilla ISO&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;This time, select &lt;strong&gt;Restore disk from image&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Choose the correct image file you previously saved.&lt;/li&gt;
&lt;li&gt;Proceed through the restoration steps in Beginner Mode.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Since clonezilla is restoring using a disk image, you don&amp;rsquo;t have to worry about partition, etc.&lt;/p&gt;
&lt;h2 id=&#34;5-notes&#34;&gt;5. Notes&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Create the image when the machine&amp;rsquo;s just been setup.&lt;/li&gt;
&lt;li&gt;This process is valuable for older Intel Macs (e.g., 2015 models) that might have problems with Apple’s Internet Recovery.&lt;/li&gt;
&lt;li&gt;Although &lt;strong&gt;Time Machine&lt;/strong&gt; is a built-in option, Clonezilla offers a faster, fully offline method and produces a single portable image you can archive. Works well when you use Clonezilla for all your disk imaging and restoration works.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;p&gt;&lt;sub&gt;Tested on MacBook Pro 2015 with macOS Monterey installed.&lt;/sub&gt;&lt;/p&gt;
&lt;p&gt;🌱&lt;/p&gt;
&lt;div class=&#34;top-content&#34; style=&#34;text-align: center;&#34;&gt;
  &lt;a href=&#34;https://prasna.ca/contact&#34;&gt;[web]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.linkedin.com/company/prasna-it&#34;&gt;[in]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.facebook.com/prasnait&#34;&gt;[fb]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.instagram.com/prasna.ca&#34;&gt;[ig]&lt;/a&gt; ·
  &lt;a href=&#34;https://x.com/PrasnaIT&#34;&gt;[x]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.tiktok.com/@prasna.ca&#34;&gt;[tt]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.youtube.com/channel/UCbDEvFG_MxmAvLsTeG02S8Q&#34;&gt;[yt]&lt;/a&gt;
&lt;/div&gt;

</description>
    </item>
    
    
    
    <item>
      <title>Toshiba Dynabook SS 2000 DS80P/2 – the thinnest laptop before MacBook Air</title>
      <link>https://sanjayregmi.com/posts/toshiba-dynabook-ss-2000-ds80-p2/</link>
      <pubDate>Mon, 23 Jun 2025 20:44:23 -0800</pubDate>
      
      <guid>https://sanjayregmi.com/posts/toshiba-dynabook-ss-2000-ds80-p2/</guid>
      <description>&lt;p&gt;Back in 2006, when I was trawling the second-hand electronics stores in Akihabara, Tokyo, I found this extremely slim and light Toshiba laptop. I remember asking the owner about it and he said it did not work and did not have an operating system.&lt;/p&gt;
&lt;p&gt;Steve Jobs would not unveil a similarly thin and light MacBook Air until 29 January 2008.&lt;/p&gt;
&lt;p&gt;It ran Windows 2000 originally, it was okay with speed, then ran Windows XP and it was not bad.&lt;/p&gt;
&lt;p&gt;Original specifications:&lt;br&gt;
&lt;a href=&#34;https://dynabook.com/pc/catalog/ss/02061820/spec.htm&#34;&gt;https://dynabook.com/pc/catalog/ss/02061820/spec.htm&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;I still have the machine. I have recently installed FreeBSD 14.3 (32-bit) on it. Since the system cannot boot from USB, I cloned a FreeBSD 14.3 VM and used &lt;code&gt;nc&lt;/code&gt; (netcat) with &lt;code&gt;dd&lt;/code&gt; to write the image across the network after PXE booting the Toshiba. It was fun figuring the process out. The combination of &lt;code&gt;nc&lt;/code&gt; and &lt;code&gt;dd&lt;/code&gt; worked perfectly.&lt;/p&gt;
&lt;p&gt;I updated the hard disk to 30GB and added memory so it has 512MB in total.&lt;/p&gt;
&lt;p&gt;Below is the full hardware output from the machine.&lt;sup id=&#34;fnref:1&#34;&gt;&lt;a href=&#34;#fn:1&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;1&lt;/a&gt;&lt;/sup&gt;&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-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;root@tosh:~ # dmidecode
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;# dmidecode 3.6
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Scanning /dev/mem for entry point.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;SMBIOS 2.3 present.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;39 structures occupying 1187 bytes.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Table at 0x000EC000.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Handle 0x0000, DMI type 0, 20 bytes
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;BIOS Information
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        Vendor: TOSHIBA
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        Version: Version 1.40
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        Release Date: 04/25/2003
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        Address: 0xE0000
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        Runtime Size: 128 kB
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        ROM Size: 512 kB
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        Characteristics:
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                ISA is supported
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                PCI is supported
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                PC Card (PCMCIA) is supported
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                PNP is supported
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                APM is supported
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                BIOS is upgradeable
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                BIOS shadowing is allowed
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                VLB is supported
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                Boot from CD is supported
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                Selectable boot is supported
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                EDD is supported
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                Japanese floppy for Toshiba 1.2 MB is supported (int 13h)
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                3.5&amp;#34;/720 kB floppy services are supported (int 13h)
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                Print screen service is supported (int 5h)
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                8042 keyboard services are supported (int 9h)
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                Serial services are supported (int 14h)
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                Printer services are supported (int 17h)
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                ACPI is supported
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                USB legacy is supported
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                AGP is supported
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                BIOS boot specification is supported
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                Function key-initiated network boot is supported
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Handle 0x0001, DMI type 1, 25 bytes
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;System Information
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        Manufacturer: TOSHIBA
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        Product Name: DynaBook SS 2000 DS80P/2
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        Version: PP20080P2F62
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        Serial Number: 92036570J
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        UUID: b2a01400-c6f9-11d6-8011-d61092036570
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        Wake-up Type: Other
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Handle 0x0002, DMI type 2, 8 bytes
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Base Board Information
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        Manufacturer: TOSHIBA
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        Product Name: Portable PC
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        Version: Version A0
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        Serial Number: $$2Y303EZN
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Handle 0x0003, DMI type 3, 17 bytes
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Chassis Information
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        Manufacturer: TOSHIBA
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        Type: Notebook
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        Lock: Not Present
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        Version: Version 1.0
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        Serial Number: 00000000
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        Asset Tag: 0000000000
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        Boot-up State: Safe
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        Power Supply State: Safe
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        Thermal State: Safe
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        Security Status: None
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        OEM Information: 0x00000000
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Handle 0x0004, DMI type 4, 32 bytes
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Processor Information
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        Socket Designation: IC3
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        Type: Central Processor
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        Family: Pentium III
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        Manufacturer: Intel Corporation
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        ID: B1 06 00 00 00 00 00 00
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        Signature: Type 0, Family 6, Model 11, Stepping 1
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        Flags: None
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        Version:
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        Voltage: 1.1 V
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        External Clock: 133 MHz
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        Max Speed: 800 MHz
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        Current Speed: 800 MHz
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        Status: Unpopulated
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        Upgrade: None
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        L1 Cache Handle: 0x0012
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        L2 Cache Handle: 0x0013
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        L3 Cache Handle: Not Provided
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Handle 0x0009, DMI type 5, 20 bytes
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Memory Controller Information
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        Error Detecting Method: None
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        Error Correcting Capabilities:
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                None
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        Supported Interleave: Two-way Interleave
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        Current Interleave: Unknown
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        Maximum Memory Module Size: 512 MB
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        Maximum Total Memory Size: 1024 MB
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        Supported Speeds:
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                60 ns
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        Supported Memory Types:
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                SDRAM
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        Memory Module Voltage: 3.3 V
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        Associated Memory Slots: 2
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                0x000A
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                0x000B
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        Enabled Error Correcting Capabilities:
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                None
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Handle 0x000A, DMI type 6, 12 bytes
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Memory Module Information
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        Socket Designation: Soldering
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        Bank Connections: 0
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        Current Speed: 6 ns
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        Type: SDRAM
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        Installed Size: 256 MB (Single-bank Connection)
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        Enabled Size: 256 MB (Single-bank Connection)
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        Error Status: OK
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Handle 0x000B, DMI type 6, 12 bytes
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Memory Module Information
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        Socket Designation: Toshiba unique
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        Bank Connections: 2 3
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        Current Speed: 6 ns
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        Type: SDRAM
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        Installed Size: 256 MB (Single-bank Connection)
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        Enabled Size: 256 MB (Single-bank Connection)
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        Error Status: OK
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Handle 0x0012, DMI type 7, 19 bytes
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Cache Information
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        Socket Designation: CPU Internal
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        Configuration: Enabled, Not Socketed, Level 1
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        Operational Mode: Write Back
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        Location: Internal
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        Installed Size: 32 kB
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        Maximum Size: 32 kB
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        Supported SRAM Types:
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                Other
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        Installed SRAM Type: Other
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        Speed: 1 ns
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        Error Correction Type: Unknown
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        System Type: Unknown
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        Associativity: Unknown
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Handle 0x0013, DMI type 7, 19 bytes
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Cache Information
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        Socket Designation: CPU Internal
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        Configuration: Enabled, Not Socketed, Level 2
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        Operational Mode: Write Back
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        Location: Internal
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        Installed Size: 512 kB
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        Maximum Size: 512 kB
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        Supported SRAM Types:
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                Other
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        Installed SRAM Type: Other
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        Speed: 1 ns
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        Error Correction Type: Unknown
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        System Type: Unknown
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        Associativity: Unknown
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Handle 0x0017, DMI type 8, 9 bytes
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Port Connector Information
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        Internal Reference Designator:
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        Internal Connector Type: None
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        External Reference Designator: MICROPHONE JACK
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        External Connector Type: Other
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        Port Type: Other
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Handle 0x0018, DMI type 8, 9 bytes
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Port Connector Information
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        Internal Reference Designator:
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        Internal Connector Type: None
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        External Reference Designator: HEADPHONE JACK
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        External Connector Type: Mini Jack (headphones)
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        Port Type: Other
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Handle 0x0019, DMI type 8, 9 bytes
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Port Connector Information
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        Internal Reference Designator:
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        Internal Connector Type: None
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        External Reference Designator: DOCKING INTERFACE PORT
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        External Connector Type: Other
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        Port Type: Other
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Handle 0x001A, DMI type 8, 9 bytes
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Port Connector Information
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        Internal Reference Designator:
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        Internal Connector Type: None
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        External Reference Designator: USB PORT
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        External Connector Type: Access Bus (USB)
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        Port Type: USB
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Handle 0x001B, DMI type 8, 9 bytes
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Port Connector Information
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        Internal Reference Designator:
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        Internal Connector Type: None
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        External Reference Designator: USB PORT
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        External Connector Type: Access Bus (USB)
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        Port Type: USB
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Handle 0x001C, DMI type 8, 9 bytes
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Port Connector Information
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        Internal Reference Designator:
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        Internal Connector Type: None
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        External Reference Designator: BUILT-IN LAN PORT
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        External Connector Type: RJ-45
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        Port Type: Network Port
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Handle 0x001E, DMI type 8, 9 bytes
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Port Connector Information
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        Internal Reference Designator:
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        Internal Connector Type: None
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        External Reference Designator: BUILT-IN MODEM PORT
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        External Connector Type: RJ-11
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        Port Type: Modem Port
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Handle 0x001F, DMI type 8, 9 bytes
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Port Connector Information
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        Internal Reference Designator:
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        Internal Connector Type: None
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        External Reference Designator: EXTERNAL MONITOR PORT
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        External Connector Type: DB-15 female
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        Port Type: Other
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Handle 0x0020, DMI type 8, 9 bytes
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Port Connector Information
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        Internal Reference Designator:
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        Internal Connector Type: None
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        External Reference Designator: USB PORT
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        External Connector Type: Access Bus (USB)
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        Port Type: USB
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Handle 0x0037, DMI type 9, 13 bytes
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;System Slot Information
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        Designation: PCMCIA0
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        Type: PC Card (PCMCIA)
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        Data Bus Width: 32 bit
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        Current Usage: In Use
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        Length: Other
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        ID: Adapter 1, Socket 0
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        Characteristics:
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                5.0 V is provided
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                3.3 V is provided
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                PC Card-16 is supported
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                Cardbus is supported
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                Modem ring resume is supported
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                Hot-plug devices are supported
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Handle 0x0038, DMI type 9, 13 bytes
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;System Slot Information
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        Designation: SD CARD
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        Type: Other
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        Data Bus Width: Other
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        Current Usage: In Use
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        Length: Other
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        Characteristics:
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                5.0 V is provided
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                Hot-plug devices are supported
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Handle 0x0039, DMI type 9, 13 bytes
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;System Slot Information
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        Designation: CF CARD
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        Type: Other
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        Data Bus Width: 16 bit
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        Current Usage: In Use
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        Length: Other
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        Characteristics:
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                5.0 V is provided
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                3.3 V is provided
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                PC Card-16 is supported
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                Cardbus is supported
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                Modem ring resume is supported
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                Hot-plug devices are supported
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Handle 0x0058, DMI type 10, 12 bytes
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;On Board Device 1 Information
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        Type: Other
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        Status: Enabled
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        Description: USB
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;On Board Device 2 Information
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        Type: Sound
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        Status: Enabled
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        Description: SOUND
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;On Board Device 3 Information
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        Type: Ethernet
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        Status: Enabled
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        Description: ETHERNET
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;On Board Device 4 Information
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        Type: Other
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        Status: Enabled
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        Description: MODEM
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Handle 0x0059, DMI type 11, 5 bytes
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;OEM Strings
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        String 1: PP200N0031K0,PCN1110V0Z01/S3A1156D001
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Handle 0x0069, DMI type 12, 5 bytes
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;System Configuration Options
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        Option 1: TOSHIBA
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Handle 0x0080, DMI type 15, 23 bytes
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;System Event Log
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        Area Length: 124 bytes
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        Header Start Offset: 0x0000
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        Data Start Offset: 0x0000
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        Access Method: General-purpose non-volatile data functions
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        Access Address: 0x0003
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        Status: Valid, Not Full
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        Change Token: 0x31121416
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        Header Format: No Header
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        Supported Log Type Descriptors: 0
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Handle 0x0081, DMI type 16, 15 bytes
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Physical Memory Array
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        Location: System Board Or Motherboard
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        Use: System Memory
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        Error Correction Type: None
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        Maximum Capacity: 512 MB
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        Error Information Handle: Not Provided
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        Number Of Devices: 2
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Handle 0x0082, DMI type 17, 23 bytes
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Memory Device
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        Array Handle: 0x0081
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        Error Information Handle: Not Provided
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        Total Width: 64 bits
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        Data Width: 64 bits
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        Size: 256 MB
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        Form Factor: Other
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        Set: Unknown
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        Locator: System 0
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        Bank Locator: CSA 0
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        Type: SDRAM
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        Type Detail: Synchronous
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        Speed: Unknown
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Handle 0x0083, DMI type 17, 23 bytes
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Memory Device
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        Array Handle: 0x0081
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        Error Information Handle: Not Provided
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        Total Width: 64 bits
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        Data Width: 64 bits
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        Size: 256 MB
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        Form Factor: Other
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        Set: Unknown
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        Locator: Toshiba unique
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        Bank Locator: CSA 2 &amp;amp; 3
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        Type: SDRAM
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        Type Detail: Synchronous
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        Speed: Unknown
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Handle 0x0090, DMI type 19, 15 bytes
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Memory Array Mapped Address
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        Starting Address: 0x00000000000
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        Ending Address: 0x000000A03FF
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        Range Size: 641 kB
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        Physical Array Handle: 0x0081
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        Partition Width: 1
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Handle 0x0091, DMI type 19, 15 bytes
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Memory Array Mapped Address
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        Starting Address: 0x00000100000
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        Ending Address: 0x0001F0003FF
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        Range Size: 506881 kB
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        Physical Array Handle: 0x0081
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        Partition Width: 1
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Handle 0x00A0, DMI type 20, 19 bytes
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Memory Device Mapped Address
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        Starting Address: 0x00000000000
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        Ending Address: 0x000000A03FF
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        Range Size: 641 kB
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        Physical Device Handle: 0x0082
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        Memory Array Mapped Address Handle: 0x0090
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        Partition Row Position: 1
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Handle 0x00A1, DMI type 20, 19 bytes
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Memory Device Mapped Address
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        Starting Address: 0x00000000000
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        Ending Address: 0x000100003FF
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        Range Size: 262145 kB
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        Physical Device Handle: 0x0082
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        Memory Array Mapped Address Handle: 0x0091
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        Partition Row Position: 1
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Handle 0x00A2, DMI type 20, 19 bytes
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Memory Device Mapped Address
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        Starting Address: 0x00010000000
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        Ending Address: 0x000200003FF
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        Range Size: 262145 kB
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        Physical Device Handle: 0x0083
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        Memory Array Mapped Address Handle: 0x0091
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        Partition Row Position: 1
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Handle 0x00B0, DMI type 21, 7 bytes
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Built-in Pointing Device
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        Type: Other
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        Interface: PS/2
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        Buttons: 2
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Handle 0x00B1, DMI type 22, 26 bytes
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Portable Battery 
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        Location: 1st Battery
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        Manufacturer: TOSHIBA
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        Manufacture Date: &amp;lt;BAD INDEX&amp;gt;  
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        Serial Number: &amp;lt;BAD INDEX&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        Name: &amp;lt;BAD INDEX&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        Chemistry: Lithium Polymer
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        Design Capacity: 0 mWh
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        Design Voltage: 10 mV
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        SBDS Version: Not Specified
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        Maximum Error: Unknown
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        OEM-specific Information: 0x00000000
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;⛵&lt;/p&gt;
&lt;div class=&#34;top-content&#34; style=&#34;text-align: center;&#34;&gt;
  &lt;a href=&#34;https://prasna.ca/contact&#34;&gt;[web]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.linkedin.com/company/prasna-it&#34;&gt;[in]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.facebook.com/prasnait&#34;&gt;[fb]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.instagram.com/prasna.ca&#34;&gt;[ig]&lt;/a&gt; ·
  &lt;a href=&#34;https://x.com/PrasnaIT&#34;&gt;[x]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.tiktok.com/@prasna.ca&#34;&gt;[tt]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.youtube.com/channel/UCbDEvFG_MxmAvLsTeG02S8Q&#34;&gt;[yt]&lt;/a&gt;
&lt;/div&gt;

&lt;div class=&#34;footnotes&#34; role=&#34;doc-endnotes&#34;&gt;
&lt;hr&gt;
&lt;ol&gt;
&lt;li id=&#34;fn:1&#34;&gt;
&lt;p&gt;The orginal battery died, replaced it with a cheap one. :)&amp;#160;&lt;a href=&#34;#fnref:1&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
</description>
    </item>
    
    
    
    <item>
      <title>Fastest Way to Release your Domain for use with Google Workspace</title>
      <link>https://sanjayregmi.com/posts/fastest-way-to-release-your-domain-for-use-with-google-workspace/</link>
      <pubDate>Tue, 03 Jun 2025 09:20:36 -0700</pubDate>
      
      <guid>https://sanjayregmi.com/posts/fastest-way-to-release-your-domain-for-use-with-google-workspace/</guid>
      <description>&lt;p&gt;You bought Google workspace through a reseller (say Wix) but let it expire. Now you want to get a new Google Workspace account directly with Google but when trying to setup, you get an error,&lt;/p&gt;
&lt;p&gt;&lt;code&gt;&amp;quot;This domain is already is use....&amp;quot;&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;If you don&amp;rsquo;t have access to the admin email, there are two good options:&lt;/p&gt;
&lt;p&gt;If you bought Google Workspace with a third party, you&amp;rsquo;ll have to &amp;lsquo;disconnect&amp;rsquo; the domain from the Wix account. If you are successful, you&amp;rsquo;ll need to wait 7 days. That&amp;rsquo;s too long.&lt;/p&gt;
&lt;p&gt;If you have access to your zone editor (which you will if you own the domain), you can fill this form and Google says they&amp;rsquo;ll get back to you in three days intead of the seven. &lt;a href=&#34;https://toolbox.googleapps.com/apps/recovery/domain_in_use?visit_id=638914179557282795-311471662&amp;amp;rd=1&#34;&gt;https://toolbox.googleapps.com/apps/recovery/domain_in_use?visit_id=638914179557282795-311471662&amp;amp;rd=1&lt;/a&gt;. &lt;em&gt;This is the fastest way we&amp;rsquo;ve figured.&lt;/em&gt;&lt;/p&gt;
&lt;h4 id=&#34;update&#34;&gt;Update&lt;/h4&gt;
&lt;p&gt;Google responded within 24 hours (actually 10 hours) and released it with us having to do nothing extra!&lt;/p&gt;
&lt;p&gt;👂&lt;/p&gt;
&lt;div class=&#34;top-content&#34; style=&#34;text-align: center;&#34;&gt;
  &lt;a href=&#34;https://prasna.ca/contact&#34;&gt;[web]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.linkedin.com/company/prasna-it&#34;&gt;[in]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.facebook.com/prasnait&#34;&gt;[fb]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.instagram.com/prasna.ca&#34;&gt;[ig]&lt;/a&gt; ·
  &lt;a href=&#34;https://x.com/PrasnaIT&#34;&gt;[x]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.tiktok.com/@prasna.ca&#34;&gt;[tt]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.youtube.com/channel/UCbDEvFG_MxmAvLsTeG02S8Q&#34;&gt;[yt]&lt;/a&gt;
&lt;/div&gt;

</description>
    </item>
    
    
    
    <item>
      <title>Reuse My Book Live 2012 for Use With DLNA With a Smaller SSD</title>
      <link>https://sanjayregmi.com/posts/reuse-my-book-live-2012-for-use-with-dlna-with-a-smaller-ssd/</link>
      <pubDate>Thu, 01 May 2025 13:21:52 -0700</pubDate>
      
      <guid>https://sanjayregmi.com/posts/reuse-my-book-live-2012-for-use-with-dlna-with-a-smaller-ssd/</guid>
      <description>&lt;p&gt;We owned a My Book Live, with 1TB HD as a &amp;ldquo;fancy&amp;rdquo; NAS Drive probably released around 2012. Because Windows 11 now comes with default SMB 2.0 and upwards, you cannot use it unless you install SMB 1.1 (SMB 1.1 is insecure and old). I had some older 256GB SSDs and I wanted to replace the existing HD with the SSD and use it primarily to stream music from the drive. I also had saved a 3TB image of the firmware a couple years ago. Here&amp;rsquo;s how I did it.&lt;/p&gt;
&lt;h3 id=&#34;1-extract-the-firmware-image&#34;&gt;1. Extract the Firmware Image&lt;/h3&gt;
&lt;p&gt;Run a Ubuntu Live Disk (ran version 24.x). Use Ventoy, makes your life a lot easier.&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-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo apt install p7zip-full -y
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;7z x &lt;span class=&#34;s2&#34;&gt;&amp;#34;mybook3tb (2020_10_23 23_11_18 UTC).7z&amp;#34;&lt;/span&gt; -o./mybook_image
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;This produces:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;mybook3tb (2020_10_23 23_11_18 UTC).img
&lt;/code&gt;&lt;/pre&gt;&lt;hr&gt;
&lt;h3 id=&#34;2-write-image-to-the-new-ssd&#34;&gt;2. Write Image to the New SSD&lt;/h3&gt;
&lt;p&gt;Connect your SSD to the Ubuntu Live machine via USB. You can buy a kit or resue the board and cable from a dead external HD by taking it apart. Find your SSD device (example &lt;code&gt;/dev/sdg&lt;/code&gt;):&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-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;lsblk
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Then flash the image:&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-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo dd &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;mybook3tb (2020_10_23 23_11_18 UTC).img&amp;#34;&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;of&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;/dev/sdg &lt;span class=&#34;nv&#34;&gt;bs&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;64K &lt;span class=&#34;nv&#34;&gt;status&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;progress
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sync
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;hr&gt;
&lt;h3 id=&#34;3-fix-gpt-and-create-a-new-data-partition&#34;&gt;3. Fix GPT and Create a New Data Partition&lt;/h3&gt;
&lt;p&gt;The data drive is large and it turns out, we can just reduce it to fit the SSD. So here you go:&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-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo gdisk /dev/sdg
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Inside &lt;code&gt;gdisk&lt;/code&gt;, do the following:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;d          # delete partition 4
n          # create new partition
4          # partition number
&amp;lt;Enter&amp;gt;    # default start
+220G      # safe size for 256 GB SSD
&amp;lt;Enter&amp;gt;    # accept default type (8300)
w          # write
y
&lt;/code&gt;&lt;/pre&gt;&lt;hr&gt;
&lt;h3 id=&#34;4-format-partition-4-on-mybook-live&#34;&gt;4. Format Partition 4 on MyBook Live&lt;/h3&gt;
&lt;p&gt;This is the data partition that needs resizing.&lt;/p&gt;
&lt;p&gt;Plug the SSD into MyBook Live and power it on.&lt;/p&gt;
&lt;p&gt;We&amp;rsquo;ll need to SSH into it but SSH is not turned on. So go to the portal add ssh after UI so the ULR is &lt;code&gt; &lt;ip address&gt;/UI/ssh&lt;/code&gt;. Enable it.&lt;/p&gt;
&lt;p&gt;SSH into the device. You need special commands because it only accepts ssh-rsa:&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-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;ssh -o &lt;span class=&#34;nv&#34;&gt;HostKeyAlgorithms&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;+ssh-rsa -o &lt;span class=&#34;nv&#34;&gt;PubkeyAcceptedKeyTypes&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;+ssh-rsa root@&amp;lt;IP_ADDRESS&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# Default password: welc0me&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Format the partition:&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-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;mkfs.ext4 /dev/sda4
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;hr&gt;
&lt;h3 id=&#34;5-mount-it&#34;&gt;5. Mount It&lt;/h3&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;mkdir -p /DataVolume
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;mount /dev/sda4 /DataVolume
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;df -h &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; grep DataVolume
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;hr&gt;
&lt;h3 id=&#34;6-enable-auto-mount-on-boot&#34;&gt;6. Enable Auto-Mount on Boot&lt;/h3&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;echo&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;/dev/sda4   /DataVolume   ext4   defaults,noatime,nodiratime,discard   0   0&amp;#34;&lt;/span&gt; &amp;gt;&amp;gt; /etc/fstab
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;hr&gt;
&lt;h3 id=&#34;7-take-the-ssd-to-mybook-connect-it-power-it-on&#34;&gt;7. Take the SSD to Mybook, connect it, power it on.&lt;/h3&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;reboot
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;After reboot, the LED should turn green and the web UI will show Status: Good. But you cannot see the &amp;ldquo;Public&amp;rdquo; share. The easiest way to fix this is to go to the Mybook portal &amp;ndash;&amp;gt; Utilities &amp;ndash;&amp;gt; Factory Restore &amp;ndash;&amp;gt; Quick Factory restore. Let it reboot and now your Public folder will be visible, your machine is ready to use with the new SSD Drive.&lt;/p&gt;
&lt;p&gt;Note, I just removed the entire Mybook casing, connected the SSD and hung it up using screws and some of the pre punched holes on my network board. :) You can be innovative to reuse the case or create a new case.&lt;/p&gt;
&lt;hr&gt;
&lt;h1 id=&#34;optional&#34;&gt;Optional&lt;/h1&gt;
&lt;p&gt;Your machine is using an SSD instead of the regular HD so I had these enabled.&lt;/p&gt;
&lt;h3 id=&#34;8-optimizations-optional&#34;&gt;8. Optimizations (Optional)&lt;/h3&gt;
&lt;p&gt;Disable forced fsck:&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-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;tune2fs -i &lt;span class=&#34;m&#34;&gt;0&lt;/span&gt; -c &lt;span class=&#34;m&#34;&gt;0&lt;/span&gt; /dev/sda4
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Disable swap:&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-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;swapoff -a
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sed -i &lt;span class=&#34;s1&#34;&gt;&amp;#39;/swap/d&amp;#39;&lt;/span&gt; /etc/fstab
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Confirm &lt;code&gt;/etc/fstab&lt;/code&gt; entry:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;/dev/sda4   /DataVolume   ext4   defaults,noatime,nodiratime,discard   0   0
&lt;/code&gt;&lt;/pre&gt;&lt;hr&gt;
&lt;p&gt;This process restores MyBook Live to a working state with a 256 GB SSD, boots correctly, and mounts the data volume automatically.&lt;/p&gt;
&lt;p&gt;Lastly, save your music, let Mybook parse through and enjoy listening.&lt;/p&gt;
&lt;p&gt;Remember, its a very old device with a very old Linux kernel so don&amp;rsquo;t use it for any data or sensitive stuff. Security experts would probably say not to run such devices in your network if you&amp;rsquo;re worried about security.&lt;/p&gt;
&lt;p&gt;🐦&lt;/p&gt;
&lt;div class=&#34;top-content&#34; style=&#34;text-align: center;&#34;&gt;
  &lt;a href=&#34;https://prasna.ca/contact&#34;&gt;[web]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.linkedin.com/company/prasna-it&#34;&gt;[in]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.facebook.com/prasnait&#34;&gt;[fb]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.instagram.com/prasna.ca&#34;&gt;[ig]&lt;/a&gt; ·
  &lt;a href=&#34;https://x.com/PrasnaIT&#34;&gt;[x]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.tiktok.com/@prasna.ca&#34;&gt;[tt]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.youtube.com/channel/UCbDEvFG_MxmAvLsTeG02S8Q&#34;&gt;[yt]&lt;/a&gt;
&lt;/div&gt;

</description>
    </item>
    
    
    
    <item>
      <title>Checklist for Setup of Google Workspace for Micro Small Business</title>
      <link>https://sanjayregmi.com/posts/checklist-for-setup-of-google-workspace-for-micro-small-business/</link>
      <pubDate>Tue, 01 Apr 2025 09:20:36 -0700</pubDate>
      
      <guid>https://sanjayregmi.com/posts/checklist-for-setup-of-google-workspace-for-micro-small-business/</guid>
      <description>&lt;p&gt;This is a checklist when you setup Google Workspace Email for your small biz so you cover the  basics and fundamental security. The steps are in a chronological order for maximum speed.&lt;/p&gt;
&lt;h3 id=&#34;preparation&#34;&gt;Preparation&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Ensure the domain has never been used with Google Workspace - ask client for verification. Google &amp;ldquo;remembers&amp;rdquo; if a domain was setup earlier and even if it wasn&amp;rsquo;t used, it still gets bound. If you need help, checkout - &lt;a href=&#34;https://sanjayregmi.com/posts/fastest-way-to-release-your-domain-for-use-with-google-workspace/&#34;&gt;https://sanjayregmi.com/posts/fastest-way-to-release-your-domain-for-use-with-google-workspace/&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;setup&#34;&gt;Setup&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Create account&lt;/strong&gt; → use unique email (use + sign in your gmail address). First user = admin, auto-licensed.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;DKIM&lt;/strong&gt; → Apps → Gmail → Authenticate email → add TXT → Start auth.
&lt;ul&gt;
&lt;li&gt;Validate:
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;dig TXT google._domainkey.example.com @8.8.8.8
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;DMARC&lt;/strong&gt; → add TXT &lt;code&gt;_dmarc&lt;/code&gt; in DNS.
&lt;ul&gt;
&lt;li&gt;Example:
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;v=DMARC1; p=reject; rua=mailto:dmarc-reports@example.com; ruf=mailto:dmarc-forensics@example.com; adkim=s; aspf=s
&lt;/code&gt;&lt;/pre&gt;&lt;/li&gt;
&lt;li&gt;Validate:
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;dig TXT _dmarc.example.com @8.8.8.8
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Cloud Identity Free&lt;/strong&gt; → Billing → Get more services → Activate.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Turn off auto licensing&lt;/strong&gt; → Billing → Subscriptions → Settings. Test with dummy user.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Users&lt;/strong&gt; → Create all, remove license from first admin, assign to real users, keep 2 admins (for backup).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;2FA&lt;/strong&gt; → Security → Overview → 2-Step Verification → enforcement  →  On from (choose a date, two weeks from now)   → New user enrollment period   → 2 weeks   →  Frequency, allow user to trust the device   → Methods   → Any except verification codes via text, phone call. Passwords Management: min 15–20 chars, enforce password policy at next sign in.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Passkeys&lt;/strong&gt; → Security → Authentication → Passwordless → Allow.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Footer&lt;/strong&gt; → Apps → Gmail → Compliance → Append footer (optional).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Disable forwarding&lt;/strong&gt; → Apps → Gmail → End User Access → Automatic forwarding → Off.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Final check of DNS values&lt;/strong&gt; - Run &lt;a href=&#34;https://sanjayregmi.com/posts/find-dmarc-dkim-spf-nameservers-with-one-script/&#34;&gt;https://sanjayregmi.com/posts/find-dmarc-dkim-spf-nameservers-with-one-script/&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&#34;post-setup---with-users&#34;&gt;Post setup - with users&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Setup forwarding of existing email to workspace email.&lt;/li&gt;
&lt;li&gt;Setup Bitwarden. &lt;a href=&#34;https://prasna.ca/use-password-manager-today/&#34;&gt;https://prasna.ca/use-password-manager-today/&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;optional&#34;&gt;Optional&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Add company logo - Account &amp;ndash;&amp;gt; Account Settings.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;checklist&#34;&gt;Checklist&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; Business address&lt;/li&gt;
&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; Domain access (Cloudflare, GoDaddy, etc.)&lt;/li&gt;
&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; Credit card for billing&lt;/li&gt;
&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; Names + usernames + current emails for all users&lt;/li&gt;
&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; Aliases needed (info@, sales@, etc.)&lt;/li&gt;
&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; Groups needed (support@ → multiple users)&lt;/li&gt;
&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; Notes / special rules&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;google-workspace-email-setup-request-form&#34;&gt;Google Workspace email setup request form&lt;/h3&gt;
&lt;p&gt;Use this to collect data as noted on the checklist. &lt;a href=&#34;https://tally.so/r/nP70NP&#34;&gt;https://tally.so/r/nP70NP&lt;/a&gt;&lt;/p&gt;
&lt;h3 id=&#34;advanced&#34;&gt;Advanced&lt;/h3&gt;
&lt;p&gt;If you&amp;rsquo;re creating more than 50 users, consider using GAM - &lt;a href=&#34;https://github.com/GAM-team/GAM&#34;&gt;https://github.com/GAM-team/GAM&lt;/a&gt;. It gives you command line access to manage your Google Workspace. It&amp;rsquo;s incredibly powerful and open source.&lt;/p&gt;
&lt;p&gt;🚁&lt;/p&gt;
&lt;div class=&#34;top-content&#34; style=&#34;text-align: center;&#34;&gt;
  &lt;a href=&#34;https://prasna.ca/contact&#34;&gt;[web]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.linkedin.com/company/prasna-it&#34;&gt;[in]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.facebook.com/prasnait&#34;&gt;[fb]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.instagram.com/prasna.ca&#34;&gt;[ig]&lt;/a&gt; ·
  &lt;a href=&#34;https://x.com/PrasnaIT&#34;&gt;[x]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.tiktok.com/@prasna.ca&#34;&gt;[tt]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.youtube.com/channel/UCbDEvFG_MxmAvLsTeG02S8Q&#34;&gt;[yt]&lt;/a&gt;
&lt;/div&gt;

</description>
    </item>
    
    
    
    <item>
      <title>Mac Terminal Commands Cheatsheet</title>
      <link>https://sanjayregmi.com/posts/mac-terminal-commands-cheatsheet/</link>
      <pubDate>Fri, 21 Mar 2025 12:55:31 -0700</pubDate>
      
      <guid>https://sanjayregmi.com/posts/mac-terminal-commands-cheatsheet/</guid>
      <description>&lt;p&gt;Just a cheatsheet for terminal commands on a mac.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Find all updates&lt;br&gt;
&lt;code&gt; softwareupdate -l &lt;/code&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Install all updates&lt;br&gt;
&lt;code&gt; softwareupdate -i &lt;/code&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;👢&lt;/p&gt;
&lt;div class=&#34;top-content&#34; style=&#34;text-align: center;&#34;&gt;
  &lt;a href=&#34;https://prasna.ca/contact&#34;&gt;[web]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.linkedin.com/company/prasna-it&#34;&gt;[in]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.facebook.com/prasnait&#34;&gt;[fb]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.instagram.com/prasna.ca&#34;&gt;[ig]&lt;/a&gt; ·
  &lt;a href=&#34;https://x.com/PrasnaIT&#34;&gt;[x]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.tiktok.com/@prasna.ca&#34;&gt;[tt]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.youtube.com/channel/UCbDEvFG_MxmAvLsTeG02S8Q&#34;&gt;[yt]&lt;/a&gt;
&lt;/div&gt;

</description>
    </item>
    
    
    
    <item>
      <title>How to Remove Folders With Tilde in Windows</title>
      <link>https://sanjayregmi.com/posts/how-to-remove-folders-with-tilde-in-windows/</link>
      <pubDate>Mon, 10 Mar 2025 14:31:26 -0700</pubDate>
      
      <guid>https://sanjayregmi.com/posts/how-to-remove-folders-with-tilde-in-windows/</guid>
      <description>&lt;p&gt;If you have folder names in Windows that start with a tilde (~), they cannot be easily copied or deleted or moved. Here&amp;rsquo;s the trick to remedy the issue.&lt;/p&gt;
&lt;p&gt;Run this:&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-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;ren ~folder newfolder
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;But if you have a lot of folders inside a folder that has tildes AND the folder name with tilde is the same, you need to do a search and replace. Here&amp;rsquo;s the script:&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-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;for&lt;/span&gt; /r &lt;span class=&#34;s2&#34;&gt;&amp;#34;c:\folderwithtildes&amp;#34;&lt;/span&gt; %F in &lt;span class=&#34;o&#34;&gt;(&lt;/span&gt;.&lt;span class=&#34;o&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;do&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; exist &lt;span class=&#34;s2&#34;&gt;&amp;#34;%F\~folderwithtilde&amp;#34;&lt;/span&gt; ren &lt;span class=&#34;s2&#34;&gt;&amp;#34;%F\~folderwithtilde&amp;#34;&lt;/span&gt; folderwithouttilde&lt;span class=&#34;o&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h4 id=&#34;caution&#34;&gt;Caution&lt;/h4&gt;
&lt;p&gt;As with all things that make changes, please use caution, run the script on sample data first.&lt;/p&gt;
&lt;p&gt;🔵&lt;/p&gt;
&lt;div class=&#34;top-content&#34; style=&#34;text-align: center;&#34;&gt;
  &lt;a href=&#34;https://prasna.ca/contact&#34;&gt;[web]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.linkedin.com/company/prasna-it&#34;&gt;[in]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.facebook.com/prasnait&#34;&gt;[fb]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.instagram.com/prasna.ca&#34;&gt;[ig]&lt;/a&gt; ·
  &lt;a href=&#34;https://x.com/PrasnaIT&#34;&gt;[x]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.tiktok.com/@prasna.ca&#34;&gt;[tt]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.youtube.com/channel/UCbDEvFG_MxmAvLsTeG02S8Q&#34;&gt;[yt]&lt;/a&gt;
&lt;/div&gt;

</description>
    </item>
    
    
    
    <item>
      <title>How to Erase Your Macbook M1 Harddisk the Easiest Way</title>
      <link>https://sanjayregmi.com/posts/how-to-erase-your-macbook-m1-harddisk-the-easiest-way/</link>
      <pubDate>Wed, 05 Feb 2025 15:48:53 -0800</pubDate>
      
      <guid>https://sanjayregmi.com/posts/how-to-erase-your-macbook-m1-harddisk-the-easiest-way/</guid>
      <description>&lt;p&gt;Starting with Macbook M1s, you cannot simply delete partitions in the hard disk. If you are one of those that installs linux and edits partitions, you might get into a stage where you cannot create/edit partitions anymore. Diskutil commands also will not help you. As a last resort, you might want to reset the hard-disk and its not easy as in the old models. To make matters worse, you&amp;rsquo;re probably in recovery mode.&lt;/p&gt;
&lt;p&gt;Here are the steps to erase the hard disk (reset it) successfully.&lt;/p&gt;
&lt;h3 id=&#34;steps&#34;&gt;Steps&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Start machine in recovery mode. For a Macbook M1, keep pressing the power button until the BIOS tells you its loading startup options.&lt;/li&gt;
&lt;li&gt;Open terminal.&lt;/li&gt;
&lt;li&gt;Type &amp;ldquo;resetpassword&amp;rdquo; and enter.&lt;/li&gt;
&lt;li&gt;This opens a new dialog box. Click on the top left of the menu bar to find &amp;ldquo;Erase Mac&amp;rdquo;. The hard disk is reset, all partitions are deleted (all data is lost!) and the machine is now ready for a fresh install of the operating system.&lt;/li&gt;
&lt;li&gt;Reboot the machine and your new install will go smoothly.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;🏉&lt;/p&gt;
&lt;div class=&#34;top-content&#34; style=&#34;text-align: center;&#34;&gt;
  &lt;a href=&#34;https://prasna.ca/contact&#34;&gt;[web]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.linkedin.com/company/prasna-it&#34;&gt;[in]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.facebook.com/prasnait&#34;&gt;[fb]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.instagram.com/prasna.ca&#34;&gt;[ig]&lt;/a&gt; ·
  &lt;a href=&#34;https://x.com/PrasnaIT&#34;&gt;[x]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.tiktok.com/@prasna.ca&#34;&gt;[tt]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.youtube.com/channel/UCbDEvFG_MxmAvLsTeG02S8Q&#34;&gt;[yt]&lt;/a&gt;
&lt;/div&gt;

</description>
    </item>
    
    
    
    <item>
      <title>Acer Machine Bios Update Stops Windows From Booting normally</title>
      <link>https://sanjayregmi.com/posts/acer-machine-bios-update-stops-windows-from-booting/</link>
      <pubDate>Mon, 13 Jan 2025 12:54:26 -0700</pubDate>
      
      <guid>https://sanjayregmi.com/posts/acer-machine-bios-update-stops-windows-from-booting/</guid>
      <description>&lt;p&gt;Acer BIOS version R01-B1 has a bug where when you update the machine, Windows 11 will boot in safe mode because it cannot find the hard disk.&lt;/p&gt;
&lt;p&gt;The root cause of the problem is that, the BIOS update changes the storage driver to VMD which Windows 11 doesn&amp;rsquo;t seem to support natively, at least as of this writing.&lt;/p&gt;
&lt;p&gt;The solution is to hit DEL to go to BIOS &amp;ndash;&amp;gt; Advanced &amp;ndash;&amp;gt; Storage Configuration and disable VMD Controller. Restart the machine and it should boot normally.&lt;/p&gt;
&lt;p&gt;Acer will probably fix this in another BIOS update but until then, this is the easiest fix. Otherwise, the driver for Intel RST VMD needs to be injected.&lt;/p&gt;
&lt;p&gt;The above solution worked on Aspire TC-1760 with Win Home Premium Build 26100. The BIOS release date is 10/27/2022.&lt;/p&gt;
&lt;p&gt;🍟&lt;/p&gt;
&lt;div class=&#34;top-content&#34; style=&#34;text-align: center;&#34;&gt;
  &lt;a href=&#34;https://prasna.ca/contact&#34;&gt;[web]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.linkedin.com/company/prasna-it&#34;&gt;[in]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.facebook.com/prasnait&#34;&gt;[fb]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.instagram.com/prasna.ca&#34;&gt;[ig]&lt;/a&gt; ·
  &lt;a href=&#34;https://x.com/PrasnaIT&#34;&gt;[x]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.tiktok.com/@prasna.ca&#34;&gt;[tt]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.youtube.com/channel/UCbDEvFG_MxmAvLsTeG02S8Q&#34;&gt;[yt]&lt;/a&gt;
&lt;/div&gt;

</description>
    </item>
    
    
    
    <item>
      <title>What to Do When You Cannot Onboard a Windows Professional OS Into Microsoft Defender After You Have Upgraded Windows Home Edition to Windows Professional</title>
      <link>https://sanjayregmi.com/posts/what-to-do-when-you-cannot-onboard-a-windows-professional-os-into-microsoft-defender-after-you-have-upgraded-windows-home-edition-to-windows-professional/</link>
      <pubDate>Thu, 05 Dec 2024 21:56:54 -0800</pubDate>
      
      <guid>https://sanjayregmi.com/posts/what-to-do-when-you-cannot-onboard-a-windows-professional-os-into-microsoft-defender-after-you-have-upgraded-windows-home-edition-to-windows-professional/</guid>
      <description>&lt;p&gt;It’s well known that Microsoft Defender (all versions as of Dec 2024) require a Windows Professional license. Many users buy machines that have Windows Home. When we upgrade Windows Home machines to Windows Pro by buying an upgrade key, there are times when the upgrade misses out on installing some key components that are necessary to run the onboarding script for Microsoft Defender from security.microsoft.com. And the onboarding script gives an error like this:  “The service name is invalid.”&lt;/p&gt;
&lt;h2 id=&#34;possible-solution&#34;&gt;Possible solution:&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Ensure the machine has actually been upgraded to the Professional license. You can check under “About your PC” option.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Open command line as administrator and run:&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-cmd&#34; data-lang=&#34;cmd&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;DISM.EXE /Online /Get-CapabilityInfo /CapabilityName:Microsoft.Windows.Sense.Client
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;This will show whether “Sense” (which is Microsoft Defender for Endpoint Service’s internal name) is installed or not.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;If its not installed, run, in the same window:&lt;/li&gt;
&lt;/ol&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-cmd&#34; data-lang=&#34;cmd&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;DISM.EXE /Online /add-capability /CapabilityName:Microsoft.Windows.Sense.Client
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Allow some time for the system to complete the installation.&lt;/p&gt;
&lt;ol start=&#34;4&#34;&gt;
&lt;li&gt;Run the onboarding script.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;🔵&lt;/p&gt;
&lt;div class=&#34;top-content&#34; style=&#34;text-align: center;&#34;&gt;
  &lt;a href=&#34;https://prasna.ca/contact&#34;&gt;[web]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.linkedin.com/company/prasna-it&#34;&gt;[in]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.facebook.com/prasnait&#34;&gt;[fb]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.instagram.com/prasna.ca&#34;&gt;[ig]&lt;/a&gt; ·
  &lt;a href=&#34;https://x.com/PrasnaIT&#34;&gt;[x]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.tiktok.com/@prasna.ca&#34;&gt;[tt]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.youtube.com/channel/UCbDEvFG_MxmAvLsTeG02S8Q&#34;&gt;[yt]&lt;/a&gt;
&lt;/div&gt;

</description>
    </item>
    
    
    
    <item>
      <title>Convert VCF file into CSV the easiest way with no data loss</title>
      <link>https://sanjayregmi.com/posts/convert-vcf-file-into-csv-the-easiest-way/</link>
      <pubDate>Fri, 22 Nov 2024 15:54:40 -0800</pubDate>
      
      <guid>https://sanjayregmi.com/posts/convert-vcf-file-into-csv-the-easiest-way/</guid>
      <description>&lt;p&gt;Applications like Apple mail export contacts in VCF format. Outlook doesn&amp;rsquo;t understand VCF. So a conversion from VCF to CSV is required. Trying to upload the VCF file to Google will work but many incomplete or badly formatted contacts will be removed. This doesn&amp;rsquo;t bode well for data integrity.&lt;/p&gt;
&lt;p&gt;The best way to convert a VCF with thousands of contacts is to download the free ThunderBird Client. It requires you connect to an email system like outlook.com which you can create new. Afte that, you can import contacts into a new Address Book. The best part here is that Thunderbird imports ALL the contacts, regardless of whether they&amp;rsquo;re duplicates, or if they don&amp;rsquo;t have first name and last names. Finally, you can export the address book to CSV format which can be easily and without errors be imported to Outlook.&lt;/p&gt;
&lt;p&gt;👺&lt;/p&gt;
&lt;div class=&#34;top-content&#34; style=&#34;text-align: center;&#34;&gt;
  &lt;a href=&#34;https://prasna.ca/contact&#34;&gt;[web]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.linkedin.com/company/prasna-it&#34;&gt;[in]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.facebook.com/prasnait&#34;&gt;[fb]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.instagram.com/prasna.ca&#34;&gt;[ig]&lt;/a&gt; ·
  &lt;a href=&#34;https://x.com/PrasnaIT&#34;&gt;[x]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.tiktok.com/@prasna.ca&#34;&gt;[tt]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.youtube.com/channel/UCbDEvFG_MxmAvLsTeG02S8Q&#34;&gt;[yt]&lt;/a&gt;
&lt;/div&gt;

</description>
    </item>
    
    
    
    <item>
      <title>Venom, Diabetes, Weight-loss, High Blood Pressure - Wonder How They&#39;re Connected?!</title>
      <link>https://sanjayregmi.com/posts/venom-diabetes-weight-loss-high-blood-pressure-wonder-how-theyre-connected/</link>
      <pubDate>Wed, 13 Nov 2024 10:40:55 -0800</pubDate>
      
      <guid>https://sanjayregmi.com/posts/venom-diabetes-weight-loss-high-blood-pressure-wonder-how-theyre-connected/</guid>
      <description>&lt;p&gt;What have diabetes, ozempic, high blood pressure medication etc. have in common with the most powerful venoms of animals in the world? Venoms saves lives! Crazy.&lt;/p&gt;
&lt;p&gt;Here&amp;rsquo;s the gift NYT article if you want to read it all &lt;a href=&#34;https://www.nytimes.com/2024/11/13/magazine/venom-animals-drugs-ozempic.html?unlocked_article_code=1.Zk4.QJx2.u6wwtbKHOEaI&amp;amp;smid=url-share&#34;&gt;it&amp;rsquo;s a long but very exciting read&lt;/a&gt;&lt;/p&gt;
&lt;h4 id=&#34;some-important-points&#34;&gt;Some important points&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;The discovery of exendin-4 (a peptide in Gila Monster venom) led to the creation of Ozempic and Wegovy.&lt;/li&gt;
&lt;li&gt;Unlike poison, which is considered &amp;lsquo;passive&amp;rsquo;, venom needs to be produced, stored and deployed by animals so it&amp;rsquo;s a surprizingly complex protein with myriad of peptides doing a lot of things and hence a great recipe for research for new useful medications.&lt;/li&gt;
&lt;li&gt;The key to the usefulness of venom for drug discovery is their interaction with cell receptors.&lt;/li&gt;
&lt;li&gt;And the most chilling and unbelievable trait and I quote: &amp;ldquo;Jewel wasps sting cockroaches with a serum that turn them into &amp;ldquo;zombies&amp;rdquo; that willingly accompany the wasps back to their lair, to be devoured by their larvae&amp;rdquo;.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;🏮&lt;/p&gt;
&lt;div class=&#34;top-content&#34; style=&#34;text-align: center;&#34;&gt;
  &lt;a href=&#34;https://prasna.ca/contact&#34;&gt;[web]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.linkedin.com/company/prasna-it&#34;&gt;[in]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.facebook.com/prasnait&#34;&gt;[fb]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.instagram.com/prasna.ca&#34;&gt;[ig]&lt;/a&gt; ·
  &lt;a href=&#34;https://x.com/PrasnaIT&#34;&gt;[x]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.tiktok.com/@prasna.ca&#34;&gt;[tt]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.youtube.com/channel/UCbDEvFG_MxmAvLsTeG02S8Q&#34;&gt;[yt]&lt;/a&gt;
&lt;/div&gt;

</description>
    </item>
    
    
    
    <item>
      <title>Setting Up Microsoft Defender for Endpoint - A First Timer&#39;s Guide</title>
      <link>https://sanjayregmi.com/posts/setting-up-microsoft-defender-for-endpoint-first-timers-guide/</link>
      <pubDate>Tue, 15 Oct 2024 16:03:29 -0700</pubDate>
      
      <guid>https://sanjayregmi.com/posts/setting-up-microsoft-defender-for-endpoint-first-timers-guide/</guid>
      <description>&lt;p&gt;Defender for Endpoint is a wonderful cybersecurity tool that works in Macs and PCs and in PCs works with Windows Defender, other Defender flavors that Microsoft produces etc. It has the following benefits:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Core Defender Vulnerability Management&lt;/li&gt;
&lt;li&gt;Attack surface reduction&lt;/li&gt;
&lt;li&gt;Next-generation protection&lt;/li&gt;
&lt;li&gt;Endpoint detection and response&lt;/li&gt;
&lt;li&gt;Automated investgation and remediation&lt;/li&gt;
&lt;li&gt;Microsoft secure score for devices&lt;/li&gt;
&lt;li&gt;Microsoft threat experts&lt;/li&gt;
&lt;li&gt;Centralized configuration and administration, APIs&lt;/li&gt;
&lt;li&gt;Integration with other Microsoft Solutions&lt;/li&gt;
&lt;li&gt;Microsoft Defender XDR&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;When you buy a license for the first time, you&amp;rsquo;ll have to wait for 30 mins to an hour for it to be fully deployed. After that you need to download an &amp;lsquo;onboarding package&amp;rsquo; which is visible under &amp;lsquo;Onboarding&amp;rsquo; card on the Overview page and install it in the machine of your choice.&lt;/p&gt;
&lt;p&gt;If you cannot find it there (MS keeps on making changes to the UI all the time), you can try it under Setting &amp;ndash;&amp;gt; Endpoints &amp;ndash;&amp;gt; Device Management &amp;ndash;&amp;gt; Onboarding under security.microsoft.com. Bottomline is you need to wait for upto an hour to see that appear. Hopefully, MS will make it appear much faster.&lt;/p&gt;
&lt;p&gt;Also, the onboarding package can be installed remotely into another machine via administrator powershell by typing the script name in full and hitting enter.&lt;/p&gt;
&lt;p&gt;And lastly, you get to install Defender into five machines per license.&lt;/p&gt;
&lt;h2 id=&#34;microsoft-defender-does-not-support-windows-home-editions&#34;&gt;Microsoft Defender does not support Windows Home editions&lt;/h2&gt;
&lt;p&gt;Sadly, Windows Home devices cannot be onboarded to the fantastic Windows Defender for Endpoint (see minimum requirements here: &lt;a href=&#34;https://learn.microsoft.com/en-us/defender-endpoint/minimum-requirements?view=o365-worldwide#hardware-and-software-requirements)&#34;&gt;https://learn.microsoft.com/en-us/defender-endpoint/minimum-requirements?view=o365-worldwide#hardware-and-software-requirements)&lt;/a&gt;. If you try to onboard them using the onboarding script, this is what you get:&lt;/p&gt;
&lt;p&gt;&lt;em&gt;[Error Id: 15, Error Level: 1] Unable to start Microsoft Defender for Endpoint Service. Error message: The service name
is invalid.
For more information, visit: &lt;a href=&#34;https://go.microsoft.com/fwlink/p/?linkid=822807&#34;&gt;https://go.microsoft.com/fwlink/p/?linkid=822807&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;The only way out is to upgrade the home machines to Windows Professional.&lt;/p&gt;
&lt;p&gt;Perhaps this reflects some business or sales strategy on Microsoft’s part, but it does raise a valid question: &lt;em&gt;why is a feature available for Mac and Linux platforms, yet excluded from Windows Home editions?&lt;/em&gt; This discrepancy seems puzzling, especially since covering all major systems could offer more consistent user experiences and align with user expectations.&lt;/p&gt;
&lt;p&gt;😵
&lt;div class=&#34;top-content&#34; style=&#34;text-align: center;&#34;&gt;
  &lt;a href=&#34;https://prasna.ca/contact&#34;&gt;[web]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.linkedin.com/company/prasna-it&#34;&gt;[in]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.facebook.com/prasnait&#34;&gt;[fb]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.instagram.com/prasna.ca&#34;&gt;[ig]&lt;/a&gt; ·
  &lt;a href=&#34;https://x.com/PrasnaIT&#34;&gt;[x]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.tiktok.com/@prasna.ca&#34;&gt;[tt]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.youtube.com/channel/UCbDEvFG_MxmAvLsTeG02S8Q&#34;&gt;[yt]&lt;/a&gt;
&lt;/div&gt;
&lt;/p&gt;
</description>
    </item>
    
    
    
    <item>
      <title>On Migration From Google Workspace to Microsoft Office - Some caveats and notes</title>
      <link>https://sanjayregmi.com/posts/on-migration-from-google-workspace-to-microsoft-office-365-notes/</link>
      <pubDate>Thu, 03 Oct 2024 16:28:20 -0700</pubDate>
      
      <guid>https://sanjayregmi.com/posts/on-migration-from-google-workspace-to-microsoft-office-365-notes/</guid>
      <description>&lt;p&gt;If you&amp;rsquo;re migrating a large number of clients from Google Workspace over to Microsoft Office 365, there&amp;rsquo;s a bunch of software that allows you to do that. They require configuration but the task will be much more scalable, you&amp;rsquo;ll be able to move over hundreds of accounts with minimal time and hiccups. But if you&amp;rsquo;re doing only a handful of migrations and you have to install the Office 365 thick clients on client machines, doing it manually will probably be faster and cost effective. Either way, if you go the manual route, here&amp;rsquo;s a few things that need to be noted.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Get a Google Takeout. For a few GB accounts, its quite fast. The emails are exported in MBOX format and Outlook doesn&amp;rsquo;t like it but you can convert MBOX into PST using third party paid tools (like, Systools MBOX to PST Converter) and it&amp;rsquo;ll preserve the folder structure.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;If current Google Workspace account is being used with Outlook, an OST file is created in outlook that has all the emails. You&amp;rsquo;ll need to remember to export it as the export creates a PST instead of an OST. And even though Outlook actually creates OST files, it cannot import them. And to make matters worse, if you&amp;rsquo;ve removed the Google Account, and even though you already have and OST file, Outlook cannot export it! Intricate! OST file is only &amp;lsquo;alive&amp;rsquo; when still connected to the IMAP servers.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Upon switching from Google Workspace email to Outlook, when you go in to setup the new Outlook account, Outlook refuses to add the new account because an account with the same already exists (the Google Workspace one). A safer bet, if the usernames are the same (and they generally are because you&amp;rsquo;re migrating the user from one service to another), you can create a new username in Microsoft Office and make the existing one an alias. So when you go to add the new account, you can add it WITHOUT deleting the Google mailbox because you want a copy of the emails there as well. For example, if the email you&amp;rsquo;re trying to import is &lt;a href=&#34;mailto:john@example.com&#34;&gt;john@example.com&lt;/a&gt;, create a new email account in Outlook as &lt;a href=&#34;mailto:john.doe@example.com&#34;&gt;john.doe@example.com&lt;/a&gt;. Import the account into Outook. And ONLY then make &lt;a href=&#34;mailto:John.doe@example.com&#34;&gt;John.doe@example.com&lt;/a&gt; an alias of &lt;a href=&#34;mailto:john@example.com&#34;&gt;john@example.com&lt;/a&gt;. The idea here is to preserve existing emails so if in the next steps our PST migration fails, the user still has their old emails in Outlook to refer back to.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Importing a PST is not 100 percent perfect. It can fail silently and it can fail with an error. Also with Office 365 online, you can only import a PST in Outlook (classic) and not in Outlook (new) as I write this. Additionally, a large PST will take days for all emails to be ingested into Office online and until then, you cannot do a search and find all emails.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;When the ingestion of PSTs fails for whatever reason (of course, you can run scanpst on them and see) but if you don&amp;rsquo;t have time or want to use a better mechanism, you can actually load a PST file. PST files that have failed to be ingested into Outlook online will be loaded and visible this way. On outlook go to File &amp;ndash;&amp;gt; Open and Export &amp;ndash;&amp;gt; Open Outlook Data File and then provide your PST. Once the PST opens, you can copy and paste entire folders into the main Outlook folders.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;😺&lt;/p&gt;
&lt;div class=&#34;top-content&#34; style=&#34;text-align: center;&#34;&gt;
  &lt;a href=&#34;https://prasna.ca/contact&#34;&gt;[web]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.linkedin.com/company/prasna-it&#34;&gt;[in]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.facebook.com/prasnait&#34;&gt;[fb]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.instagram.com/prasna.ca&#34;&gt;[ig]&lt;/a&gt; ·
  &lt;a href=&#34;https://x.com/PrasnaIT&#34;&gt;[x]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.tiktok.com/@prasna.ca&#34;&gt;[tt]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.youtube.com/channel/UCbDEvFG_MxmAvLsTeG02S8Q&#34;&gt;[yt]&lt;/a&gt;
&lt;/div&gt;

</description>
    </item>
    
    
    
    <item>
      <title>How to Block a Website Using Pfsense when you have to stop your kids and family from using some popular websites</title>
      <link>https://sanjayregmi.com/posts/how-to-block-a-website-using-pfsense/</link>
      <pubDate>Fri, 06 Sep 2024 14:33:02 -0700</pubDate>
      
      <guid>https://sanjayregmi.com/posts/how-to-block-a-website-using-pfsense/</guid>
      <description>&lt;p&gt;Let&amp;rsquo;s face it. You&amp;rsquo;re supposed to do important work but want to listen to some music you remembered on youtube and then get carried away into watching something more interesting, forgetting you have a job at hand. Kids with homeworks due are the most vulnerable :).&lt;/p&gt;
&lt;p&gt;One way to discourage this behaviour is to block websites like youtube or netflix if you have pfsense installed.&lt;/p&gt;
&lt;h4 id=&#34;steps-to-block-websites&#34;&gt;Steps to block websites&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;Login to pfsense portal.&lt;/li&gt;
&lt;li&gt;Navigate to Services &amp;ndash;&amp;gt; DNS Resolver &amp;ndash;&amp;gt; General Settings&lt;/li&gt;
&lt;li&gt;Scroll down to the bottom to &amp;ldquo;Domain Overrides&amp;rdquo;&lt;/li&gt;
&lt;li&gt;Click &amp;ldquo;Add&amp;rdquo;.&lt;/li&gt;
&lt;li&gt;Under &amp;ldquo;Domain&amp;rdquo; enter your URL. For example, &amp;ldquo;youtube.com&amp;rdquo;&lt;/li&gt;
&lt;li&gt;Under IP Address, enter &amp;ldquo;0.0.0.0&amp;rdquo;.&lt;/li&gt;
&lt;li&gt;Hit &amp;ldquo;Save&amp;rdquo;&lt;/li&gt;
&lt;li&gt;Then hit &amp;ldquo;Apply&amp;rdquo; changes at the top of the screen.&lt;/li&gt;
&lt;li&gt;The changes take effect immediately.&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id=&#34;caveats&#34;&gt;Caveats&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;All computers and devices on your network need to use your pfsense router as the DNS. On Windows 11, make sure you have &amp;ldquo;IP assignment&amp;rdquo; and &amp;ldquo;DNS server assignment&amp;rdquo; values to be &amp;ldquo;Automatic(DHCP).&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;🔵&lt;/p&gt;
&lt;div class=&#34;top-content&#34; style=&#34;text-align: center;&#34;&gt;
  &lt;a href=&#34;https://prasna.ca/contact&#34;&gt;[web]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.linkedin.com/company/prasna-it&#34;&gt;[in]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.facebook.com/prasnait&#34;&gt;[fb]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.instagram.com/prasna.ca&#34;&gt;[ig]&lt;/a&gt; ·
  &lt;a href=&#34;https://x.com/PrasnaIT&#34;&gt;[x]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.tiktok.com/@prasna.ca&#34;&gt;[tt]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.youtube.com/channel/UCbDEvFG_MxmAvLsTeG02S8Q&#34;&gt;[yt]&lt;/a&gt;
&lt;/div&gt;

</description>
    </item>
    
    
    
    <item>
      <title>Microsoft Outlook Error: The Operation Cannot Be Performed Because the Message Has Been Changed</title>
      <link>https://sanjayregmi.com/posts/microsoft-outlook-error-the-operation-cannot-be-performed-because-the-message-has-been-changed/</link>
      <pubDate>Mon, 12 Aug 2024 15:42:39 -0700</pubDate>
      
      <guid>https://sanjayregmi.com/posts/microsoft-outlook-error-the-operation-cannot-be-performed-because-the-message-has-been-changed/</guid>
      <description>&lt;p&gt;This mesage appears when editing a draft email in outlook and generally when using IMAP with/without a flaky wifi. The solution is simple:&lt;/p&gt;
&lt;h2 id=&#34;solution&#34;&gt;Solution&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Open Outlook, File -&amp;gt; Options -&amp;gt; Mail.&lt;/li&gt;
&lt;li&gt;Uncheck all options under &amp;ldquo;Conversation Clean up&amp;rdquo;.&lt;/li&gt;
&lt;li&gt;Save, quit Outlook and restart Outlook.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;workaround&#34;&gt;Workaround&lt;/h2&gt;
&lt;p&gt;If you don&amp;rsquo;t want to or cannot spend any time tinkering as explained above, you can use the online version of Outlook at either office.com or outlook.com. Online versions are not affected by this issue.&lt;/p&gt;
&lt;h2 id=&#34;if-the-above-doesnt-help&#34;&gt;If the above doesn&amp;rsquo;t help&lt;/h2&gt;
&lt;p&gt;If this doesn&amp;rsquo;t solve it, repair/reinstall Office OR use the &amp;ldquo;Microsoft Support and Recovery Assistant&amp;rdquo; (SARA) tool.&lt;/p&gt;
&lt;p&gt;😌&lt;/p&gt;
&lt;div class=&#34;top-content&#34; style=&#34;text-align: center;&#34;&gt;
  &lt;a href=&#34;https://prasna.ca/contact&#34;&gt;[web]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.linkedin.com/company/prasna-it&#34;&gt;[in]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.facebook.com/prasnait&#34;&gt;[fb]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.instagram.com/prasna.ca&#34;&gt;[ig]&lt;/a&gt; ·
  &lt;a href=&#34;https://x.com/PrasnaIT&#34;&gt;[x]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.tiktok.com/@prasna.ca&#34;&gt;[tt]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.youtube.com/channel/UCbDEvFG_MxmAvLsTeG02S8Q&#34;&gt;[yt]&lt;/a&gt;
&lt;/div&gt;

</description>
    </item>
    
    
    
    <item>
      <title>CrowdStrike Outage July 2024 - Technical Summary of What Happened</title>
      <link>https://sanjayregmi.com/posts/crowdstrike-outage-july-2024-technical-summary-of-what-happened/</link>
      <pubDate>Wed, 24 Jul 2024 14:35:21 -0700</pubDate>
      
      <guid>https://sanjayregmi.com/posts/crowdstrike-outage-july-2024-technical-summary-of-what-happened/</guid>
      <description>&lt;p&gt;An update to CrowdStrike Falcon Sensor on 19 July 2024 caused about 8.5 million Windows machines (estimated) to hang and show BSOD (Blue Scren of Death). A fix was pushed out later that day but the machines that went down had to be manually fixed (as of this writing). Here&amp;rsquo;s a technical summary of what happened based on Dave Plummer&amp;rsquo;s video below:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Falcon Sensor runs on kernel mode! Executables that run on kernel mode need to pass WHQL (Windows Hardware Quality Lab).&lt;/li&gt;
&lt;li&gt;Falcon Sensor was designed in such a way that an update to the sensor would be done through another file called a Channel File. This Channel File or simply a configuration file would be updated multiple times a day and would not go through WHQL process.&lt;/li&gt;
&lt;li&gt;On the ill fated day, CrowdStrike sent a configuration file that was invalid. (We&amp;rsquo;ll probably know how this passed through when they publish their findings)&lt;/li&gt;
&lt;li&gt;Falcon Sensor read the new configuration file and since it was invalid, threw an error. Since the Sensor runs in kernel mode, it threw a BSOD.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;remedy&#34;&gt;Remedy&lt;/h2&gt;
&lt;p&gt;For the affected machines, only manual fix is available. The steps are:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Boot the machine in safe mode.&lt;/li&gt;
&lt;li&gt;Remove the offending file starting with  C-0000291 under c:\System32\drivers\CrowdStrike directory.&lt;/li&gt;
&lt;li&gt;Reboot the machine.&lt;/li&gt;
&lt;li&gt;On devices with BitLocker encryption, one also needs the keys.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;prevention&#34;&gt;Prevention&lt;/h2&gt;
&lt;p&gt;There&amp;rsquo;s a setting in the Falcon Sensor to delay the update for upto 3 months. The default unfortunately is set to immediate update.&lt;/p&gt;
&lt;h2 id=&#34;video&#34;&gt;Video&lt;/h2&gt;

&lt;div style=&#34;position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;&#34;&gt;
  &lt;iframe src=&#34;https://www.youtube.com/embed/wAzEJxOo1ts&#34; style=&#34;position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;&#34; allowfullscreen title=&#34;YouTube Video&#34;&gt;&lt;/iframe&gt;
&lt;/div&gt;

&lt;h2 id=&#34;postscript&#34;&gt;Postscript&lt;/h2&gt;
&lt;p&gt;Here&amp;rsquo;s an interesting way an Australian Tax Firm used barcode scanners to read the long BitLocker keys! &lt;a href=&#34;https://www.theregister.com/2024/07/25/crowdstrike_remediation_with_barcode_scanner/&#34;&gt;https://www.theregister.com/2024/07/25/crowdstrike_remediation_with_barcode_scanner/&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&#34;reference&#34;&gt;Reference&lt;/h2&gt;
&lt;p&gt;CrowdStrike July 19 Outage Updates Page:&lt;br&gt;
&lt;a href=&#34;https://www.crowdstrike.com/falcon-content-update-remediation-and-guidance-hub/&#34;&gt;https://www.crowdstrike.com/falcon-content-update-remediation-and-guidance-hub/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;💣&lt;/p&gt;
&lt;div class=&#34;top-content&#34; style=&#34;text-align: center;&#34;&gt;
  &lt;a href=&#34;https://prasna.ca/contact&#34;&gt;[web]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.linkedin.com/company/prasna-it&#34;&gt;[in]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.facebook.com/prasnait&#34;&gt;[fb]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.instagram.com/prasna.ca&#34;&gt;[ig]&lt;/a&gt; ·
  &lt;a href=&#34;https://x.com/PrasnaIT&#34;&gt;[x]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.tiktok.com/@prasna.ca&#34;&gt;[tt]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.youtube.com/channel/UCbDEvFG_MxmAvLsTeG02S8Q&#34;&gt;[yt]&lt;/a&gt;
&lt;/div&gt;

</description>
    </item>
    
    
    
    <item>
      <title>Failed to Load Kernel &#39;Kernel&#39; FreeBSD</title>
      <link>https://sanjayregmi.com/posts/failed-to-load-kernel-kernel-freebsd/</link>
      <pubDate>Tue, 18 Jun 2024 14:35:21 -0700</pubDate>
      
      <guid>https://sanjayregmi.com/posts/failed-to-load-kernel-kernel-freebsd/</guid>
      <description>&lt;p&gt;Sometimes when you release upgrade freebsd, you might get the following error:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;Failed to load kenel &amp;lsquo;kernel&amp;rsquo;&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;code&gt;can&amp;rsquo;t load &amp;lsquo;kernel&amp;rsquo;&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;code&gt; can&amp;rsquo;t load &amp;lsquo;kernel&amp;rsquo;&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;code&gt; Type &amp;lsquo;?&amp;rsquo; for a list of commands&amp;hellip; &lt;/code&gt;&lt;/p&gt;
&lt;p&gt;And the system doesn&amp;rsquo;t autoboot.&lt;/p&gt;
&lt;p&gt;In times like these, you&amp;rsquo;re supposed to select &amp;ldquo;Option 6&amp;rdquo; and select older kernels, boot the system, redo &lt;a href=&#34;https://sanjayregmi.com/posts/how-to-upgrade-freebsd-to-a-newer-version/&#34;&gt;the upgrade&lt;/a&gt; and the system should be repaired. In my case, that didn&amp;rsquo;t work.&lt;/p&gt;
&lt;p&gt;There were no other kernels available, there was no &amp;ldquo;current&amp;rdquo; kernel either. So the next option for me was to select &amp;ldquo;Option 8&amp;rdquo;, &amp;ldquo;Boot Environment&amp;rdquo; and select not the default environment but the next one (you can actually cycle through the older environments). You can do this by selecting &amp;ldquo;E&amp;rdquo; followed by &amp;ldquo;A&amp;rdquo;. You can press &amp;ldquo;A&amp;rdquo; repeatedly to go through all the older environments. Once you boot properly (by pressing the &amp;ldquo;Enter&amp;rdquo; button on your keyboard), redo the upgrade and the system should repair itself.&lt;/p&gt;
&lt;p&gt;However, if you know this error is because of missing bootcode for freebsd, you can run the last command (the gpart one) from &lt;a href=&#34;https://sanjayregmi.com/posts/how-to-resolve-zfs-unsupported-feature-com.klarasystems-vdev_zaps_v2/&#34;&gt;here&lt;/a&gt; to install the bootcode.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://sanjayregmi.com/images/kernel.jpg&#34; alt=&#34;&#34;&gt;&lt;/p&gt;
&lt;p&gt;🟧&lt;/p&gt;
&lt;div class=&#34;top-content&#34; style=&#34;text-align: center;&#34;&gt;
  &lt;a href=&#34;https://prasna.ca/contact&#34;&gt;[web]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.linkedin.com/company/prasna-it&#34;&gt;[in]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.facebook.com/prasnait&#34;&gt;[fb]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.instagram.com/prasna.ca&#34;&gt;[ig]&lt;/a&gt; ·
  &lt;a href=&#34;https://x.com/PrasnaIT&#34;&gt;[x]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.tiktok.com/@prasna.ca&#34;&gt;[tt]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.youtube.com/channel/UCbDEvFG_MxmAvLsTeG02S8Q&#34;&gt;[yt]&lt;/a&gt;
&lt;/div&gt;

</description>
    </item>
    
    
    
    <item>
      <title>How to Upgrade FreeBSD to a Newer Version or Release</title>
      <link>https://sanjayregmi.com/posts/how-to-upgrade-freebsd-to-a-newer-version/</link>
      <pubDate>Mon, 10 Jun 2024 10:44:21 -0700</pubDate>
      
      <guid>https://sanjayregmi.com/posts/how-to-upgrade-freebsd-to-a-newer-version/</guid>
      <description>&lt;p&gt;Commands:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;freebsd-update upgrade -r 14.1-RELEASE&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;freebsd-update install&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;shutdown -r now&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;freebsd-update install &lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;shutdown -r now &lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Notes:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&amp;ldquo;14.1-RELEASE&amp;rdquo; &amp;ndash;&amp;gt; You can use replace it with &amp;ldquo;14.2-RELEASE&amp;rdquo; or any other release in that format.&lt;/li&gt;
&lt;li&gt;Before running the final &amp;ldquo;shutdown -r now&amp;rdquo;, you might have to do an additional &amp;ldquo;freebsd-update install&amp;rdquo; if any application is asking for it.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;👅&lt;/p&gt;
&lt;div class=&#34;top-content&#34; style=&#34;text-align: center;&#34;&gt;
  &lt;a href=&#34;https://prasna.ca/contact&#34;&gt;[web]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.linkedin.com/company/prasna-it&#34;&gt;[in]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.facebook.com/prasnait&#34;&gt;[fb]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.instagram.com/prasna.ca&#34;&gt;[ig]&lt;/a&gt; ·
  &lt;a href=&#34;https://x.com/PrasnaIT&#34;&gt;[x]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.tiktok.com/@prasna.ca&#34;&gt;[tt]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.youtube.com/channel/UCbDEvFG_MxmAvLsTeG02S8Q&#34;&gt;[yt]&lt;/a&gt;
&lt;/div&gt;

</description>
    </item>
    
    
    
    <item>
      <title>How to Keep FreeBSD Updated With Security Patches</title>
      <link>https://sanjayregmi.com/posts/how-to-keep-freebsd-updated-with-security-patches/</link>
      <pubDate>Mon, 10 Jun 2024 10:39:41 -0700</pubDate>
      
      <guid>https://sanjayregmi.com/posts/how-to-keep-freebsd-updated-with-security-patches/</guid>
      <description>&lt;p&gt;To keep FreeBSD updated with all the security patches, run these two commands:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt; freebsd-update fetch &lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt; freebsd-update install &lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;When you run the first command, you can type &amp;ldquo;q&amp;rdquo; to get out of the prompt if you do not want to review all the changes so you can run the second command.&lt;/p&gt;
&lt;p&gt;💦&lt;/p&gt;
&lt;div class=&#34;top-content&#34; style=&#34;text-align: center;&#34;&gt;
  &lt;a href=&#34;https://prasna.ca/contact&#34;&gt;[web]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.linkedin.com/company/prasna-it&#34;&gt;[in]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.facebook.com/prasnait&#34;&gt;[fb]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.instagram.com/prasna.ca&#34;&gt;[ig]&lt;/a&gt; ·
  &lt;a href=&#34;https://x.com/PrasnaIT&#34;&gt;[x]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.tiktok.com/@prasna.ca&#34;&gt;[tt]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.youtube.com/channel/UCbDEvFG_MxmAvLsTeG02S8Q&#34;&gt;[yt]&lt;/a&gt;
&lt;/div&gt;

</description>
    </item>
    
    
    
    <item>
      <title>Git Error - Fatal: the Remote End Hung Up Unexpectedly</title>
      <link>https://sanjayregmi.com/posts/git-error-fatal-the-remote-end-hung-up-unexpectedly/</link>
      <pubDate>Tue, 04 Jun 2024 16:54:29 -0700</pubDate>
      
      <guid>https://sanjayregmi.com/posts/git-error-fatal-the-remote-end-hung-up-unexpectedly/</guid>
      <description>&lt;p&gt;When you push commits to git, you sometimes might get into this error. I got this when pushing hugo code into git.&lt;/p&gt;
&lt;code&gt;
git push -u origin main
Enumerating objects: 61, done.
Counting objects: 100% (61/61), done.
Delta compression using up to 4 threads
Compressing objects: 100% (45/45), done.
error: RPC failed; HTTP 400 curl 22 The requested URL returned error: 400
send-pack: unexpected disconnect while reading sideband packet
Writing objects: 100% (54/54), 2.07 MiB | 5.37 MiB/s, done.
Total 54 (delta 14), reused 0 (delta 0), pack-reused 0 (from 0)
fatal: the remote end hung up unexpectedly
&lt;/code&gt;
&lt;p&gt;This is caused by git buffer settings. Run:&lt;/p&gt;
&lt;code&gt;
git config http.postBuffer 524288000
&lt;/code&gt;
&lt;p&gt;Then run the &lt;code&gt; git push -u orgin main&lt;/code&gt; command. It should go through. More here: &lt;a href=&#34;https://stackoverflow.com/questions/15240815/git-fatal-the-remote-end-hung-up-unexpectedly&#34;&gt;https://stackoverflow.com/questions/15240815/git-fatal-the-remote-end-hung-up-unexpectedly&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;😤&lt;/p&gt;
&lt;div class=&#34;top-content&#34; style=&#34;text-align: center;&#34;&gt;
  &lt;a href=&#34;https://prasna.ca/contact&#34;&gt;[web]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.linkedin.com/company/prasna-it&#34;&gt;[in]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.facebook.com/prasnait&#34;&gt;[fb]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.instagram.com/prasna.ca&#34;&gt;[ig]&lt;/a&gt; ·
  &lt;a href=&#34;https://x.com/PrasnaIT&#34;&gt;[x]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.tiktok.com/@prasna.ca&#34;&gt;[tt]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.youtube.com/channel/UCbDEvFG_MxmAvLsTeG02S8Q&#34;&gt;[yt]&lt;/a&gt;
&lt;/div&gt;

</description>
    </item>
    
    
    
    <item>
      <title>What Is Being an Entrepreneur</title>
      <link>https://sanjayregmi.com/posts/what-is-being-an-entrepreneur/</link>
      <pubDate>Wed, 24 Apr 2024 20:50:55 -0700</pubDate>
      
      <guid>https://sanjayregmi.com/posts/what-is-being-an-entrepreneur/</guid>
      <description>&lt;p&gt;It&amp;rsquo;s been slightly over six months that I&amp;rsquo;ve been an entrepreneur for the first time in my life. During these months, I realize entrepreneurship is much more about you yourself than anything else.&lt;/p&gt;
&lt;p&gt;It&amp;rsquo;s about discipline, consistency.&lt;/p&gt;
&lt;p&gt;It&amp;rsquo;s about positivity, carrying it all the time, infecting others with it. And in return, being infected as well.&lt;/p&gt;
&lt;p&gt;It&amp;rsquo;s about being aware of those tiny little progressions, celebrating them, using them as fuel, for yet another day.&lt;/p&gt;
&lt;p&gt;It&amp;rsquo;s so much about you and so less about others. At least in these beginnings. Your dream. Your fascination. Your commitment.&lt;/p&gt;
&lt;p&gt;And then there are people. People you meet. Converse with. Discover.&lt;/p&gt;
&lt;p&gt;Beautiful, thoughtful, kind, generous people. People you&amp;rsquo;d not meet otherwise.&lt;/p&gt;
&lt;p&gt;They inspire. They energize you.&lt;/p&gt;
&lt;p&gt;The best part - they let you discover yourself more. Deeper.&lt;/p&gt;
&lt;p&gt;Your own self.&lt;/p&gt;
&lt;p&gt;🎀&lt;/p&gt;
&lt;div class=&#34;top-content&#34; style=&#34;text-align: center;&#34;&gt;
  &lt;a href=&#34;https://prasna.ca/contact&#34;&gt;[web]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.linkedin.com/company/prasna-it&#34;&gt;[in]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.facebook.com/prasnait&#34;&gt;[fb]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.instagram.com/prasna.ca&#34;&gt;[ig]&lt;/a&gt; ·
  &lt;a href=&#34;https://x.com/PrasnaIT&#34;&gt;[x]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.tiktok.com/@prasna.ca&#34;&gt;[tt]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.youtube.com/channel/UCbDEvFG_MxmAvLsTeG02S8Q&#34;&gt;[yt]&lt;/a&gt;
&lt;/div&gt;

</description>
    </item>
    
    
    
    <item>
      <title>How to Disable Internet Access for a Period of Time Every Day or On a Schedule Using Pfsense</title>
      <link>https://sanjayregmi.com/posts/how-to-disable-internet-access-for-a-period-of-time-every-day-or-ona-schedule-using-pfsense/</link>
      <pubDate>Mon, 22 Apr 2024 19:40:42 -0700</pubDate>
      
      <guid>https://sanjayregmi.com/posts/how-to-disable-internet-access-for-a-period-of-time-every-day-or-ona-schedule-using-pfsense/</guid>
      <description>&lt;p&gt;Say you want to disable internet access on a specific computer in your LAN/wifi between 11pm to 2am every day and you have the pfsense (&lt;a href=&#34;https://pfsense.org&#34;&gt;https://pfsense.org&lt;/a&gt;) firewall properly setup. Here are the steps:&lt;/p&gt;
&lt;div class=&#34;toc&#34;&gt;
  &lt;nav id=&#34;TableOfContents&#34;&gt;
  &lt;ol&gt;
    &lt;li&gt;&lt;a href=&#34;#assign-static-ip-to-the-machine&#34;&gt;Assign static IP to the machine&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&#34;#create-schedule&#34;&gt;Create schedule&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&#34;#create-an-alias-for-the-computer&#34;&gt;Create an alias for the computer&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&#34;#create-the-firewall-rule&#34;&gt;Create the firewall rule&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&#34;#save-and-apply-changes&#34;&gt;Save and Apply Changes&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&#34;#very-important---order-of-the-block-rule&#34;&gt;VERY IMPORTANT - Order of the block rule&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&#34;#test&#34;&gt;Test&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&#34;#notes&#34;&gt;Notes&lt;/a&gt;&lt;/li&gt;
  &lt;/ol&gt;
&lt;/nav&gt;
&lt;/div&gt;

&lt;h2 id=&#34;assign-static-ip-to-the-machine&#34;&gt;Assign static IP to the machine&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Login to pfsense dashboard &amp;gt; Status &amp;gt; DHCP Leases&lt;/li&gt;
&lt;li&gt;Find the current IP of the chosen machine&lt;/li&gt;
&lt;li&gt;Give is static IP by clicking on the first plus sign (light one) on the right.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;create-schedule&#34;&gt;Create schedule&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Log in to your pfSense web interface.&lt;/li&gt;
&lt;li&gt;Navigate to &amp;ldquo;Firewall&amp;rdquo; &amp;gt; &amp;ldquo;Schedules&amp;rdquo;.&lt;/li&gt;
&lt;li&gt;Click on the &amp;ldquo;+&amp;rdquo; button to add a new schedule.&lt;/li&gt;
&lt;li&gt;Define the schedule for blocking internet access from 11pm to 2am. You&amp;rsquo;ll need to add two times because one schedule does not go past the midnight. Test a few times and hit save.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;create-an-alias-for-the-computer&#34;&gt;Create an alias for the computer&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Go to &amp;ldquo;Firewall&amp;rdquo; &amp;gt; &amp;ldquo;Aliases&amp;rdquo;.&lt;/li&gt;
&lt;li&gt;Click on the &amp;ldquo;+&amp;rdquo; button to add a new alias.&lt;/li&gt;
&lt;li&gt;Create an alias for the specific computer&amp;rsquo;s IP address or MAC address. We&amp;rsquo;ll need this when setting up the firewall rule.&lt;/li&gt;
&lt;li&gt;You can actually add more than one IP in the alias field. Either separate them with a space or add them one by one by clicking on &amp;lsquo;save&amp;rsquo;.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;create-the-firewall-rule&#34;&gt;Create the firewall rule&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Go to &amp;ldquo;Firewall&amp;rdquo; &amp;gt; &amp;ldquo;Rules&amp;rdquo;.&lt;/li&gt;
&lt;li&gt;Select the appropriate interface (e.g., LAN) where the computer is connected.&lt;/li&gt;
&lt;li&gt;Click on the &amp;ldquo;Add&amp;rdquo; button to create a new firewall rule.&lt;/li&gt;
&lt;li&gt;Set the following parameters:
&lt;ul&gt;
&lt;li&gt;Action: Block&lt;/li&gt;
&lt;li&gt;Interface: LAN (or whichever interface is appropriate)&lt;/li&gt;
&lt;li&gt;Protocol: Any (or specific protocols if needed)&lt;/li&gt;
&lt;li&gt;Source: Single host or alias (select the alias you created for the computer)&lt;/li&gt;
&lt;li&gt;Destination: Any&lt;/li&gt;
&lt;li&gt;Description: Provide a description like &amp;ldquo;Block Internet Access during 11pm to 2am&amp;rdquo;&lt;/li&gt;
&lt;li&gt;Click on &amp;ldquo;Display advanced&amp;rdquo; and select the schedule you created earlier under &amp;ldquo;Schedule&amp;rdquo;.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;save-and-apply-changes&#34;&gt;Save and Apply Changes&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;After configuring the firewall rule, &amp;ldquo;Save&amp;rdquo; it.&lt;/li&gt;
&lt;li&gt;Apply the changes by clicking on the &amp;ldquo;Apply Changes&amp;rdquo; button at the top of the page.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;very-important---order-of-the-block-rule&#34;&gt;VERY IMPORTANT - Order of the block rule&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Ensure your block rule is BEFORE &amp;ldquo;default allow LAN to any rule&amp;rdquo; also called the &amp;ldquo;allow everyone&amp;rdquo; rule. Rules are processed top down so the block rules need to be applied BEFORE the allow rules.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;test&#34;&gt;Test&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Test if the rule works. To do a quick test, you can remove the schedule, apply and see if it works. This way, you can check the block rule immediately.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Note&lt;/strong&gt;: If you&amp;rsquo;ve installed TailScale (&lt;a href=&#34;https://tailscale.com&#34;&gt;https://tailscale.com&lt;/a&gt;) on the client computer to be blocked, the rule explained above might not work.&lt;/p&gt;
&lt;h2 id=&#34;notes&#34;&gt;Notes&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;You can copy the rules on the Firewall Rules page, create more aliases and add them separately. This is handy if you want to turn off internet in the Roku devices or smart TVs in the house, separately.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;⛱️&lt;/p&gt;
&lt;div class=&#34;top-content&#34; style=&#34;text-align: center;&#34;&gt;
  &lt;a href=&#34;https://prasna.ca/contact&#34;&gt;[web]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.linkedin.com/company/prasna-it&#34;&gt;[in]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.facebook.com/prasnait&#34;&gt;[fb]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.instagram.com/prasna.ca&#34;&gt;[ig]&lt;/a&gt; ·
  &lt;a href=&#34;https://x.com/PrasnaIT&#34;&gt;[x]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.tiktok.com/@prasna.ca&#34;&gt;[tt]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.youtube.com/channel/UCbDEvFG_MxmAvLsTeG02S8Q&#34;&gt;[yt]&lt;/a&gt;
&lt;/div&gt;

</description>
    </item>
    
    
    
    <item>
      <title>How to Develop Locally in Drupal and Host Static Files on your Website</title>
      <link>https://sanjayregmi.com/posts/how-to-develop-locally-in-drupal-and-host-static-files-on-your-website/</link>
      <pubDate>Sun, 14 Apr 2024 18:41:16 -0700</pubDate>
      
      <guid>https://sanjayregmi.com/posts/how-to-develop-locally-in-drupal-and-host-static-files-on-your-website/</guid>
      <description>&lt;h2 id=&#34;background&#34;&gt;Background&lt;/h2&gt;
&lt;p&gt;Say you have an old website on Drupal 7 with plugins that don&amp;rsquo;t work with the latest versions of Drupal. You now cannot migrate over to Drupal 9 or 10 without doing a lot of manual work and or losing the functionality of your current plugins. If your requirements are still fulfilled by the old Drupal 7 website, there&amp;rsquo;s a solution to keep using it.&lt;/p&gt;
&lt;div class=&#34;toc&#34;&gt;
  &lt;nav id=&#34;TableOfContents&#34;&gt;
  &lt;ol&gt;
    &lt;li&gt;&lt;a href=&#34;#background&#34;&gt;Background&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&#34;#summary-of-the-post-below&#34;&gt;Summary of the post below:&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&#34;#steps&#34;&gt;Steps&lt;/a&gt;
      &lt;ol&gt;
        &lt;li&gt;&lt;a href=&#34;#install-wsl2-with-ubuntu&#34;&gt;Install WSL2 with Ubuntu.&lt;/a&gt;&lt;/li&gt;
        &lt;li&gt;&lt;a href=&#34;#install-docker-and-ddev&#34;&gt;Install Docker and DDEV&lt;/a&gt;&lt;/li&gt;
        &lt;li&gt;&lt;a href=&#34;#install-drupal-project&#34;&gt;Install Drupal Project&lt;/a&gt;&lt;/li&gt;
        &lt;li&gt;&lt;a href=&#34;#migration-of-the-existing-drupal-7-site&#34;&gt;Migration of the existing Drupal 7 site&lt;/a&gt;&lt;/li&gt;
        &lt;li&gt;&lt;a href=&#34;#exporting-to-static-site&#34;&gt;Exporting to static site&lt;/a&gt;&lt;/li&gt;
      &lt;/ol&gt;
    &lt;/li&gt;
    &lt;li&gt;&lt;a href=&#34;#benefits-to-this-approach-of-hosting-a-website&#34;&gt;Benefits to this approach of hosting a website&lt;/a&gt;&lt;/li&gt;
  &lt;/ol&gt;
&lt;/nav&gt;
&lt;/div&gt;

&lt;h2 id=&#34;summary-of-the-post-below&#34;&gt;Summary of the post below:&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Install DDEV on WSL (Windows), then setup your Drupal 7 site inside DDEV (&lt;a href=&#34;https://ddev.com&#34;&gt;https://ddev.com&lt;/a&gt;).&lt;/li&gt;
&lt;li&gt;Migrate your existing Drupal site using Backup and Migrate Plugin (&lt;a href=&#34;https://www.drupal.org/project/backup_migrate)&#34;&gt;https://www.drupal.org/project/backup_migrate)&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Then use Static Generator plugin (&lt;a href=&#34;https://www.drupal.org/project/static&#34;&gt;https://www.drupal.org/project/static&lt;/a&gt;) to render static files and upload them to say Cloudflare Pages! (&lt;a href=&#34;https://pages.cloudflare.com&#34;&gt;https://pages.cloudflare.com&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This way, you can keep updating content on the Drupal 7 system without any fear of being hacked or corresponding software becoming obsolete while still maintaining the website.&lt;/p&gt;
&lt;p&gt;The software stack that makes it possible are WSL, Docker, DDEV and of course Drupal.&lt;/p&gt;
&lt;h2 id=&#34;steps&#34;&gt;Steps&lt;/h2&gt;
&lt;h3 id=&#34;install-wsl2-with-ubuntu&#34;&gt;Install WSL2 with Ubuntu.&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Just follow this tutorial - &lt;a href=&#34;https://www.drupal.org/docs/develop/local-server-setup/windows-development-environment/installing-drupal-with-ddev-in-wsl2-on-windows/installing-wsl2-ubuntu&#34;&gt;https://www.drupal.org/docs/develop/local-server-setup/windows-development-environment/installing-drupal-with-ddev-in-wsl2-on-windows/installing-wsl2-ubuntu&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;install-docker-and-ddev&#34;&gt;Install Docker and DDEV&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Follow this tutorial until &amp;ldquo;Keep DDEV up to date&amp;rdquo; heading - &lt;a href=&#34;https://www.drupal.org/docs/develop/local-server-setup/windows-development-environment/installing-drupal-with-ddev-in-wsl2-on-windows/installing-docker-ddev-drupal-in-wsl2&#34;&gt;https://www.drupal.org/docs/develop/local-server-setup/windows-development-environment/installing-drupal-with-ddev-in-wsl2-on-windows/installing-docker-ddev-drupal-in-wsl2&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;install-drupal-project&#34;&gt;Install Drupal Project&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Under &amp;ldquo;Install a Drupal Project&amp;rdquo; heading - run the following steps from the above tutorial:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;mkdir sites&lt;/li&gt;
&lt;li&gt;cd sites&lt;/li&gt;
&lt;li&gt;mkdir my-drupal7-site&lt;/li&gt;
&lt;li&gt;cd my-drupal7-site&lt;/li&gt;
&lt;li&gt;ddev config &amp;ndash;project-type=drupal7 &amp;ndash;docroot=web&lt;/li&gt;
&lt;li&gt;ddev start&lt;/li&gt;
&lt;li&gt;Now, ddev composer create drupal/recommended-project:9.5.11 will fail. So skip that. We&amp;rsquo;ll go manual from here.&lt;/li&gt;
&lt;li&gt;Open my-drupal7-site/.ddev/config.yaml in an editor. For Drupal 7, change the &amp;ldquo;php_version&amp;rdquo; to &amp;ldquo;7.0&amp;rdquo;. Save it.&lt;/li&gt;
&lt;li&gt;Download and unzip your version of Drupal from drupal.org (&lt;a href=&#34;https://www.drupal.org/docs/7/install/step-1-download-and-extract-drupal);&#34;&gt;https://www.drupal.org/docs/7/install/step-1-download-and-extract-drupal);&lt;/a&gt; use the &amp;ldquo;From the command line&amp;rdquo; instructions.&lt;/li&gt;
&lt;li&gt;After the extraction is complete, run &amp;lsquo;ddev launch&amp;rsquo; in the browser. Grab the URL and add /install.php to its end to start the install. The database part is already setup so all you have to do is setup the first user (admin) account.&lt;/li&gt;
&lt;li&gt;You now have a locally working Drupal site.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;migration-of-the-existing-drupal-7-site&#34;&gt;Migration of the existing Drupal 7 site&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Install Drupal Backup and Migrate plugin. Export the database.&lt;/li&gt;
&lt;li&gt;Install Drupal Backup and Migrate plugin on your DDEV instance. Restore from the SQL database from your existing Drupal site using the Backup and Migrate plugin.&lt;/li&gt;
&lt;li&gt;Now copy over the contents (all files and folders) of the existing Drupal site into the DDEV one.&lt;/li&gt;
&lt;li&gt;Your DDEV instance should now be a clone of the existing one.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Note&lt;/strong&gt;: If your existing Drupal site is less than 100MB gzipped, you can use the Backup and Migrate plugin to fully restore your existing website into DDEV.&lt;/p&gt;
&lt;h3 id=&#34;exporting-to-static-site&#34;&gt;Exporting to static site&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Follow this on your DDEV instance. (&lt;a href=&#34;https://sanjayregmi.com/posts/create-static-website-using-cloudflare-pages&#34;&gt;https://sanjayregmi.com/posts/create-static-website-using-cloudflare-pages&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;benefits-to-this-approach-of-hosting-a-website&#34;&gt;Benefits to this approach of hosting a website&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Security&lt;/strong&gt; Your CMS is not exposed to the internet, only static pages are loaded into your internet facing webserver.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Stop endless cycle of upgrade&lt;/strong&gt; You can keep using old software and why not if they&amp;rsquo;re serving your purpose!&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Cheaper hosting&lt;/strong&gt; You can now host your site on a much cheaper plan because it&amp;rsquo;s all static content. There are free hosting options like Cloudflare Pages(&lt;a href=&#34;https://sanjayregmi.com/posts/create-static-website-using-cloudflare-pages)&#34;&gt;https://sanjayregmi.com/posts/create-static-website-using-cloudflare-pages)&lt;/a&gt;, Netlify, Github, Vercel to name a few.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;💛&lt;/p&gt;
&lt;div class=&#34;top-content&#34; style=&#34;text-align: center;&#34;&gt;
  &lt;a href=&#34;https://prasna.ca/contact&#34;&gt;[web]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.linkedin.com/company/prasna-it&#34;&gt;[in]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.facebook.com/prasnait&#34;&gt;[fb]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.instagram.com/prasna.ca&#34;&gt;[ig]&lt;/a&gt; ·
  &lt;a href=&#34;https://x.com/PrasnaIT&#34;&gt;[x]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.tiktok.com/@prasna.ca&#34;&gt;[tt]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.youtube.com/channel/UCbDEvFG_MxmAvLsTeG02S8Q&#34;&gt;[yt]&lt;/a&gt;
&lt;/div&gt;

</description>
    </item>
    
    
    
    <item>
      <title>How to Get an &#39;A&#39; Rating From Qualys SSL Labs if Your DNS Is Cloudflare and You Use OpenLiteSpeed as Your Wordpress Web Server</title>
      <link>https://sanjayregmi.com/posts/how-to-get-an-a-rating-from-qualys-ssl-labs-if-your-dns-is-cloudflare-and-you-use-openlitespeed-as-your-wordpress-web-server/</link>
      <pubDate>Sun, 07 Apr 2024 17:43:31 -0700</pubDate>
      
      <guid>https://sanjayregmi.com/posts/how-to-get-an-a-rating-from-qualys-ssl-labs-if-your-dns-is-cloudflare-and-you-use-openlitespeed-as-your-wordpress-web-server/</guid>
      <description>&lt;p&gt;By default, when you setup a WordPress site using OpenLiteSpeed (&lt;a href=&#34;https://openlitespeed.org&#34;&gt;https://openlitespeed.org&lt;/a&gt;), you&amp;rsquo;ll get a &amp;ldquo;B&amp;rdquo; rating in Qualys SSL Labs SSL test at &lt;a href=&#34;https://www.ssllabs.com/ssltest/&#34;&gt;https://www.ssllabs.com/ssltest/&lt;/a&gt;. And even if you setup your minimum TLS version on Cloudflare to be TLS 1.2, Qualys reports your website still uses TLS 1.1. The following steps allow you to fix the certificate issue and get an &amp;ldquo;A&amp;rdquo; rating.&lt;/p&gt;
&lt;h2 id=&#34;steps&#34;&gt;Steps&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Ensure you&amp;rsquo;re setup to use TLS 1.2 as the minimum version on CloudFlare. Go to your domain name in CloudFlare &amp;ndash;&amp;gt; SSL/TLS &amp;ndash;&amp;gt; Edge Certificates &amp;ndash;&amp;gt; Minimum TLS Version &amp;ndash;&amp;gt; TLS1.2.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;SSH to your server where you website is hosted. Open the OpenLiteSpeed port by typing &lt;code&gt; sudo ufw allow from YOUR_IP to any port 7080&lt;/code&gt;. (This command works for Ubuntu.)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Go to the OpenLiteSpeed Server browser at https://YOUR_SSH_SERVER_IP:7080 from your own machine. Login.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Go to &amp;ldquo;Virtual Hosts&amp;rdquo;, select your webserver &amp;ndash;&amp;gt; SSL &amp;ndash;&amp;gt; SSL Protocol. Edit to add these:
TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256:TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Turn on Enable ECDH Key Exchange and Enable DH Key Exchange ().&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Save.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Graceful Restart.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Run SSL labs test. Your site should get an &amp;ldquo;A&amp;rdquo; now, instead of the original &amp;ldquo;B&amp;rdquo;.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;post-work-and-cleanup&#34;&gt;Post work and cleanup&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Remove the firewall rule now by typing &lt;code&gt; &amp;ldquo;sudo ufw delete allow from YOUR_IP to any port 7080&amp;rdquo;&lt;/code&gt;. (This command works for Ubuntu.)&lt;/li&gt;
&lt;li&gt;Logout of https://YOUR_SSH_SERVER_IP:7080&lt;/li&gt;
&lt;li&gt;Check if there are any other ports open by running &lt;code&gt;sudo ufw status&lt;/code&gt; on the terminal of your SSH server. Apart from port 80 and 443, there should not be any.&lt;/li&gt;
&lt;li&gt;Logout of your SSH server.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;🔵&lt;/p&gt;
&lt;div class=&#34;top-content&#34; style=&#34;text-align: center;&#34;&gt;
  &lt;a href=&#34;https://prasna.ca/contact&#34;&gt;[web]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.linkedin.com/company/prasna-it&#34;&gt;[in]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.facebook.com/prasnait&#34;&gt;[fb]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.instagram.com/prasna.ca&#34;&gt;[ig]&lt;/a&gt; ·
  &lt;a href=&#34;https://x.com/PrasnaIT&#34;&gt;[x]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.tiktok.com/@prasna.ca&#34;&gt;[tt]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.youtube.com/channel/UCbDEvFG_MxmAvLsTeG02S8Q&#34;&gt;[yt]&lt;/a&gt;
&lt;/div&gt;

</description>
    </item>
    
    
    
    <item>
      <title>How to Install Pfsense Firewall With an Existing Netgear MR60 Mesh Wifi With Two Access Points MS60s</title>
      <link>https://sanjayregmi.com/posts/how-to-install-pfsense-firewall-with-an-existing-netgear-mr60-mesh-wifi-with-two-access-points-ms60s/</link>
      <pubDate>Mon, 01 Apr 2024 13:12:43 -0700</pubDate>
      
      <guid>https://sanjayregmi.com/posts/how-to-install-pfsense-firewall-with-an-existing-netgear-mr60-mesh-wifi-with-two-access-points-ms60s/</guid>
      <description>&lt;p&gt;I&amp;rsquo;ve always heard of pfsense as a great opensource firewall with a nice list of features. We have an MR60 with two APs (MS60) for a total of three access points and its a great piece of hardware providing good wireless through the two stories. I wanted to control internet access and MR60 has a module to do that but only for a yearly subscription. I thought this was a perfect time to setup pfsense so this blog is about installing pfsense where there&amp;rsquo;s an existing Netgear MR60 with two MS60s.&lt;/p&gt;
&lt;h2 id=&#34;table-of-content&#34;&gt;Table of Content&lt;/h2&gt;
&lt;div class=&#34;toc&#34;&gt;
  &lt;nav id=&#34;TableOfContents&#34;&gt;
  &lt;ol&gt;
    &lt;li&gt;&lt;a href=&#34;#table-of-content&#34;&gt;Table of Content&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&#34;#required-hardware&#34;&gt;Required Hardware&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&#34;#software-installation&#34;&gt;Software Installation&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&#34;#first-configuration-of-pfsense&#34;&gt;First configuration of pfsense&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&#34;#connect-pfsense-hardware-to-your-network&#34;&gt;Connect pfsense hardware to your network&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&#34;#re-setup-mr60&#34;&gt;Re-setup MR60&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&#34;#use-pfsense-as-the-only-dhcp-server&#34;&gt;Use pfsense as the only DHCP server&lt;/a&gt;&lt;/li&gt;
  &lt;/ol&gt;
&lt;/nav&gt;
&lt;/div&gt;

&lt;h2 id=&#34;required-hardware&#34;&gt;Required Hardware&lt;/h2&gt;
&lt;p&gt;First the hardware. I found this cool machine, all metal, no fan (QOTOM Q730G5 Barebone Mini PC - Intel Quad-core J4105, AES-NI, 5 Intel 2.5G LAN, 10Watts, Industrial Mini PC Firewall Gateway Router Q730G5 Barebone, No RAM, No SSD) - &lt;a href=&#34;https://amzn.to/49CKUXZ)&#34;&gt;https://amzn.to/49CKUXZ)&lt;/a&gt;. I could have used an old machine but I didn&amp;rsquo;t want to keep a machine on 24/7 that consumed upwards of 80 watts. The TDP for this machine is 10 watts, runs without any sound (I loved that part!) and is just perfect for something like a firewall.&lt;/p&gt;
&lt;p&gt;Since this is a baremetal machine, I bought cheap 16GB laptop module (&lt;a href=&#34;https://amzn.to/4aA0g0H)&#34;&gt;https://amzn.to/4aA0g0H)&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I already had an SSD but it takes NVMEs are well. There&amp;rsquo;s no place to screw in the SSD  but I just connected it (one SATA connector is available in the machine) and put it on the top of the board and screwed the whole thing back.&lt;/p&gt;
&lt;h2 id=&#34;software-installation&#34;&gt;Software Installation&lt;/h2&gt;
&lt;p&gt;Get pfsense from &lt;a href=&#34;https://www.pfsense.org/download/&#34;&gt;https://www.pfsense.org/download/&lt;/a&gt;, 64 bit. I downloaded the ISO, unzipped it using WinRAR and saved it in Ventoy Flashdisk (&lt;a href=&#34;https://www.ventoy.net&#34;&gt;https://www.ventoy.net&lt;/a&gt;).&lt;/p&gt;
&lt;p&gt;Connect your keyboard, a monitor to the machine. It has HDMI for display and several USB 2 and 3 ports. Press F11 to choose to boot from USB.&lt;/p&gt;
&lt;p&gt;Select all default options and reboot. If you need help, go through this. &lt;a href=&#34;https://docs.netgate.com/pfsense/en/latest/install/download-installer-image.html&#34;&gt;https://docs.netgate.com/pfsense/en/latest/install/download-installer-image.html&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&#34;first-configuration-of-pfsense&#34;&gt;First configuration of pfsense&lt;/h2&gt;
&lt;p&gt;Upon reboot, you need to select the WAN port and at least one LAN port. Follow instructions in the prompts. Mine didn&amp;rsquo;t detect any ports in the device. So I did manual input and provided the names for WAN (igc0 for WAN) and LAN (igc1 for LAN). I used an ethernet port from my existing LAN to connect to the WAN port (Yes, you can do that!) to setup the WAN port.&lt;/p&gt;
&lt;p&gt;Upon reboot, connect your LAN port to your computer and make sure you can access 192.168.1.1, the pfsense portal AND access the internet via that connection, provided you&amp;rsquo;ve connected the WAN port to your existing router. If both work out, you&amp;rsquo;re now ready for the next step.&lt;/p&gt;
&lt;p&gt;I spent a long time to get this basic setup completed. Here&amp;rsquo;s what I&amp;rsquo;ve learned. If upon reboot, if you cannot access 192.168.1.1, there&amp;rsquo;s an issue with your setup. Use the &amp;lsquo;reset&amp;rsquo; option in the pfsense menu to reset the setup and start again. This will just reset the configs and and you can reconfigure.&lt;/p&gt;
&lt;h2 id=&#34;connect-pfsense-hardware-to-your-network&#34;&gt;Connect pfsense hardware to your network&lt;/h2&gt;
&lt;p&gt;Unhook the pfsense from your lab, take it to where your home network switches/internet box is. Unhook the ethernet to MR60 (we&amp;rsquo;ll set this up later). Hook pfsense so that the WAN (igc0) port is connected to the data port in your ONT or your internet modem. The LAN(igc1) port should now be connected to your switch from where the whole of the house gets their internet.&lt;/p&gt;
&lt;p&gt;Check all connected devices have internet.&lt;/p&gt;
&lt;h2 id=&#34;re-setup-mr60&#34;&gt;Re-setup MR60&lt;/h2&gt;
&lt;p&gt;Bring the disconnected MR60 to your lab. Reset it. (Press the reset button until it starts blinking) After reset is complete, connect it to your lab&amp;rsquo;s switch that has internet connectivity. Yes, you&amp;rsquo;ll have to reset the MR60 so you can set it up again because you won&amp;rsquo;t be able to reconnect it to the network just like that. If you do, you&amp;rsquo;ll have weird connectivity issues.&lt;/p&gt;
&lt;p&gt;Now setup the MR60 as a new setup using the Nighthawk app on your phone.&lt;/p&gt;
&lt;p&gt;After setup, all your wifi devices will connected to the MR60. However, they&amp;rsquo;ll all have 10.x.x.x IPs since MR60 will run its own DHCP by default. If you&amp;rsquo;re cool with it, you can now stop and reconnect the MR60 to your main router. I wanted one DHCP server and all IPs to be 192.x.x.x so I did this one more step.&lt;/p&gt;
&lt;h2 id=&#34;use-pfsense-as-the-only-dhcp-server&#34;&gt;Use pfsense as the only DHCP server&lt;/h2&gt;
&lt;p&gt;Go to routerlogin.net on your browser, login. Go to &amp;ldquo;Advanced&amp;rdquo;&amp;ndash;&amp;gt; Wireless AP &amp;ndash;&amp;gt; Enable AP Mode &amp;ndash;&amp;gt; Save. Let MR60 reboot. After reboot, all your wireless devices will be on the same network as your wired machines which is 192.x.x.x.&lt;/p&gt;
&lt;p&gt;🔵&lt;/p&gt;
&lt;div class=&#34;top-content&#34; style=&#34;text-align: center;&#34;&gt;
  &lt;a href=&#34;https://prasna.ca/contact&#34;&gt;[web]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.linkedin.com/company/prasna-it&#34;&gt;[in]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.facebook.com/prasnait&#34;&gt;[fb]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.instagram.com/prasna.ca&#34;&gt;[ig]&lt;/a&gt; ·
  &lt;a href=&#34;https://x.com/PrasnaIT&#34;&gt;[x]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.tiktok.com/@prasna.ca&#34;&gt;[tt]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.youtube.com/channel/UCbDEvFG_MxmAvLsTeG02S8Q&#34;&gt;[yt]&lt;/a&gt;
&lt;/div&gt;

</description>
    </item>
    
    
    
    <item>
      <title>Replacement for Ssh - Mosh (Mobile Shell) Is the Modern Secure Shell - use it starting today</title>
      <link>https://sanjayregmi.com/posts/replacement-for-ssh-mosh-mobile-shell-is-the-modern-secure-shell/</link>
      <pubDate>Tue, 12 Mar 2024 08:10:43 -0700</pubDate>
      
      <guid>https://sanjayregmi.com/posts/replacement-for-ssh-mosh-mobile-shell-is-the-modern-secure-shell/</guid>
      <description>&lt;p&gt;If you are a regular user of ssh, you&amp;rsquo;re aware of some of its issues:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;ssh breaks when there&amp;rsquo;s a disconnection and it doesn&amp;rsquo;t reconnect. I use tmux as a stopgap so I can go back to what I was doing.&lt;/li&gt;
&lt;li&gt;typing on ssh terminal when the remote server is faraway is downright painful becuase the response times are so slow. One has to wait for the characters to be acknowledged by the server.&lt;/li&gt;
&lt;li&gt;and when that time you want to hit a CTRL + C becuase you ran the RSYNC command wrong, it doesn&amp;rsquo;t accept Control C in time. Worse, the SSH terminal then breaks down.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Enter Mosh and it solves all the said problems and some more. It allows for:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;roaming while you&amp;rsquo;re connected to the server (fascinating!)&lt;/li&gt;
&lt;li&gt;there&amp;rsquo;s no lag when typing!&lt;/li&gt;
&lt;li&gt;you can put your laptop to sleep and it reconnects when you wake it up!&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Now you do have to install ssh, it runs on top of ssh but its a beautiful experience. You&amp;rsquo;ll never have to do ssh &lt;a href=&#34;mailto:root@foo.bar&#34;&gt;root@foo.bar&lt;/a&gt;, you&amp;rsquo;ll do mosh &lt;a href=&#34;mailto:root@foo.bar&#34;&gt;root@foo.bar&lt;/a&gt;. Install it and run it today. Go to &lt;a href=&#34;https://mosh.org/&#34;&gt;https://mosh.org/&lt;/a&gt; to learn more, setup and install. And if you&amp;rsquo;re like me, don&amp;rsquo;t miss this 10 min video where one of the creators explains it all in ten minutes. Kudos to Keith Winstein and Hari Balakrishnan!&lt;/p&gt;

&lt;div style=&#34;position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;&#34;&gt;
  &lt;iframe src=&#34;https://www.youtube.com/embed/XsIxNYl0oyU&#34; style=&#34;position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;&#34; allowfullscreen title=&#34;YouTube Video&#34;&gt;&lt;/iframe&gt;
&lt;/div&gt;

&lt;p&gt;🔵&lt;/p&gt;
&lt;div class=&#34;top-content&#34; style=&#34;text-align: center;&#34;&gt;
  &lt;a href=&#34;https://prasna.ca/contact&#34;&gt;[web]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.linkedin.com/company/prasna-it&#34;&gt;[in]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.facebook.com/prasnait&#34;&gt;[fb]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.instagram.com/prasna.ca&#34;&gt;[ig]&lt;/a&gt; ·
  &lt;a href=&#34;https://x.com/PrasnaIT&#34;&gt;[x]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.tiktok.com/@prasna.ca&#34;&gt;[tt]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.youtube.com/channel/UCbDEvFG_MxmAvLsTeG02S8Q&#34;&gt;[yt]&lt;/a&gt;
&lt;/div&gt;

</description>
    </item>
    
    
    
    <item>
      <title>Agriculture Drones in Greater Vancouver Region</title>
      <link>https://sanjayregmi.com/posts/agriculture-drones-in-the-lower-mainland-vancouver/</link>
      <pubDate>Wed, 21 Feb 2024 22:42:19 -0800</pubDate>
      
      <guid>https://sanjayregmi.com/posts/agriculture-drones-in-the-lower-mainland-vancouver/</guid>
      <description>&lt;p&gt;A month ago at the &lt;a href=&#34;https://tradexbc.com/&#34;&gt;Tradex&lt;/a&gt; in Abbotsford did I see drones being marketed for use in agriculture in the lower mainland. I thought drones for agriculture were a cool modern disruption because it would be so much cheaper to fly an automated drone than to own and fly little airplanes with pilots or huge (and costly) sprayer machines that need to be driven on land. I also thought it would be a good thing for the survival of the business when it goes from retiring parents to their kids - drones are something that the kids are growing up with, are familiar and excited about, while many might not want to touch a tractor! I also heard that there were regulations in place that obstructed the full scale use of  drones and that the drone companies were fighting with the government over it.&lt;/p&gt;
&lt;p&gt;It&amp;rsquo;s time countries like Canada understand the shifts in adoption of technology and make it much easier and faster for the farmers to use them rather than obstruct them. Just like many things today, Drones are probably our future, let&amp;rsquo;s adopt them and figure how best we can add value rather than delay or block them.&lt;/p&gt;
&lt;p&gt;✈️&lt;/p&gt;
&lt;div class=&#34;top-content&#34; style=&#34;text-align: center;&#34;&gt;
  &lt;a href=&#34;https://prasna.ca/contact&#34;&gt;[web]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.linkedin.com/company/prasna-it&#34;&gt;[in]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.facebook.com/prasnait&#34;&gt;[fb]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.instagram.com/prasna.ca&#34;&gt;[ig]&lt;/a&gt; ·
  &lt;a href=&#34;https://x.com/PrasnaIT&#34;&gt;[x]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.tiktok.com/@prasna.ca&#34;&gt;[tt]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.youtube.com/channel/UCbDEvFG_MxmAvLsTeG02S8Q&#34;&gt;[yt]&lt;/a&gt;
&lt;/div&gt;

</description>
    </item>
    
    
    
    <item>
      <title>Rysnc Fails When Copying Files With Tilde: rsync: [sender] fstat failed: No such file or directory</title>
      <link>https://sanjayregmi.com/posts/rysnc-fails-when-copying-files-with-tilde/</link>
      <pubDate>Wed, 21 Feb 2024 21:58:08 -0800</pubDate>
      
      <guid>https://sanjayregmi.com/posts/rysnc-fails-when-copying-files-with-tilde/</guid>
      <description>&lt;p&gt;Rsync Error:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;send_files(71922, /source/TQR6~B)&lt;/code&gt;&lt;br&gt;
&lt;code&gt;rsync: [sender] fstat failed: No such file or directory (2) &lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Trying to rsync between two different machines, I found rsync fails when it finds files that have ~ (tilde) in their filenames. I initially thought this was an issue specific to copying from a Samba Share to FreeBSD zpool. I couldn&amp;rsquo;t solve the issue entirely but figured escaping the awful tilde was a way to finish copying without rsync crashing. Here&amp;rsquo;s the command:&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-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;rysnc -a --exclude&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;\*~\*&amp;#39;&lt;/span&gt;/source /destination
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;💢
&lt;div class=&#34;top-content&#34; style=&#34;text-align: center;&#34;&gt;
  &lt;a href=&#34;https://prasna.ca/contact&#34;&gt;[web]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.linkedin.com/company/prasna-it&#34;&gt;[in]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.facebook.com/prasnait&#34;&gt;[fb]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.instagram.com/prasna.ca&#34;&gt;[ig]&lt;/a&gt; ·
  &lt;a href=&#34;https://x.com/PrasnaIT&#34;&gt;[x]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.tiktok.com/@prasna.ca&#34;&gt;[tt]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.youtube.com/channel/UCbDEvFG_MxmAvLsTeG02S8Q&#34;&gt;[yt]&lt;/a&gt;
&lt;/div&gt;
&lt;/p&gt;
</description>
    </item>
    
    
    
    <item>
      <title>Unlocking FreeBSD&#39;s Potential: Learn, Use and Elevate Your Experience with Generative AI</title>
      <link>https://sanjayregmi.com/posts/freebsd-with-chatgpt/</link>
      <pubDate>Sun, 18 Feb 2024 20:26:34 -0800</pubDate>
      
      <guid>https://sanjayregmi.com/posts/freebsd-with-chatgpt/</guid>
      <description>&lt;p&gt;The benefits of FreeBSD are numerous. (Just ask chatgpt!). For me, its a very stable system, one that runs on any hardware, old and new, installs very quickly, configurations are in text and the pkg system that installs extra software is simple and powerful. But for a long time, anyone wanting to setup a home server or a VM to try with had to read lots and practice lots and even after practice, if you forget the commands, which happens when you use it infrequently, you have to google feverishly and many a times, the results the search engine finds might not be correct or actually be wrong. Enter ChatGPT and generative AI and things have changed drastically, for the good!&lt;/p&gt;
&lt;p&gt;You can now setup a system, configure it, install GUI of your choice, set it up as a Samba Server or connect with your NAS box, setup cron jobs for backups, install the ZFS filesystem adding multiple hard disks and a whole lot more. All you need to do is ask chatGPT when stuck and it&amp;rsquo;ll generally punch out correct answers or answers that need just a bit of tweaking. This is a boon to the home tinker and those who like to try something different than a Windows machine or an Ubuntu box.&lt;/p&gt;
&lt;p&gt;Next time, you get hold of an old piece of hardware, convert it to your server, install FreeBSD and enjoy the beauty of setting it up to the way you like by getting help from ChatGPT.&lt;/p&gt;
&lt;p&gt;Some ideas for the FreeBSD home server:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Run cron, backup your websites on a regular basis using wget, cron.&lt;/li&gt;
&lt;li&gt;rysnc with your NAS server so you have two copies of your most valauble data.&lt;/li&gt;
&lt;li&gt;Use rclone and cron to upload your most important data to backblaze B2 using their free tier.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://sanjayregmi.com/posts/how-to-install-tailscale-on-freebsd/&#34;&gt;Install tailscale&lt;/a&gt; and access your FreeBSD server from anywhere in the world.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://sanjayregmi.com/posts/how-to-read-ide-hard-disk-formatted-with-ntfs-on-freebsd/&#34;&gt;Connect all sorts of old hard drives&lt;/a&gt; that you&amp;rsquo;ve collected over the years, parition with ZFS (just a single command is all that is needed!) and use them as backup drives to copy your data in multiple places.&lt;/li&gt;
&lt;li&gt;Configure X Forwarding with SSH so you can if required run programs that need GUI (for example firebox)&lt;/li&gt;
&lt;li&gt;Enjoy the simplicity and super fast response times of lynx and elinks when browsing the internet.&lt;/li&gt;
&lt;li&gt;SSH from any other machine in the house and find your projects, work on them from the same machine.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://sanjayregmi.com/posts/hugo-freebsd/&#34;&gt;Use hugo to setup your website&lt;/a&gt; and create posts on your freeBSD machine.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;What are some of the tasks you do on your FreeBSD server?! What are you own experiences using ChatGPT for answers to FreeBSD commands and questions? &lt;a href=&#34;https://sanjayregmi.com/about&#34;&gt;Please share&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;PS: And if you&amp;rsquo;re wondering how you can start with FreeBSD, &lt;a href=&#34;https://sanjayregmi.com/posts/configure-freebsd-on-intel/&#34;&gt;here&amp;rsquo;s the first step&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;🎵&lt;/p&gt;
&lt;div class=&#34;top-content&#34; style=&#34;text-align: center;&#34;&gt;
  &lt;a href=&#34;https://prasna.ca/contact&#34;&gt;[web]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.linkedin.com/company/prasna-it&#34;&gt;[in]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.facebook.com/prasnait&#34;&gt;[fb]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.instagram.com/prasna.ca&#34;&gt;[ig]&lt;/a&gt; ·
  &lt;a href=&#34;https://x.com/PrasnaIT&#34;&gt;[x]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.tiktok.com/@prasna.ca&#34;&gt;[tt]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.youtube.com/channel/UCbDEvFG_MxmAvLsTeG02S8Q&#34;&gt;[yt]&lt;/a&gt;
&lt;/div&gt;

</description>
    </item>
    
    
    
    <item>
      <title>How to Read IDE Hard Disk Formatted With NTFS on FreeBSD</title>
      <link>https://sanjayregmi.com/posts/how-to-read-ide-hard-disk-formatted-with-ntfs-on-freebsd/</link>
      <pubDate>Sat, 17 Feb 2024 22:24:42 -0800</pubDate>
      
      <guid>https://sanjayregmi.com/posts/how-to-read-ide-hard-disk-formatted-with-ntfs-on-freebsd/</guid>
      <description>&lt;p&gt;I came across one of my first hard disks when home so I took it out and brought it with me to copy the data out. It was an IDE HD so I bought a cheap IDE to SATA adapter and connected it to my FreeBSD machine to copy the data. (Feeding the power directly from the motherboard&amp;rsquo;s molex connector was more stable for the old hard drive.) Here&amp;rsquo;s the steps that worked for me.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Run &lt;code&gt; pkg install fusefs-ntfs &lt;/code&gt; to install the NTFS read/write module.&lt;/li&gt;
&lt;li&gt;Run &lt;code&gt;echo &amp;lsquo;fuse_load=&amp;ldquo;YES&amp;rdquo;&amp;rsquo; &amp;raquo; /boot/loader.conf&lt;/code&gt; if needed to load the NTFS module at boot time, every time.&lt;/li&gt;
&lt;li&gt;Create a mount point, &lt;code&gt;mkdir -p /mnt/ntfs&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Run &lt;code&gt;geom disk list&lt;/code&gt; to find the name of the disk. Say it is ada0.&lt;/li&gt;
&lt;li&gt;Run &lt;code&gt;fdisk ada0&lt;/code&gt; to see which partition is NTFS formatted. In my case, it was the third partition.&lt;/li&gt;
&lt;li&gt;Run &lt;code&gt;ntfs-3g /dev/sda1 /mnt/ntfs&lt;/code&gt; to load the NTFS folder. Note ada0 is sda1. In my case, it complained of an unclean file but the partition was mounted read-only. Great for copying over the data!&lt;/li&gt;
&lt;li&gt;If there are paritions in FAT32, run &lt;code&gt;mount_msdosfs /dev/da0s1 /mnt/fat32&lt;/code&gt; where da0s1 is ada0 and partition 1 and /mnt/fat32 is the mount point provided its been created earlier.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;💪&lt;/p&gt;
&lt;div class=&#34;top-content&#34; style=&#34;text-align: center;&#34;&gt;
  &lt;a href=&#34;https://prasna.ca/contact&#34;&gt;[web]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.linkedin.com/company/prasna-it&#34;&gt;[in]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.facebook.com/prasnait&#34;&gt;[fb]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.instagram.com/prasna.ca&#34;&gt;[ig]&lt;/a&gt; ·
  &lt;a href=&#34;https://x.com/PrasnaIT&#34;&gt;[x]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.tiktok.com/@prasna.ca&#34;&gt;[tt]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.youtube.com/channel/UCbDEvFG_MxmAvLsTeG02S8Q&#34;&gt;[yt]&lt;/a&gt;
&lt;/div&gt;

</description>
    </item>
    
    
    
    <item>
      <title>ZFS: unsupported feature: com.klarasystems:vdev_zaps_v2</title>
      <link>https://sanjayregmi.com/posts/how-to-resolve-zfs-unsupported-feature-com.klarasystems-vdev_zaps_v2/</link>
      <pubDate>Fri, 16 Feb 2024 21:12:43 -0800</pubDate>
      
      <guid>https://sanjayregmi.com/posts/how-to-resolve-zfs-unsupported-feature-com.klarasystems-vdev_zaps_v2/</guid>
      <description>&lt;p&gt;Note of caution:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Read the FreBSD Release Notes carefully at &lt;a href=&#34;https://www.freebsd.org/releases/14.0R/relnotes/&#34;&gt;https://www.freebsd.org/releases/14.0R/relnotes/&lt;/a&gt; especially the section called &amp;ldquo;Upgrading from Previous Releases of FreeBSD&amp;rdquo;.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;If you recently upgraded to FreeBSD 14 but you get the above error displayed before the beastie logo (see image below), here&amp;rsquo;s a solution for those with the boot loader in the MBR and that use the GPT partition scheme.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;First figure if your machine bios is efi or mbr by running &lt;code&gt;efibootmanager -v&lt;/code&gt;. If yours is not efi, the message will be &amp;ldquo;efibootmgr: efi variables not supported on this system. root? kldload efirt?&amp;rdquo;&lt;/li&gt;
&lt;li&gt;Run &lt;code&gt;gpart show&lt;/code&gt; and note the disk (ada0, ada1) on which your MBR is written into. We&amp;rsquo;ll assume its ada0 for the next command below.&lt;/li&gt;
&lt;li&gt;Now run &lt;code&gt;gpart bootcode -b /boot/pmbr -p /boot/gptzfsboot -i 1 ada0&lt;/code&gt;, where ada0 is your disk.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Running anything like the above on your freebsd box might cause loss of data. Please exercise caution.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://sanjayregmi.com/images/zfs-unsupported-feature.jpg&#34; alt=&#34;&#34;&gt;&lt;/p&gt;
&lt;div class=&#34;top-content&#34; style=&#34;text-align: center;&#34;&gt;
  &lt;a href=&#34;https://prasna.ca/contact&#34;&gt;[web]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.linkedin.com/company/prasna-it&#34;&gt;[in]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.facebook.com/prasnait&#34;&gt;[fb]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.instagram.com/prasna.ca&#34;&gt;[ig]&lt;/a&gt; ·
  &lt;a href=&#34;https://x.com/PrasnaIT&#34;&gt;[x]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.tiktok.com/@prasna.ca&#34;&gt;[tt]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.youtube.com/channel/UCbDEvFG_MxmAvLsTeG02S8Q&#34;&gt;[yt]&lt;/a&gt;
&lt;/div&gt;

</description>
    </item>
    
    
    
    <item>
      <title>How to Install Tailscale on FreeBSD</title>
      <link>https://sanjayregmi.com/posts/how-to-install-tailscale-on-freebsd/</link>
      <pubDate>Thu, 15 Feb 2024 22:33:23 -0800</pubDate>
      
      <guid>https://sanjayregmi.com/posts/how-to-install-tailscale-on-freebsd/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;https://tailscale.com&#34;&gt;Tailscale.com&lt;/a&gt;&amp;rsquo;s download page doesn&amp;rsquo;t list if its available for FreeBSD. But it does work on FreeBSD (tested on Release 14). Here&amp;rsquo;s how:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Install the package: &lt;code&gt;pkg install tailscale&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Edit &lt;code&gt;/etc/rc.conf&lt;/code&gt; to add &lt;code&gt;tailscaled_enable=&amp;quot;YES&amp;quot;&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Run &lt;code&gt;service tailscaled start&lt;/code&gt;. If you get an error, reboot.&lt;/li&gt;
&lt;li&gt;After reboot, run &lt;code&gt;tailscale login&lt;/code&gt;. Grab the url, copy paste in a browser and approve the connection.&lt;/li&gt;
&lt;li&gt;You can now ssh into the machine from another &amp;rsquo;tailscaled&amp;rsquo; machine from within your LAN or outside your home/office.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;how-to-update-tailscale&#34;&gt;How to update Tailscale&lt;/h2&gt;
&lt;p&gt;Once installed, when you run the command &lt;code&gt;tailscale&lt;/code&gt; on FreeBSD as root, you get a list of all the commands. Use &lt;code&gt;tailscale update&lt;/code&gt; to update.&lt;/p&gt;
&lt;h2 id=&#34;key-expiry&#34;&gt;Key Expiry&lt;/h2&gt;
&lt;p&gt;You can choose to disable key expiry via Tailscale portal.&lt;/p&gt;
&lt;h2 id=&#34;the-ssh-switch&#34;&gt;The SSH switch&lt;/h2&gt;
&lt;p&gt;Run tailscale like this:
&lt;code&gt;tailscale set --ssh&lt;/code&gt;
for passwordless ssh logins all managed by tailscale. You only need to run this command once. The beauty of this approach is that you can disable ssh altogether on the system by removing ssh startup from rc.conf. It&amp;rsquo;s actually safer this way. &lt;a href=&#34;https://tailscale.com/kb/1193/tailscale-ssh&#34;&gt;Longread is available here&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;small&gt;Last updated: 04 Jan 2026&lt;/small&gt;&lt;/p&gt;
&lt;p&gt;💃
&lt;div class=&#34;top-content&#34; style=&#34;text-align: center;&#34;&gt;
  &lt;a href=&#34;https://prasna.ca/contact&#34;&gt;[web]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.linkedin.com/company/prasna-it&#34;&gt;[in]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.facebook.com/prasnait&#34;&gt;[fb]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.instagram.com/prasna.ca&#34;&gt;[ig]&lt;/a&gt; ·
  &lt;a href=&#34;https://x.com/PrasnaIT&#34;&gt;[x]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.tiktok.com/@prasna.ca&#34;&gt;[tt]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.youtube.com/channel/UCbDEvFG_MxmAvLsTeG02S8Q&#34;&gt;[yt]&lt;/a&gt;
&lt;/div&gt;
&lt;/p&gt;
</description>
    </item>
    
    
    
    <item>
      <title>Create Your Own Secure Network Accessible Over the Internet Using Tailscale</title>
      <link>https://sanjayregmi.com/posts/create-your-own-secure-network-accessible-over-the-internet-using-tailscale/</link>
      <pubDate>Sat, 10 Feb 2024 22:18:07 -0800</pubDate>
      
      <guid>https://sanjayregmi.com/posts/create-your-own-secure-network-accessible-over-the-internet-using-tailscale/</guid>
      <description>&lt;p&gt;It&amp;rsquo;s 2024 and there&amp;rsquo;s a fantastic tool available that can connect Windows, Mac, Linux, BSD machines together into a single network. Of course, that&amp;rsquo;s possible using samba, ssh, nfs or a whole range of other tools but &lt;a href=&#34;https://tailscale.com&#34;&gt;tailscale&lt;/a&gt; makes the process super easy and very quick. And for upto three users, you can have a network of upto one hundred machines, free!&lt;/p&gt;
&lt;p&gt;And for those who&amp;rsquo;re thinking where to use it, here&amp;rsquo;s a quick use case. If you own multiple machines at home (spouse and kids), managing them will be a whole lot easier if you connect them into one network. Interested? Here&amp;rsquo;s &lt;a href=&#34;https://tailscale.com/kb/1017/install#need-some-inspiration&#34;&gt;a quick instruction with video&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;🏃&lt;/p&gt;
&lt;div class=&#34;top-content&#34; style=&#34;text-align: center;&#34;&gt;
  &lt;a href=&#34;https://prasna.ca/contact&#34;&gt;[web]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.linkedin.com/company/prasna-it&#34;&gt;[in]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.facebook.com/prasnait&#34;&gt;[fb]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.instagram.com/prasna.ca&#34;&gt;[ig]&lt;/a&gt; ·
  &lt;a href=&#34;https://x.com/PrasnaIT&#34;&gt;[x]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.tiktok.com/@prasna.ca&#34;&gt;[tt]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.youtube.com/channel/UCbDEvFG_MxmAvLsTeG02S8Q&#34;&gt;[yt]&lt;/a&gt;
&lt;/div&gt;

</description>
    </item>
    
    
    
    <item>
      <title>Youtube&#39;s First Video from jawed, Neal Mohan and the Nature of Change</title>
      <link>https://sanjayregmi.com/posts/youtube-first-video-neal-mohan-and-the-nature-of-change/</link>
      <pubDate>Wed, 07 Feb 2024 13:06:42 -0800</pubDate>
      
      <guid>https://sanjayregmi.com/posts/youtube-first-video-neal-mohan-and-the-nature-of-change/</guid>
      <description>&lt;p&gt;&lt;img src=&#34;https://sanjayregmi.com/images/change-sanjayregmi.webp&#34; alt=&#34;&#34;&gt;&lt;br&gt;
In the first line of the &lt;a href=&#34;https://blog.youtube/inside-youtube/2024-letter-from-neal/&#34;&gt;blog post this year by Neal Mohan&lt;/a&gt; the CEO of youtube is a link to the very &lt;a href=&#34;https://www.youtube.com/@jawed&#34;&gt;first video that was uploaded to youtube&lt;/a&gt;, 18 years ago. &amp;lsquo;jawed&amp;rsquo;, the creator has a 19 second video where he talks about elephants having &amp;lsquo;really, really, long trunks&amp;rsquo;. Since his upload, until today, people have watched it over 300 hundred million times (and with Neal providing a link like that, I&amp;rsquo;m sure its going to rocket even more!), his channel has only that video and there are 4.45M subscribers to it. In terms of earnings, youtubers who have a million subscribers generally &lt;a href=&#34;https://www.bing.com/search?pglt=161&amp;amp;q=how+much+does+youtube+pay+for+4+million+subscribers&amp;amp;cvid=68196d9b0ddb40498c2b9ed91fe98c44&amp;amp;gs_lcrp=EgZjaHJvbWUyBggAEEUYOdIBCTEwMTE2ajBqMagCALACAA&amp;amp;FORM=ANNTA1&amp;amp;PC=DCTS&amp;amp;ntref=1&#34;&gt;earn around 60K USD/year&lt;/a&gt;. Let&amp;rsquo;s step back for a moment. Did &amp;lsquo;jawed&amp;rsquo; at that time realize how significant his upload would be?! Did we?!&lt;/p&gt;
&lt;p&gt;This comes back to the fundamentals.&lt;/p&gt;
&lt;p&gt;About trying new things. About not being afraid to try. About understanding the nature of change. That its by nature we don&amp;rsquo;t like change but if we have progress in our heads and the dream for progress lying deep in our chests, that we should be able to appreciate, create, propagate change. Its about understanding fear, trepidation, hesitation; that its natural and its okay. Using our heads to relieve the stresses created by our limbic brains. Its about being able to think of the future, what if, what if it does succeed when you have nothing to lose?! (They say part of achieving success is also by dreaming and wishing to be lucky.)&lt;/p&gt;
&lt;p&gt;A simple video. One bold person. The beginning of a giant. We have chances for change everyday. Let&amp;rsquo;s understand its okay. And then proceed to doing it, propagating it. All the best!&lt;/p&gt;
&lt;p&gt;🔥
&lt;div class=&#34;top-content&#34; style=&#34;text-align: center;&#34;&gt;
  &lt;a href=&#34;https://prasna.ca/contact&#34;&gt;[web]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.linkedin.com/company/prasna-it&#34;&gt;[in]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.facebook.com/prasnait&#34;&gt;[fb]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.instagram.com/prasna.ca&#34;&gt;[ig]&lt;/a&gt; ·
  &lt;a href=&#34;https://x.com/PrasnaIT&#34;&gt;[x]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.tiktok.com/@prasna.ca&#34;&gt;[tt]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.youtube.com/channel/UCbDEvFG_MxmAvLsTeG02S8Q&#34;&gt;[yt]&lt;/a&gt;
&lt;/div&gt;
&lt;/p&gt;
</description>
    </item>
    
    
    
    <item>
      <title>What Is Magnetized Target Fusion</title>
      <link>https://sanjayregmi.com/posts/what-is-magnetized-target-fusion/</link>
      <pubDate>Thu, 01 Feb 2024 02:18:58 -0800</pubDate>
      
      <guid>https://sanjayregmi.com/posts/what-is-magnetized-target-fusion/</guid>
      <description>&lt;p&gt;Vancouver Canada is an awesome place and did you know that in Richmond that we have a company that&amp;rsquo;s been working on Fusion Technology since 2002?! Its called &lt;a href=&#34;https://generalfusion.com&#34;&gt;General Fusion&lt;/a&gt;. But the best part is the Founder and Chief Scientist Michel Laberge explain with pure excitementment what it is all about. All you need to invest is 81 seconds. Watch it here and if you&amp;rsquo;re like me, you&amp;rsquo;re really going to enjoy it!&lt;/p&gt;
&lt;div style=&#34;position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;&#34;&gt;
  &lt;iframe src=&#34;https://player.vimeo.com/video/760640517&#34; style=&#34;position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;&#34; title=&#34;What is Magnetized Targe Fusion&#34; webkitallowfullscreen mozallowfullscreen allowfullscreen&gt;&lt;/iframe&gt;
&lt;/div&gt;
&lt;p&gt;💥
&lt;div class=&#34;top-content&#34; style=&#34;text-align: center;&#34;&gt;
  &lt;a href=&#34;https://prasna.ca/contact&#34;&gt;[web]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.linkedin.com/company/prasna-it&#34;&gt;[in]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.facebook.com/prasnait&#34;&gt;[fb]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.instagram.com/prasna.ca&#34;&gt;[ig]&lt;/a&gt; ·
  &lt;a href=&#34;https://x.com/PrasnaIT&#34;&gt;[x]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.tiktok.com/@prasna.ca&#34;&gt;[tt]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.youtube.com/channel/UCbDEvFG_MxmAvLsTeG02S8Q&#34;&gt;[yt]&lt;/a&gt;
&lt;/div&gt;
&lt;/p&gt;
</description>
    </item>
    
    
    
    <item>
      <title>On Tea, Intoxication and Meditation</title>
      <link>https://sanjayregmi.com/posts/on-tea-intoxication-and-meditation/</link>
      <pubDate>Tue, 30 Jan 2024 14:05:06 -0800</pubDate>
      
      <guid>https://sanjayregmi.com/posts/on-tea-intoxication-and-meditation/</guid>
      <description>&lt;p&gt;&lt;img src=&#34;https://sanjayregmi.com/images/tea-sanjayregmi.webp&#34; alt=&#34;&#34;&gt;&lt;br&gt;
Every time I come to see you&lt;br&gt;
and go away&lt;br&gt;
You make me think.&lt;br&gt;
Lots.&lt;/p&gt;
&lt;p&gt;Forgetting myself in intoxication&lt;br&gt;
Of your presence&lt;br&gt;
Of your meditative voice&lt;br&gt;
That tells of stories far and wide&lt;br&gt;
Of kindness, hope, confidence, beauty and strategy.&lt;br&gt;
What a mix, I say to myself!&lt;/p&gt;
&lt;p&gt;Time stands still or rather exists only there and nowhere else&lt;br&gt;
All else is forgotten.&lt;br&gt;
Almost like living in a different world.&lt;/p&gt;
&lt;p&gt;The flow is uninterrupted.&lt;br&gt;
I dare not disrupt.&lt;br&gt;
For I want the river to flow.
Flow in its own accord.&lt;br&gt;
Dancing. Gushing.&lt;br&gt;
Telling stories.&lt;/p&gt;
&lt;p&gt;Listening, absorbing,&lt;br&gt;
Being entertained.&lt;br&gt;
Learning.&lt;br&gt;
All that wisdom&lt;br&gt;
That I get for free.&lt;br&gt;
Along with the sky, the lake, the roads and the life below.&lt;br&gt;
We&amp;rsquo;re listening together.&lt;br&gt;
Being enriched.&lt;br&gt;
Cared for.&lt;br&gt;
Like huddled kids.&lt;/p&gt;
&lt;p&gt;While the aroma of tea brings life alive in each and every sip.&lt;br&gt;
The tea made by you.&lt;br&gt;
For us.&lt;/p&gt;
&lt;p&gt;💎&lt;/p&gt;
&lt;h4 id=&#34;listen-to-the-poem&#34;&gt;Listen to the poem&lt;/h4&gt;
&lt;audio controls&gt;
    &lt;source src=&#34;https://sanjayregmi.com/audio/OnTea.m4a&#34; type=&#34;audio/mp4&#34;&gt;
    Your browser does not support audio element.
&lt;/audio&gt;
&lt;div class=&#34;top-content&#34; style=&#34;text-align: center;&#34;&gt;
  &lt;a href=&#34;https://prasna.ca/contact&#34;&gt;[web]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.linkedin.com/company/prasna-it&#34;&gt;[in]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.facebook.com/prasnait&#34;&gt;[fb]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.instagram.com/prasna.ca&#34;&gt;[ig]&lt;/a&gt; ·
  &lt;a href=&#34;https://x.com/PrasnaIT&#34;&gt;[x]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.tiktok.com/@prasna.ca&#34;&gt;[tt]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.youtube.com/channel/UCbDEvFG_MxmAvLsTeG02S8Q&#34;&gt;[yt]&lt;/a&gt;
&lt;/div&gt;

</description>
    </item>
    
    
    
    <item>
      <title>Pxe Boot to Install Any Operating System the Quickest Way</title>
      <link>https://sanjayregmi.com/posts/pxe-boot-to-install-any-operating-system-the-quickest-way/</link>
      <pubDate>Tue, 30 Jan 2024 12:18:06 -0800</pubDate>
      
      <guid>https://sanjayregmi.com/posts/pxe-boot-to-install-any-operating-system-the-quickest-way/</guid>
      <description>&lt;p&gt;If your (old) machine doesn&amp;rsquo;t have a CD ROM drive or does not boot from USB, PXE boot to re-install a new operating system is the best option if you do not want to buy any more hardware to solve the situation. In the past, setting up a PXE server was a hassle. The internet is littered with linux configurations on tftp server. But if all you want to do is to boot your machine and autoload the ISO, here&amp;rsquo;s the fastest way with minimal fuss.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;On a windows machine, download and install &lt;a href=&#34;https://www.ubackup.com/ss/download/adb/ABWorkstationTrial.exe&#34;&gt;AOMEI Backupper Workstation&lt;/a&gt; (trial version is good).&lt;/li&gt;
&lt;li&gt;Download your installer ISO. Example, say your old machine is an i386 (ha!) and you want to install linux, &lt;a href=&#34;http://archive.ubuntu.com/ubuntu/dists/xenial/main/installer-i386/current/images/netboot/mini.iso&#34;&gt;here&amp;rsquo;s the location of an ubuntu mini.iso that works well&lt;/a&gt;. Note if your machine has 512MB or less of memory, you won&amp;rsquo;t be able to load large ISOs so I suggest you pick the mini.iso as they&amp;rsquo;re less than 100MB in size and will take you through the installation flawlessly.&lt;/li&gt;
&lt;li&gt;Open AOMEI Bakupper Workstation &amp;ndash;&amp;gt; Tools &amp;ndash;&amp;gt; Select your ISO &amp;ndash;&amp;gt; Start Service&lt;/li&gt;
&lt;li&gt;On the destination machine connected via ethernet, start in PXE mode.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I&amp;rsquo;ve suffered a lot in the past to run PXE servers. This is the best and foolproof method yet!&lt;/p&gt;
&lt;p&gt;Credit: &lt;a href=&#34;https://archive.is/703Fe&#34;&gt;How to Setup PXE Boot Server in Windows Easily and Securely (archive.ph)&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;💌&lt;/p&gt;
&lt;div class=&#34;top-content&#34; style=&#34;text-align: center;&#34;&gt;
  &lt;a href=&#34;https://prasna.ca/contact&#34;&gt;[web]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.linkedin.com/company/prasna-it&#34;&gt;[in]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.facebook.com/prasnait&#34;&gt;[fb]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.instagram.com/prasna.ca&#34;&gt;[ig]&lt;/a&gt; ·
  &lt;a href=&#34;https://x.com/PrasnaIT&#34;&gt;[x]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.tiktok.com/@prasna.ca&#34;&gt;[tt]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.youtube.com/channel/UCbDEvFG_MxmAvLsTeG02S8Q&#34;&gt;[yt]&lt;/a&gt;
&lt;/div&gt;

</description>
    </item>
    
    
    
    <item>
      <title>On Flowers and Memories</title>
      <link>https://sanjayregmi.com/posts/on-flowers-and-memories/</link>
      <pubDate>Fri, 26 Jan 2024 22:34:48 -0800</pubDate>
      
      <guid>https://sanjayregmi.com/posts/on-flowers-and-memories/</guid>
      <description>&lt;p&gt;&lt;img src=&#34;https://sanjayregmi.com/images/flowers-sanjayregmi.webp&#34; alt=&#34;&#34;&gt;&lt;br&gt;
Reminds me&lt;br&gt;
Of the times together.&lt;/p&gt;
&lt;p&gt;Even in their death,&lt;br&gt;
They&amp;rsquo;re sitting here,&lt;br&gt;
Gorgeous and beautiful.&lt;/p&gt;
&lt;p&gt;Reminding us of the temporal nature,&lt;br&gt;
Of life,&lt;br&gt;
And yet,&lt;br&gt;
Living it all,&lt;br&gt;
Until the end.&lt;/p&gt;
&lt;p&gt;Thank you for the flowers.&lt;br&gt;
I don&amp;rsquo;t think we&amp;rsquo;ve had flowers here lately.&lt;/p&gt;
&lt;p&gt;They remind me,&lt;br&gt;
Of life and death and beauty,&lt;br&gt;
In the essence of it all,&lt;br&gt;
Together, in one shot.&lt;/p&gt;
&lt;p&gt;Flowers. Given by you. To us.&lt;br&gt;
Memories.&lt;/p&gt;
&lt;p&gt;🌸
&lt;div class=&#34;top-content&#34; style=&#34;text-align: center;&#34;&gt;
  &lt;a href=&#34;https://prasna.ca/contact&#34;&gt;[web]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.linkedin.com/company/prasna-it&#34;&gt;[in]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.facebook.com/prasnait&#34;&gt;[fb]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.instagram.com/prasna.ca&#34;&gt;[ig]&lt;/a&gt; ·
  &lt;a href=&#34;https://x.com/PrasnaIT&#34;&gt;[x]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.tiktok.com/@prasna.ca&#34;&gt;[tt]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.youtube.com/channel/UCbDEvFG_MxmAvLsTeG02S8Q&#34;&gt;[yt]&lt;/a&gt;
&lt;/div&gt;
&lt;/p&gt;
</description>
    </item>
    
    
    
    <item>
      <title>How to configure SSH for a passwordless login into your remote machine</title>
      <link>https://sanjayregmi.com/posts/ssh-without-password/</link>
      <pubDate>Fri, 26 Jan 2024 21:44:06 -0800</pubDate>
      
      <guid>https://sanjayregmi.com/posts/ssh-without-password/</guid>
      <description>&lt;ul&gt;
&lt;li&gt;On local machine, run&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;ssh-keygen
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;This creates two files &lt;code&gt;/.ssh/id_rsa.pub&lt;/code&gt; (public key) and &lt;code&gt;/.ssh/id_rsa&lt;/code&gt; (private key).&lt;/li&gt;
&lt;li&gt;Still on local machine, run&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;ssh-copy-id remoteusername@remoteserver
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;This copies your public key to remote server.&lt;/li&gt;
&lt;li&gt;Now try doing ssh to remote machine, no password should be required.&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id=&#34;if-ssh-copy-id-fails&#34;&gt;if ssh-copy-id fails&lt;/h4&gt;
&lt;p&gt;Sometimes, ssh-copy-id gives an error and doesn&amp;rsquo;t copy the files. In that case, use this one liner but replace the remoteuser and servername:&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-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;cat ~/.ssh/id_rsa.pub &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; ssh remoteusername@remoteserver &lt;span class=&#34;s2&#34;&gt;&amp;#34;mkdir -p ~/.ssh &amp;amp;&amp;amp; chmod 700 ~/.ssh &amp;amp;&amp;amp; cat &amp;gt;&amp;gt; ~/.ssh/authorized_keys &amp;amp;&amp;amp; chmod 600 ~/.ssh/authorized_keys&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h4 id=&#34;ensure&#34;&gt;Ensure&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;Remote machine is running sshd.&lt;/li&gt;
&lt;li&gt;Local machine has relevant terminal with ssh installed.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;❗
&lt;div class=&#34;top-content&#34; style=&#34;text-align: center;&#34;&gt;
  &lt;a href=&#34;https://prasna.ca/contact&#34;&gt;[web]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.linkedin.com/company/prasna-it&#34;&gt;[in]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.facebook.com/prasnait&#34;&gt;[fb]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.instagram.com/prasna.ca&#34;&gt;[ig]&lt;/a&gt; ·
  &lt;a href=&#34;https://x.com/PrasnaIT&#34;&gt;[x]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.tiktok.com/@prasna.ca&#34;&gt;[tt]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.youtube.com/channel/UCbDEvFG_MxmAvLsTeG02S8Q&#34;&gt;[yt]&lt;/a&gt;
&lt;/div&gt;
&lt;/p&gt;
</description>
    </item>
    
    
    
    <item>
      <title>On Text Messages and Emoticons</title>
      <link>https://sanjayregmi.com/posts/on-text-messages-and-emoticons/</link>
      <pubDate>Mon, 22 Jan 2024 20:22:21 -0800</pubDate>
      
      <guid>https://sanjayregmi.com/posts/on-text-messages-and-emoticons/</guid>
      <description>&lt;p&gt;It&amp;rsquo;s weird and amazing at the same time. You&amp;rsquo;re somewhere out there. I know of your existence by these letters you send me by the medium of electrons which themselves if isolated do not exist (Heisenberg principle). And yet your emoticons convey the thoughts and emotions as powerful as you were here.&lt;/p&gt;
&lt;p&gt;🐦&lt;/p&gt;
&lt;div class=&#34;top-content&#34; style=&#34;text-align: center;&#34;&gt;
  &lt;a href=&#34;https://prasna.ca/contact&#34;&gt;[web]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.linkedin.com/company/prasna-it&#34;&gt;[in]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.facebook.com/prasnait&#34;&gt;[fb]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.instagram.com/prasna.ca&#34;&gt;[ig]&lt;/a&gt; ·
  &lt;a href=&#34;https://x.com/PrasnaIT&#34;&gt;[x]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.tiktok.com/@prasna.ca&#34;&gt;[tt]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.youtube.com/channel/UCbDEvFG_MxmAvLsTeG02S8Q&#34;&gt;[yt]&lt;/a&gt;
&lt;/div&gt;

</description>
    </item>
    
    
    
    <item>
      <title>Dream big, really  big</title>
      <link>https://sanjayregmi.com/posts/dreams/</link>
      <pubDate>Sat, 20 Jan 2024 23:35:11 -0800</pubDate>
      
      <guid>https://sanjayregmi.com/posts/dreams/</guid>
      <description>&lt;p&gt;Dream big!&lt;br&gt;
So big that sometimes you almost want to suffocate while thinking about it.&lt;br&gt;
Its the only thing that keeps us going&lt;br&gt;
Gives us hope&lt;br&gt;
A reason to move forward&lt;br&gt;
A way to become better&lt;br&gt;
Every day, every hour, every second&lt;/p&gt;
&lt;p&gt;Do you have a dream?&lt;br&gt;
Do you dare to dream?&lt;br&gt;
Dream.&lt;br&gt;
Its the first step. Take it.&lt;/p&gt;
&lt;p&gt;And when you dream, dream big - really  big.&lt;br&gt;
So big that sometimes you almost want to suffocate while thinking about it.&lt;/p&gt;
&lt;p&gt;Allow yourself, you&amp;rsquo;re free to dream, yes! &lt;br&gt;
Its the first step.&lt;/p&gt;
&lt;p&gt;❄️&lt;/p&gt;
&lt;h4 id=&#34;listen-to-the-poem&#34;&gt;Listen to the poem&lt;/h4&gt;
&lt;audio controls&gt;
    &lt;source src=&#34;https://sanjayregmi.com/audio/DreamBigReallyBig.m4a&#34; type=&#34;audio/mp4&#34;&gt;
    Your browser does not support audio element.
&lt;/audio&gt;
&lt;div class=&#34;top-content&#34; style=&#34;text-align: center;&#34;&gt;
  &lt;a href=&#34;https://prasna.ca/contact&#34;&gt;[web]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.linkedin.com/company/prasna-it&#34;&gt;[in]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.facebook.com/prasnait&#34;&gt;[fb]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.instagram.com/prasna.ca&#34;&gt;[ig]&lt;/a&gt; ·
  &lt;a href=&#34;https://x.com/PrasnaIT&#34;&gt;[x]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.tiktok.com/@prasna.ca&#34;&gt;[tt]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.youtube.com/channel/UCbDEvFG_MxmAvLsTeG02S8Q&#34;&gt;[yt]&lt;/a&gt;
&lt;/div&gt;

</description>
    </item>
    
    
    
    <item>
      <title>Canadian Government Support to Young Entrepreneurs and Existing Businesses</title>
      <link>https://sanjayregmi.com/posts/canadian-government-support-to-young-entrepreneurs-and-existing-businesses/</link>
      <pubDate>Sun, 14 Jan 2024 21:49:34 -0800</pubDate>
      
      <guid>https://sanjayregmi.com/posts/canadian-government-support-to-young-entrepreneurs-and-existing-businesses/</guid>
      <description>&lt;p&gt;We did some research into grants, funding and special loans available to startups and existing businesses in Canada when we were establishing &lt;a href=&#34;https://prasna.ca&#34;&gt;Prasna IT&lt;/a&gt;. This is a compilation that we believe will be useful to entrepreneurs like us. Here&amp;rsquo;s a compilation of what we found.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Table of Contents&lt;/strong&gt; &lt;div class=&#34;toc&#34;&gt;
  &lt;nav id=&#34;TableOfContents&#34;&gt;
  &lt;ol&gt;
    &lt;li&gt;&lt;a href=&#34;#loans&#34;&gt;Loans&lt;/a&gt;
      &lt;ol&gt;
        &lt;li&gt;&lt;a href=&#34;#young-entreprenur&#34;&gt;Young Entreprenur&lt;/a&gt;&lt;/li&gt;
        &lt;li&gt;&lt;a href=&#34;#existing-entrepreneur&#34;&gt;Existing Entrepreneur&lt;/a&gt;&lt;/li&gt;
        &lt;li&gt;&lt;a href=&#34;#entrepreneur-with-at-least-a-12-month-old-business&#34;&gt;Entrepreneur with at least a 12 month old business&lt;/a&gt;&lt;/li&gt;
        &lt;li&gt;&lt;a href=&#34;#entrepreneur-24-months-old&#34;&gt;Entrepreneur 24 months old&lt;/a&gt;&lt;/li&gt;
        &lt;li&gt;&lt;a href=&#34;#entrepreneur-export-focussed&#34;&gt;Entrepreneur export focussed&lt;/a&gt;&lt;/li&gt;
      &lt;/ol&gt;
    &lt;/li&gt;
    &lt;li&gt;&lt;a href=&#34;#canadian-goverment-grants&#34;&gt;Canadian Goverment Grants&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&#34;#further-reading&#34;&gt;Further reading&lt;/a&gt;&lt;/li&gt;
  &lt;/ol&gt;
&lt;/nav&gt;
&lt;/div&gt;
&lt;/p&gt;
&lt;h2 id=&#34;loans&#34;&gt;Loans&lt;/h2&gt;
&lt;h3 id=&#34;young-entreprenur&#34;&gt;Young Entreprenur&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Your startup will get 20K funding by &lt;a href=&#34;https://www.futurpreneur.ca/&#34;&gt;Futurepreneur Canada&lt;/a&gt; and  40K by &lt;a href=&#34;https://www.bdc.ca/&#34;&gt;BDC&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Loans are collateral free.&lt;/li&gt;
&lt;li&gt;Payable over 5 years, interest only for the first year&lt;/li&gt;
&lt;li&gt;Program provides free mentorship&lt;/li&gt;
&lt;li&gt;And free templates to start your business&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;How to apply&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Apply at futureprenur.ca&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;A young entrepreneur is one in the age between 18 - 39.&lt;/p&gt;
&lt;h3 id=&#34;existing-entrepreneur&#34;&gt;Existing Entrepreneur&lt;/h3&gt;
&lt;p&gt;If you already have a business, you can avail the following:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;National Research Council Canada - &lt;a href=&#34;https://nrc.canada.ca/en/support-technology-innovation/about-nrc-industrial-research-assistance-programuser-agent&#34;&gt;https://nrc.canada.ca/en/support-technology-innovation/about-nrc-industrial-research-assistance-programuser-agent&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;Accelerate growth of small/medium sized businesses by providing funding for innovation&lt;/p&gt;
&lt;/blockquote&gt;
&lt;ul&gt;
&lt;li&gt;Sustainable Technology Development Canada - &lt;a href=&#34;https://www.sdtc.ca/en/&#34;&gt;https://www.sdtc.ca/en/&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;Funds cleantech startup
50k-100k non-repayable contribution&lt;/p&gt;
&lt;/blockquote&gt;
&lt;ul&gt;
&lt;li&gt;SR and ED Tax Incentives - &lt;a href=&#34;https://www.canada.ca/en/revenue-agency/services/scientific-research-experimental-development-tax-incentive-program/what-are-sred-tax-incentives.html&#34;&gt;https://www.canada.ca/en/revenue-agency/services/scientific-research-experimental-development-tax-incentive-program/what-are-sred-tax-incentives.html&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Strategic Innovation Fund - Funds for proof of concept programs - &lt;a href=&#34;https://ised-isde.canada.ca/site/strategic-innovation-fund/en&#34;&gt;https://ised-isde.canada.ca/site/strategic-innovation-fund/en&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;entrepreneur-with-at-least-a-12-month-old-business&#34;&gt;Entrepreneur with at least a 12 month old business&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Can get loans upto 250k&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;Principal postponement upto 12 months
Can spend the funds on buying assets, investing in marketing, website or consulting and for line of credit&lt;/p&gt;
&lt;/blockquote&gt;
&lt;ul&gt;
&lt;li&gt;Apply at bdc.ca&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;entrepreneur-24-months-old&#34;&gt;Entrepreneur 24 months old&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;A variety of loans are available to you&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;Small business loan of 100k
For commercial real estate purchase
For technology financing
For financing of technology companies&lt;/p&gt;
&lt;/blockquote&gt;
&lt;ul&gt;
&lt;li&gt;Apply at bdc.ca&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;entrepreneur-export-focussed&#34;&gt;Entrepreneur export focussed&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;checkout &lt;a href=&#34;https://www.tradecommissioner.gc.ca/funding_support_programs-programmes_de_financement_de_soutien.aspx?lang=eng&#34;&gt;https://www.tradecommissioner.gc.ca/funding_support_programs-programmes_de_financement_de_soutien.aspx?lang=eng&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;canadian-goverment-grants&#34;&gt;Canadian Goverment Grants&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Canada Digital Adoption Program (CDAP) - Helps businesses adopt digital techologies&lt;/li&gt;
&lt;li&gt;2400 grant to setup an e-commerce sites -&lt;/li&gt;
&lt;li&gt;15000 grant to boost business technology and upto 100k zero percent loan.&lt;/li&gt;
&lt;li&gt;Checkout &lt;a href=&#34;https://ised-isde.canada.ca/site/canada-digital-adoption-program/en&#34;&gt;https://ised-isde.canada.ca/site/canada-digital-adoption-program/en&lt;/a&gt; for more.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;further-reading&#34;&gt;Further reading&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Starting a small business - &lt;a href=&#34;https://smallbusinessbc.ca/starting-a-business&#34;&gt;https://smallbusinessbc.ca/starting-a-business&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;How to become a digital advisor - &lt;a href=&#34;https://ised-isde.canada.ca/site/canada-digital-adoption-program/en/become-digital-advisor&#34;&gt;https://ised-isde.canada.ca/site/canada-digital-adoption-program/en/become-digital-advisor&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Grant and funding from the Government of Canada - &lt;a href=&#34;https://www.canada.ca/en/government/grants-funding.html&#34;&gt;https://www.canada.ca/en/government/grants-funding.html&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;It&amp;rsquo;s never too late to start a business. Think of one today.&lt;/p&gt;
&lt;p&gt;💖&lt;/p&gt;
&lt;div class=&#34;top-content&#34; style=&#34;text-align: center;&#34;&gt;
  &lt;a href=&#34;https://prasna.ca/contact&#34;&gt;[web]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.linkedin.com/company/prasna-it&#34;&gt;[in]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.facebook.com/prasnait&#34;&gt;[fb]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.instagram.com/prasna.ca&#34;&gt;[ig]&lt;/a&gt; ·
  &lt;a href=&#34;https://x.com/PrasnaIT&#34;&gt;[x]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.tiktok.com/@prasna.ca&#34;&gt;[tt]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.youtube.com/channel/UCbDEvFG_MxmAvLsTeG02S8Q&#34;&gt;[yt]&lt;/a&gt;
&lt;/div&gt;

</description>
    </item>
    
    
    
    <item>
      <title>On picture, body and soul</title>
      <link>https://sanjayregmi.com/posts/on-picture-body-and-soul/</link>
      <pubDate>Sun, 14 Jan 2024 17:18:23 -0800</pubDate>
      
      <guid>https://sanjayregmi.com/posts/on-picture-body-and-soul/</guid>
      <description>&lt;p&gt;I didn&amp;rsquo;t do anything big,&lt;br&gt;
I just updated my profile picture.&lt;br&gt;
True it was 15 odd years ago that I last changed it.&lt;br&gt;
But you were overjoyed. Ecstatic! You reacted. Lots.&lt;br&gt;
You said you wanted to see more. See not only half a picture but the full one.&lt;br&gt;
The  &lt;strong&gt;full&lt;/strong&gt; picture.&lt;/p&gt;
&lt;p&gt;I said. Okay, I get it.&lt;br&gt;
I dug in deep.&lt;br&gt;
I tried.&lt;br&gt;
I expressed. And then I shared. With you.&lt;br&gt;
You were not amused.&lt;/p&gt;
&lt;p&gt;Not many reactions.&lt;br&gt;
Not like the picture update.&lt;br&gt;
A &lt;strong&gt;mere&lt;/strong&gt; picture update!&lt;/p&gt;
&lt;p&gt;I know you read it. Statistics don&amp;rsquo;t lie. I see you in website analytics.&lt;br&gt;
You visited. And then you left.&lt;br&gt;
Like you came to knock on the door and left immediately after.&lt;br&gt;
Almost like you changed your mind. At the very last moment.&lt;br&gt;
Like you mistook it for someone.&lt;/p&gt;
&lt;p&gt;Someone you didn&amp;rsquo;t know.&lt;br&gt;
Someone you didn&amp;rsquo;t care for.&lt;br&gt;
Someone you were scared to see. And meet.&lt;/p&gt;
&lt;p&gt;And I thought I provided a picture.&lt;br&gt;
A better picture than the digital image I shared.&lt;br&gt;
Than my material face.&lt;br&gt;
Than my &lt;strong&gt;material&lt;/strong&gt; face.&lt;/p&gt;
&lt;p&gt;I agree without the material, there&amp;rsquo;s no place for the soul to exist. And soul is special. Sublime.&lt;br&gt;
I understand without the body, I cease to exist. &amp;ldquo;I&amp;rdquo; ceases to exist. (It&amp;rsquo;ll be a sad day?!)&lt;br&gt;
But am I more than a picture.. I speak out aloud,&lt;br&gt;
I ask myself,&lt;br&gt;
Am I more than the body that carries my soul.&lt;/p&gt;
&lt;p&gt;The nurturing I&amp;rsquo;ve recieved from you.&lt;br&gt;
The teachings I&amp;rsquo;ve gotten from you.&lt;br&gt;
The sacrifices you&amp;rsquo;ve done for me.&lt;br&gt;
The knowledge you&amp;rsquo;ve imbibed in me.&lt;br&gt;
The intellect.&lt;br&gt;
The curioustiy.&lt;br&gt;
Compassion. You&amp;rsquo;ve inculcated in me.&lt;/p&gt;
&lt;p&gt;Am I not more than my picture, I ask myself, out aloud.&lt;/p&gt;
&lt;p&gt;💕&lt;/p&gt;
&lt;div class=&#34;top-content&#34; style=&#34;text-align: center;&#34;&gt;
  &lt;a href=&#34;https://prasna.ca/contact&#34;&gt;[web]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.linkedin.com/company/prasna-it&#34;&gt;[in]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.facebook.com/prasnait&#34;&gt;[fb]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.instagram.com/prasna.ca&#34;&gt;[ig]&lt;/a&gt; ·
  &lt;a href=&#34;https://x.com/PrasnaIT&#34;&gt;[x]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.tiktok.com/@prasna.ca&#34;&gt;[tt]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.youtube.com/channel/UCbDEvFG_MxmAvLsTeG02S8Q&#34;&gt;[yt]&lt;/a&gt;
&lt;/div&gt;

</description>
    </item>
    
    
    
    <item>
      <title>On leaving and being left</title>
      <link>https://sanjayregmi.com/posts/on-leaving-and-being-left/</link>
      <pubDate>Wed, 10 Jan 2024 21:30:54 -0800</pubDate>
      
      <guid>https://sanjayregmi.com/posts/on-leaving-and-being-left/</guid>
      <description>&lt;p&gt;Everybody leaves.&lt;br&gt;
At some point.&lt;br&gt;
Its a revolving door.
Its people. Natural. Nothing special or disheartening.&lt;/p&gt;
&lt;p&gt;Memories should be kept.&lt;br&gt;
Cherished.&lt;br&gt;
They allow us to be happy (or sad) even after the moments are long gone.&lt;/p&gt;
&lt;p&gt;The source of energy is your love. For yourself, for others.&lt;br&gt;
Your dreams. Your being.&lt;br&gt;
When you smell the fresh air or when you touch the first snow.&lt;br&gt;
The fur of the pet when it rubs against your fingers.&lt;br&gt;
The smile of your friend.&lt;br&gt;
The especially good food someone prepared for you.&lt;br&gt;
In your name, in your anticipation.&lt;br&gt;
The invite you didn&amp;rsquo;t expect.&lt;br&gt;
The hugs and the camaraderie.&lt;br&gt;
The warmth you can feel deep in your heart.&lt;br&gt;
THAT will provide you unlimited energy.&lt;br&gt;
Like energy itself, that which cannot be created nor can be destroyed (btw, do you know of anything of this nature?!).&lt;/p&gt;
&lt;p&gt;What you feel as sorrow is self created.&lt;br&gt;
Life&amp;rsquo;s always good, its serene, its beautiful.&lt;br&gt;
Think I&amp;rsquo;m bluffing?!&lt;/p&gt;
&lt;p&gt;Go out for a walk with who you share your heart.&lt;br&gt;
Wear your nice dress.&lt;br&gt;
Call your friends over for dinner.&lt;br&gt;
Chat.  Share.&lt;br&gt;
You&amp;rsquo;ll be reminded how beautiful life is.&lt;br&gt;
How special you are.&lt;/p&gt;
&lt;p&gt;❤️&lt;/p&gt;
&lt;div class=&#34;top-content&#34; style=&#34;text-align: center;&#34;&gt;
  &lt;a href=&#34;https://prasna.ca/contact&#34;&gt;[web]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.linkedin.com/company/prasna-it&#34;&gt;[in]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.facebook.com/prasnait&#34;&gt;[fb]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.instagram.com/prasna.ca&#34;&gt;[ig]&lt;/a&gt; ·
  &lt;a href=&#34;https://x.com/PrasnaIT&#34;&gt;[x]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.tiktok.com/@prasna.ca&#34;&gt;[tt]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.youtube.com/channel/UCbDEvFG_MxmAvLsTeG02S8Q&#34;&gt;[yt]&lt;/a&gt;
&lt;/div&gt;

</description>
    </item>
    
    
    
    <item>
      <title>Install Hugo on FreeBSD, commit to Github and deploy to Cloudflare pages</title>
      <link>https://sanjayregmi.com/posts/hugo-freebsd/</link>
      <pubDate>Tue, 02 Jan 2024 14:38:15 -0800</pubDate>
      
      <guid>https://sanjayregmi.com/posts/hugo-freebsd/</guid>
      <description>&lt;img src=&#34;https://sanjayregmi.com/images/hugo-100.png&#34;&gt;  
&lt;h4 id=&#34;prerequisites&#34;&gt;Prerequisites&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;Install PHP&lt;/li&gt;
&lt;li&gt;Install nginx&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id=&#34;install-hugo&#34;&gt;Install Hugo&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;pkg install gohugo (install as root or do sudo)&lt;/li&gt;
&lt;li&gt;follow this after install - &lt;a href=&#34;https://web.archive.org/web/20231202094641/https://developers.cloudflare.com/pages/framework-guides/deploy-a-hugo-site/&#34;&gt;https://web.archive.org/web/20231202094641/https://developers.cloudflare.com/pages/framework-guides/deploy-a-hugo-site/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;remember to remove hugo.toml from the root directory otherwise you&amp;rsquo;ll get a &amp;ldquo;not Found&amp;rdquo; error!&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id=&#34;tip&#34;&gt;Tip&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;Install the GUI (maybe xfce or Kde5) so you edit md files, update them on the fly. Copy pasting and updating is easier with the gui and the terminal available. Refer to &lt;a href=&#34;https://sanjayregmi.com/posts/hugo-cheatsheet&#34;&gt;Hugo Cheatsheat&lt;/a&gt; if you need instructions to create the new site.&lt;/li&gt;
&lt;li&gt;If you start getting weird errors from Git, just create a new hugo site, copy your contents and config.toml and follow instructions again. IMO Github has a lot to be done before it becomes user friendly. I&amp;rsquo;ll write aobut it separately someday.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;🌶️&lt;/p&gt;
&lt;div class=&#34;top-content&#34; style=&#34;text-align: center;&#34;&gt;
  &lt;a href=&#34;https://prasna.ca/contact&#34;&gt;[web]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.linkedin.com/company/prasna-it&#34;&gt;[in]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.facebook.com/prasnait&#34;&gt;[fb]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.instagram.com/prasna.ca&#34;&gt;[ig]&lt;/a&gt; ·
  &lt;a href=&#34;https://x.com/PrasnaIT&#34;&gt;[x]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.tiktok.com/@prasna.ca&#34;&gt;[tt]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.youtube.com/channel/UCbDEvFG_MxmAvLsTeG02S8Q&#34;&gt;[yt]&lt;/a&gt;
&lt;/div&gt;

</description>
    </item>
    
    
    
    <item>
      <title>Hugo Cheatsheet</title>
      <link>https://sanjayregmi.com/posts/hugo-cheatsheet/</link>
      <pubDate>Mon, 01 Jan 2024 21:24:34 -0800</pubDate>
      
      <guid>https://sanjayregmi.com/posts/hugo-cheatsheet/</guid>
      <description>&lt;p&gt;Table Of Contents&lt;div class=&#34;toc&#34;&gt;
  &lt;nav id=&#34;TableOfContents&#34;&gt;
  &lt;ol&gt;
    &lt;li&gt;
      &lt;ol&gt;
        &lt;li&gt;&lt;a href=&#34;#start-work-on-hugo&#34;&gt;Start work on Hugo&lt;/a&gt;&lt;/li&gt;
        &lt;li&gt;&lt;a href=&#34;#content-creation-and-editing&#34;&gt;Content creation and editing&lt;/a&gt;&lt;/li&gt;
        &lt;li&gt;&lt;a href=&#34;#push-to-git---one-time-only-commands&#34;&gt;Push to Git - one time only commands&lt;/a&gt;&lt;/li&gt;
        &lt;li&gt;&lt;a href=&#34;#push-to-git---each-time-the-website-needs-to-be-updated&#34;&gt;Push to Git - each time the website needs to be updated.&lt;/a&gt;&lt;/li&gt;
        &lt;li&gt;&lt;a href=&#34;#themes&#34;&gt;Themes&lt;/a&gt;&lt;/li&gt;
        &lt;li&gt;&lt;a href=&#34;#emoji-support&#34;&gt;Emoji Support&lt;/a&gt;&lt;/li&gt;
        &lt;li&gt;&lt;a href=&#34;#google-analytics&#34;&gt;Google Analytics&lt;/a&gt;&lt;/li&gt;
        &lt;li&gt;&lt;a href=&#34;#insert-table-of-content&#34;&gt;Insert Table of Content&lt;/a&gt;&lt;/li&gt;
        &lt;li&gt;&lt;a href=&#34;#insert-an-image&#34;&gt;Insert an image&lt;/a&gt;&lt;/li&gt;
        &lt;li&gt;&lt;a href=&#34;#insert-youtube-video&#34;&gt;Insert YouTube Video&lt;/a&gt;&lt;/li&gt;
        &lt;li&gt;&lt;a href=&#34;#add-last-modified-date-to-posts&#34;&gt;Add last modified date to posts&lt;/a&gt;&lt;/li&gt;
        &lt;li&gt;&lt;a href=&#34;#add-categories-and-tags-to-your-posts&#34;&gt;Add categories and tags to your posts&lt;/a&gt;&lt;/li&gt;
        &lt;li&gt;&lt;a href=&#34;#add-headings-to-your-post&#34;&gt;Add headings to your post&lt;/a&gt;&lt;/li&gt;
      &lt;/ol&gt;
    &lt;/li&gt;
  &lt;/ol&gt;
&lt;/nav&gt;
&lt;/div&gt;
&lt;/p&gt;
&lt;h3 id=&#34;start-work-on-hugo&#34;&gt;Start work on Hugo&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;hugo new site my-site&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;cd to my-site&lt;/strong&gt; (change directory to that folder)&lt;/li&gt;
&lt;li&gt;add a theme - direct download, unzip and copy to themes directory under my-site (&amp;ldquo;etch&amp;rdquo; is a simple theme)&lt;/li&gt;
&lt;li&gt;Start server with drafts visible: &lt;strong&gt;hugo server -D&amp;amp;&lt;/strong&gt; (&amp;amp; to put the command in the background so we can still use that terminal)&lt;/li&gt;
&lt;li&gt;Or just type &lt;strong&gt;hugo serve&lt;/strong&gt; to start the server.&lt;/li&gt;
&lt;li&gt;If you&amp;rsquo;re on a headless server, do this:&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;hugo server --bind 0.0.0.0 --baseURL http://your-machine-ip-on-which-hugo-is-running:1313/ --appendPort&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;false&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;Then you can see the rendering in real time by going to any browser on your internal network by typing:&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;http://192.168.1.99:1313
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id=&#34;content-creation-and-editing&#34;&gt;Content creation and editing&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Create new post: &lt;strong&gt;hugo new  posts/posttitle.md&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Create new page: &lt;strong&gt;hugo new newpage.md&lt;/strong&gt;. Update config.toml file with a new identifier to add the new page menu.&lt;/li&gt;
&lt;li&gt;Edit using vim. Path will be content/posts/&amp;lt;posttitle.md&amp;gt; for posts. Menu path will be content/&amp;lt;menu.md&amp;gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;push-to-git---one-time-only-commands&#34;&gt;Push to Git - one time only commands&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;git init&lt;/li&gt;
&lt;li&gt;git remote add origin &lt;a href=&#34;https://github.com/&#34;&gt;https://github.com/&lt;/a&gt;&amp;lt;your-gh-username&amp;gt;/&amp;lt;repo-name&amp;gt;&lt;/li&gt;
&lt;li&gt;git branch -M main&lt;/li&gt;
&lt;li&gt;git submodule add &lt;a href=&#34;https://github.com/LukasJoswiak/etch.git&#34;&gt;https://github.com/LukasJoswiak/etch.git&lt;/a&gt; themes/etch   (for adding the etch theme, you can choose your own theme and its git url)&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;push-to-git---each-time-the-website-needs-to-be-updated&#34;&gt;Push to Git - each time the website needs to be updated.&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;git add .&lt;/li&gt;
&lt;li&gt;git commit -m &amp;ldquo;Some Comment&amp;rdquo;&lt;/li&gt;
&lt;li&gt;git push -u origin main&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Your password is your PAT and NOT your GitHub password.&lt;/p&gt;
&lt;p&gt;Pushing to git with username nad PAT is tedious. Use command once:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;git config &amp;ndash;global credential.helper store&lt;br&gt;
to type your username and PAT once and your creds will be saved after you enter correctly the first time.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;themes&#34;&gt;Themes&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Themes can be changed on the fly by editing config.toml or hugo.toml. (Note the server might not update immediately, restart a few times if not.)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Here&amp;rsquo;s a simple hugo.toml for etch theme.&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-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;nv&#34;&gt;baseURL&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;https://sanjayregmi.com&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;nv&#34;&gt;languageCode&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;en-us&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;nv&#34;&gt;title&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;Sanjay Regmi&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;nv&#34;&gt;theme&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;etch&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;nv&#34;&gt;enableRobotsTXT&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;true&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;nv&#34;&gt;googleAnalytics&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;Your G Tag&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;o&#34;&gt;[&lt;/span&gt;markup.goldmark.renderer&lt;span class=&#34;o&#34;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                &lt;span class=&#34;nv&#34;&gt;unsafe&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;true&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;o&#34;&gt;[&lt;/span&gt;menu&lt;span class=&#34;o&#34;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                &lt;span class=&#34;o&#34;&gt;[[&lt;/span&gt;menu.main&lt;span class=&#34;o&#34;&gt;]]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                &lt;span class=&#34;nv&#34;&gt;identifier&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;our-projects&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                &lt;span class=&#34;nv&#34;&gt;name&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;our-projects&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                &lt;span class=&#34;nv&#34;&gt;title&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;Our Projects&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                &lt;span class=&#34;nv&#34;&gt;url&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;/our-projects&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                &lt;span class=&#34;o&#34;&gt;[[&lt;/span&gt;menu.main&lt;span class=&#34;o&#34;&gt;]]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                &lt;span class=&#34;nv&#34;&gt;identifier&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;posts&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                &lt;span class=&#34;nv&#34;&gt;name&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;posts&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                &lt;span class=&#34;nv&#34;&gt;title&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;Posts&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                &lt;span class=&#34;nv&#34;&gt;url&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;/posts&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id=&#34;emoji-support&#34;&gt;Emoji Support&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Add the following in config.toml&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;  enableEmoji = true
&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;google-analytics&#34;&gt;Google Analytics&lt;/h3&gt;
&lt;p&gt;Hugo comes with built-in support for Google Analytics. All you need to do is to add &lt;code&gt; googleAnalytics = &amp;ldquo;Your Google Tag&amp;rdquo; &lt;/code&gt; in hugo.toml (Newer versions of Hugo suggest using hugo.toml instead of config.toml). However, as of April 2024, some themes are not working with the above instructions. So here&amp;rsquo;s an alternative approach that works. The instructions are for the &amp;ldquo;Etch&amp;rdquo; theme and you should be able to adjust it for yours.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Copy all folders and files from /themes/etch/layout/ and paste them to &lt;HUGO-WEBSITE-ROOT&gt;/layout.&lt;/li&gt;
&lt;li&gt;Create a file called analytics.html under layout/partials/ and paste the contents of the script from google analytics, manual install instructions. Save it.&lt;/li&gt;
&lt;li&gt;Edit head.html and add &lt;code&gt; {{ partial &amp;ldquo;analytics&amp;rdquo; . }} before &amp;lt;/head&amp;gt;&lt;/code&gt;. Save it.&lt;/li&gt;
&lt;li&gt;Now run hugo server (confirm there are no errors. Then load the website locally &amp;ndash;&amp;gt; inspect &amp;ndash;&amp;gt; network and note gtag appears in one of the requests sent out.&lt;/li&gt;
&lt;li&gt;Note you do not need to add anything to hugo.toml as we&amp;rsquo;ve hardcoded our Google Tag IDs.&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id=&#34;old-method---does-not-work-for-many-themes-anymore-as-of-april-2024&#34;&gt;Old method - does not work for many themes anymore as of April, 2024&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;Add the following in config.toml&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;googleAnalytics = &amp;ldquo;X-XX&amp;rdquo;
where X-XX is the google analytics code for your website.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Grab the /layouts/partials/header.html file from your theme. Copy it to &lt;ROOT&gt;/layouts/partials. If the partial folder doesn&amp;rsquo;t exist, create it. (For some themes like hugo-coder, its the head.html file instead that needs to be edited)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Add the following at the top of &lt;ROOT&gt;/layouts/partials/header.html&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;  &amp;lt;head&amp;gt;
  {{ template &amp;quot;_internal/google_analytics.html&amp;quot; . }}
  &amp;lt;/head&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Save header.html&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;insert-table-of-content&#34;&gt;Insert Table of Content&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;create a file called `table_of_contents.html&amp;rsquo; in layouts/shortcodes. Add the following code:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;  &amp;lt;div class=&amp;quot;toc&amp;quot;&amp;gt;
      {{ .Page.TableOfContents }}
  &amp;lt;/div&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Insert &lt;code&gt;{{&amp;lt; table_of_contents &amp;gt;}}&lt;/code&gt; anywhere in your post or page to generate a Table of Contents.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;insert-an-image&#34;&gt;Insert an image&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Use this format: &lt;code&gt;&lt;img src=&#34;https://sanjayregmi.com/images/img1.jpg&#34; alt=&#34;&#34;&gt;&lt;/code&gt; where &amp;ldquo;images&amp;rdquo; is a folder under &amp;ldquo;static&amp;rdquo; and img1.jpg is the image file under &amp;ldquo;images&amp;rdquo; folder. Inside the squre brackets, you can add caption but is optional.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;insert-youtube-video&#34;&gt;Insert YouTube Video&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Use this anywhere you want, change the id and title.
&lt;code&gt;&lt;div&gt;{{&amp;lt; youtube id=&amp;ldquo;7qvg5EdL3fQ&amp;rdquo; title=&amp;ldquo;W&amp;rdquo; &amp;gt;}}&lt;/div&gt;&lt;/code&gt;
which produces:

        &lt;div style=&#34;position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;&#34;&gt;
          &lt;iframe src=&#34;https://www.youtube.com/embed/7qvg5EdL3fQ&#34; style=&#34;position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;&#34; allowfullscreen title=&#34;W&#34;&gt;&lt;/iframe&gt;
        &lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;A shorter, newer format is &lt;code&gt;{{&amp;lt; youtube qvg5EdL3fQ &amp;gt;}}&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;add-last-modified-date-to-posts&#34;&gt;Add last modified date to posts&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Add the following to config.toml&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;  enableGitInfo = true
  [frontmatter]
  lastmod = [&amp;quot;lastmod&amp;quot;, &amp;quot;:git&amp;quot;, &amp;quot;date&amp;quot;, &amp;quot;publishDate&amp;quot;]
&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;This way, the last modified date is taken from git commit dates.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;add-categories-and-tags-to-your-posts&#34;&gt;Add categories and tags to your posts&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Edit file &lt;code&gt;archetypes/default.md&lt;/code&gt; and add the following descriptors:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;  categories = [&#39;&#39;]
  tags = [&#39;&#39;, &#39;&#39;]
&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Save default.md&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Note values for both category and tag should be inside single quotes. More values can be added when separated by a comma.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;In your config.toml add the following:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;  [taxonomies]
  tag = &amp;quot;tags&amp;quot;    

  [[menu.main]]
  identifier = &#39;tags&#39;  
  name = &#39;tags&#39;  
  title = &#39;tags&#39;  
  url = &#39;/tags&#39;
&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Save config.toml.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;The two descriptors should now appear when you create a new post.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;add-headings-to-your-post&#34;&gt;Add headings to your post&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Use &lt;code&gt; # &lt;/code&gt; and a space to create headings. The more &lt;code&gt; # &lt;/code&gt; you use, the smaller the heading will be.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;🍄&lt;/p&gt;
&lt;div class=&#34;top-content&#34; style=&#34;text-align: center;&#34;&gt;
  &lt;a href=&#34;https://prasna.ca/contact&#34;&gt;[web]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.linkedin.com/company/prasna-it&#34;&gt;[in]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.facebook.com/prasnait&#34;&gt;[fb]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.instagram.com/prasna.ca&#34;&gt;[ig]&lt;/a&gt; ·
  &lt;a href=&#34;https://x.com/PrasnaIT&#34;&gt;[x]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.tiktok.com/@prasna.ca&#34;&gt;[tt]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.youtube.com/channel/UCbDEvFG_MxmAvLsTeG02S8Q&#34;&gt;[yt]&lt;/a&gt;
&lt;/div&gt;

</description>
    </item>
    
    
    
    <item>
      <title>Redirect a website in Clouldflare</title>
      <link>https://sanjayregmi.com/posts/cloudflare-redirect/</link>
      <pubDate>Fri, 29 Dec 2023 20:52:31 -0800</pubDate>
      
      <guid>https://sanjayregmi.com/posts/cloudflare-redirect/</guid>
      <description>&lt;ul&gt;
&lt;li&gt;Login to Clouflare &amp;ndash;&amp;gt; select your website &amp;ndash;&amp;gt; Rules &amp;ndash;&amp;gt; Redirect Rules &amp;ndash;&amp;gt; Create Rule.&lt;/li&gt;
&lt;li&gt;Set &amp;ldquo;All incoming requests&amp;rdquo; to Static, your URL to be redirected to, set Status Code to 301 (permanently moved.&lt;/li&gt;
&lt;li&gt;Hit &amp;ldquo;Deploy&amp;rdquo;, wait for propagation.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;🔴&lt;/p&gt;
&lt;div class=&#34;top-content&#34; style=&#34;text-align: center;&#34;&gt;
  &lt;a href=&#34;https://prasna.ca/contact&#34;&gt;[web]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.linkedin.com/company/prasna-it&#34;&gt;[in]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.facebook.com/prasnait&#34;&gt;[fb]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.instagram.com/prasna.ca&#34;&gt;[ig]&lt;/a&gt; ·
  &lt;a href=&#34;https://x.com/PrasnaIT&#34;&gt;[x]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.tiktok.com/@prasna.ca&#34;&gt;[tt]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.youtube.com/channel/UCbDEvFG_MxmAvLsTeG02S8Q&#34;&gt;[yt]&lt;/a&gt;
&lt;/div&gt;

</description>
    </item>
    
    
    
    <item>
      <title>Create static website from Drupal 7 and deploy into Cloudflare Pages</title>
      <link>https://sanjayregmi.com/posts/create-static-website-using-cloudflare-pages/</link>
      <pubDate>Fri, 29 Dec 2023 20:50:12 -0800</pubDate>
      
      <guid>https://sanjayregmi.com/posts/create-static-website-using-cloudflare-pages/</guid>
      <description>&lt;p&gt;To extract a static website from Drupal 7.x so it can be hosted on Cloudflare Pages, follow the instructions below:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Install plugin &amp;ldquo;Static Generator&amp;rdquo; from (&lt;a href=&#34;https://www.drupal.org/project/static&#34;&gt;www.drupal.org/project/static&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Run it.&lt;/li&gt;
&lt;li&gt;All static files will be created under &amp;ldquo;static&amp;rdquo; folder in the root of your Drupal Installation after you complete initial setup.&lt;/li&gt;
&lt;li&gt;Create a new Github repo, upload all files to Github and deploy into Cloudflare. Your website will be live in the URL you setup during deployment.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If you do not know git, use &amp;ldquo;Git Desktop&amp;rdquo;, load all the files, and sync it up. As soon as the sync is complete, if you&amp;rsquo;ve setup Cloudflare pages to autodeploy (default mode), your site will be deployed in Cloudflare near instantly.&lt;/p&gt;
&lt;p&gt;🔴&lt;/p&gt;
&lt;div class=&#34;top-content&#34; style=&#34;text-align: center;&#34;&gt;
  &lt;a href=&#34;https://prasna.ca/contact&#34;&gt;[web]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.linkedin.com/company/prasna-it&#34;&gt;[in]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.facebook.com/prasnait&#34;&gt;[fb]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.instagram.com/prasna.ca&#34;&gt;[ig]&lt;/a&gt; ·
  &lt;a href=&#34;https://x.com/PrasnaIT&#34;&gt;[x]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.tiktok.com/@prasna.ca&#34;&gt;[tt]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.youtube.com/channel/UCbDEvFG_MxmAvLsTeG02S8Q&#34;&gt;[yt]&lt;/a&gt;
&lt;/div&gt;

</description>
    </item>
    
    
    
    <item>
      <title>Resolve &#34;Briefly unavailable for scheduled maintenance&#34; error in Wordpress</title>
      <link>https://sanjayregmi.com/posts/wordpress-maintenance-error/</link>
      <pubDate>Wed, 27 Dec 2023 20:52:43 -0800</pubDate>
      
      <guid>https://sanjayregmi.com/posts/wordpress-maintenance-error/</guid>
      <description>&lt;p&gt;Cause - happens when a plugin update gets &amp;lsquo;stuck&amp;rsquo; or when trying to update multiple plugins at the same time in WordPress. If it doesn&amp;rsquo;t go away:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;SSH to the server (or FTP)&lt;/li&gt;
&lt;li&gt;Navigate to the web root directory. Its /var/www/html for Apache and Nginx generally.&lt;/li&gt;
&lt;li&gt;Navigate to the root folder of the website as you might have more than one website running.&lt;/li&gt;
&lt;li&gt;Find and delete the file called &amp;ldquo;.maintenance&amp;rdquo;. (rm foobar)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;🎀&lt;/p&gt;
&lt;div class=&#34;top-content&#34; style=&#34;text-align: center;&#34;&gt;
  &lt;a href=&#34;https://prasna.ca/contact&#34;&gt;[web]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.linkedin.com/company/prasna-it&#34;&gt;[in]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.facebook.com/prasnait&#34;&gt;[fb]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.instagram.com/prasna.ca&#34;&gt;[ig]&lt;/a&gt; ·
  &lt;a href=&#34;https://x.com/PrasnaIT&#34;&gt;[x]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.tiktok.com/@prasna.ca&#34;&gt;[tt]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.youtube.com/channel/UCbDEvFG_MxmAvLsTeG02S8Q&#34;&gt;[yt]&lt;/a&gt;
&lt;/div&gt;

</description>
    </item>
    
    
    
    <item>
      <title>Add your website to Clouldflare DNS using the free tier</title>
      <link>https://sanjayregmi.com/posts/add-your-website-to-cloudflare/</link>
      <pubDate>Wed, 20 Dec 2023 20:49:52 -0800</pubDate>
      
      <guid>https://sanjayregmi.com/posts/add-your-website-to-cloudflare/</guid>
      <description>&lt;p&gt;Cloudflare free tier is too cool not to use for your websites. It provides DNS management, free optimizations, DDOS protection, free caching and quick response times. Here&amp;rsquo;s how to setup a website.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Login to Cloudflare, add your website, follow insturctions.&lt;/li&gt;
&lt;li&gt;Change the NS of your domain to the two Cloudflare ones. Wait for 10 mins to 1 hour for propagation.&lt;/li&gt;
&lt;li&gt;Cloudflare emails when your NS has propagated.&lt;/li&gt;
&lt;li&gt;Go to DNS management, add the A name (link with the IP) and then a CNAME for WWW to your URL without www. Example:&lt;/li&gt;
&lt;li&gt;A record, example.com, IP &amp;ndash;&amp;gt; Save&lt;/li&gt;
&lt;li&gt;CNAME, www, example.com&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Leave both fields &amp;lsquo;proxied&amp;rsquo;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;On your webserver, ensure you have certificate setup.&lt;/li&gt;
&lt;li&gt;On the SSL/TLS panel, change the mode to &amp;ldquo;Full (Strict). If you have issues, change them back to &amp;lsquo;Flexible&amp;rsquo; and investigate.&lt;/li&gt;
&lt;li&gt;On SSL/TS &amp;ndash;&amp;gt; Edge Certificates turn on HTTPS, Set Min TLS to 1.2, Turn on TLS 1.3, Automatic HTTPS Rewrites&lt;/li&gt;
&lt;li&gt;On Speed &amp;ndash;&amp;gt; Optimization &amp;ndash;&amp;gt; Content Optimization &amp;ndash;&amp;gt; Turn on all free features. Test turning on &amp;ldquo;Auto Minify&amp;rdquo; and verify you have no errors when using the website.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;🔴&lt;/p&gt;
&lt;div class=&#34;top-content&#34; style=&#34;text-align: center;&#34;&gt;
  &lt;a href=&#34;https://prasna.ca/contact&#34;&gt;[web]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.linkedin.com/company/prasna-it&#34;&gt;[in]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.facebook.com/prasnait&#34;&gt;[fb]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.instagram.com/prasna.ca&#34;&gt;[ig]&lt;/a&gt; ·
  &lt;a href=&#34;https://x.com/PrasnaIT&#34;&gt;[x]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.tiktok.com/@prasna.ca&#34;&gt;[tt]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.youtube.com/channel/UCbDEvFG_MxmAvLsTeG02S8Q&#34;&gt;[yt]&lt;/a&gt;
&lt;/div&gt;

</description>
    </item>
    
    
    
    <item>
      <title>Lesson for Startups - Frugality Amongst Others</title>
      <link>https://sanjayregmi.com/posts/lesson-for-startups-frugality-amongst-others/</link>
      <pubDate>Mon, 04 Dec 2023 00:51:06 -0800</pubDate>
      
      <guid>https://sanjayregmi.com/posts/lesson-for-startups-frugality-amongst-others/</guid>
      <description>&lt;p&gt;There are only two ways to create revenue. Getting more business or by cutting/limiting your expenses while retaining clients. Frugality is thus very important for a startup where growth is not immediate and one might have to stretch their budgets again and again.&lt;/p&gt;
&lt;p&gt;In the &lt;a href=&#34;https://web.archive.org/web/20231211235201/https://www.economist.com/business/2023/10/26/lessons-from-frugal-businesses-minting-money-in-india&#34;&gt;Economist article&lt;/a&gt;, success of some big Indian companies it describes is because of their focus on profitability, eschewing extravagant spending and nurturing paying customers.&lt;/p&gt;
&lt;p&gt;Here are some examples of their frugality:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Building using free software&lt;/strong&gt;: Zerodha is a software company but uses in-house (probably built with free software) help desk software. This saves them millions yearly.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Nurturing paying customers&lt;/strong&gt;: Zerodha&amp;rsquo;s focus on nurturing paying customers is evident through their $2.50 account opening fee, a cost that clients willingly bear despite the potential for financial strain.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Hiring graduates but training them&lt;/strong&gt;: Zoho rigorously trains recruits.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Advertising&lt;/strong&gt;: Zerodha does not advertise or provide discounts.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Out here in the West where we&amp;rsquo;re &lt;a href=&#34;https://web.archive.org/web/20240102060016/https://www.statista.com/topics/4076/amazon-prime/#topicOverview&#34;&gt;all about consumption&lt;/a&gt;, frugality might not be easy but it definitely helps to build it as part of one&amp;rsquo;s organizational culture and perhaps in the company DNA.&lt;/p&gt;
&lt;p&gt;💝&lt;/p&gt;
&lt;div class=&#34;top-content&#34; style=&#34;text-align: center;&#34;&gt;
  &lt;a href=&#34;https://prasna.ca/contact&#34;&gt;[web]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.linkedin.com/company/prasna-it&#34;&gt;[in]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.facebook.com/prasnait&#34;&gt;[fb]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.instagram.com/prasna.ca&#34;&gt;[ig]&lt;/a&gt; ·
  &lt;a href=&#34;https://x.com/PrasnaIT&#34;&gt;[x]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.tiktok.com/@prasna.ca&#34;&gt;[tt]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.youtube.com/channel/UCbDEvFG_MxmAvLsTeG02S8Q&#34;&gt;[yt]&lt;/a&gt;
&lt;/div&gt;

</description>
    </item>
    
    
    
    <item>
      <title>Delete all alarms from iPhone</title>
      <link>https://sanjayregmi.com/posts/delete-all-alarms-iphone/</link>
      <pubDate>Sun, 26 Nov 2023 20:50:23 -0800</pubDate>
      
      <guid>https://sanjayregmi.com/posts/delete-all-alarms-iphone/</guid>
      <description>&lt;p&gt;Tell Siri &amp;ldquo;Deleted all alarms&amp;rdquo; followed by a &amp;ldquo;yes&amp;rdquo;!&lt;/p&gt;
&lt;p&gt;🍅&lt;/p&gt;
&lt;div class=&#34;top-content&#34; style=&#34;text-align: center;&#34;&gt;
  &lt;a href=&#34;https://prasna.ca/contact&#34;&gt;[web]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.linkedin.com/company/prasna-it&#34;&gt;[in]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.facebook.com/prasnait&#34;&gt;[fb]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.instagram.com/prasna.ca&#34;&gt;[ig]&lt;/a&gt; ·
  &lt;a href=&#34;https://x.com/PrasnaIT&#34;&gt;[x]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.tiktok.com/@prasna.ca&#34;&gt;[tt]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.youtube.com/channel/UCbDEvFG_MxmAvLsTeG02S8Q&#34;&gt;[yt]&lt;/a&gt;
&lt;/div&gt;

</description>
    </item>
    
    
    
    <item>
      <title>Install GRAV on WSL based off Ubuntu</title>
      <link>https://sanjayregmi.com/posts/grav-install/</link>
      <pubDate>Sat, 25 Nov 2023 20:51:24 -0800</pubDate>
      
      <guid>https://sanjayregmi.com/posts/grav-install/</guid>
      <description>&lt;ul&gt;
&lt;li&gt;Install WSL (powershell command as admin &amp;ldquo;wsl &amp;ndash;login&amp;rdquo;)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Inside WSL upon installation&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;install php&lt;/li&gt;
&lt;li&gt;download latest version of grav with admin console, expand in your non-root user account&lt;/li&gt;
&lt;li&gt;CD to the grav directory&lt;/li&gt;
&lt;li&gt;Run &amp;ldquo;php -S localhost:8000 system/router.php&amp;rdquo;&lt;/li&gt;
&lt;li&gt;Access Grav at localhost:8000/admin on the browser of your windows machine&lt;/li&gt;
&lt;li&gt;install any component that Grav complains about (generally PHP libraries)&lt;/li&gt;
&lt;li&gt;your site is at localhost:8000&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;🍉&lt;/p&gt;
&lt;div class=&#34;top-content&#34; style=&#34;text-align: center;&#34;&gt;
  &lt;a href=&#34;https://prasna.ca/contact&#34;&gt;[web]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.linkedin.com/company/prasna-it&#34;&gt;[in]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.facebook.com/prasnait&#34;&gt;[fb]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.instagram.com/prasna.ca&#34;&gt;[ig]&lt;/a&gt; ·
  &lt;a href=&#34;https://x.com/PrasnaIT&#34;&gt;[x]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.tiktok.com/@prasna.ca&#34;&gt;[tt]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.youtube.com/channel/UCbDEvFG_MxmAvLsTeG02S8Q&#34;&gt;[yt]&lt;/a&gt;
&lt;/div&gt;

</description>
    </item>
    
    
    
    <item>
      <title>Configure FreeBSD on an Old Intel Machine with ATI Graphics</title>
      <link>https://sanjayregmi.com/posts/configure-freebsd-on-intel/</link>
      <pubDate>Wed, 01 Nov 2023 01:41:28 -0800</pubDate>
      
      <guid>https://sanjayregmi.com/posts/configure-freebsd-on-intel/</guid>
      <description>&lt;h4 id=&#34;steps&#34;&gt;Steps&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;Default install using Ventoy USB with FreeBSD install ISO&lt;/li&gt;
&lt;li&gt;update pkg by running to install any package ex. pkg install vim&lt;/li&gt;
&lt;li&gt;pkg install bash&lt;/li&gt;
&lt;li&gt;Install video drivers for ati - ref AMD section in &lt;a href=&#34;https://docs.freebsd.org/en/books/handbook/x11/&#34;&gt;https://docs.freebsd.org/en/books/handbook/x11/&lt;/a&gt;. This should take the screen to VGE mode with max resolution&lt;/li&gt;
&lt;li&gt;Make default shell bash: chsh and edit (vim editor runs) the tcsh out with bash&lt;/li&gt;
&lt;li&gt;install kde5, xorg, xfce, firefox-esr, mc, elinks, htop, libreoffice&lt;/li&gt;
&lt;li&gt;allow root to login as ssh: edit /etc/ssh/sshd_config and set PermitRootLogin to yes; restart sshd&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id=&#34;tips&#34;&gt;Tips&lt;/h4&gt;
&lt;p&gt;&lt;strong&gt;Make root writable in single user mode (if you cannot login as root because you messed up the shell or have some corruption:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Commands:&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-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;fsck -y
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;mount -u /
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;mount -a -t ufs
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;swapon -a
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;You can now edit files in /.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;pkg breaks after upgrade (error - &amp;ldquo;ld-elf.so.1&amp;rdquo; &amp;hellip; &amp;ldquo;not found&amp;rdquo;)&lt;/strong&gt;&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-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pkg-static -v
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pkg-static install -f pkg
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pkg upgrade -f
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;🔴&lt;/p&gt;
&lt;p&gt;&lt;small&gt;Last updated: 16 Jan 2026&lt;/small&gt;&lt;/p&gt;
&lt;div class=&#34;top-content&#34; style=&#34;text-align: center;&#34;&gt;
  &lt;a href=&#34;https://prasna.ca/contact&#34;&gt;[web]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.linkedin.com/company/prasna-it&#34;&gt;[in]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.facebook.com/prasnait&#34;&gt;[fb]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.instagram.com/prasna.ca&#34;&gt;[ig]&lt;/a&gt; ·
  &lt;a href=&#34;https://x.com/PrasnaIT&#34;&gt;[x]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.tiktok.com/@prasna.ca&#34;&gt;[tt]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.youtube.com/channel/UCbDEvFG_MxmAvLsTeG02S8Q&#34;&gt;[yt]&lt;/a&gt;
&lt;/div&gt;

</description>
    </item>
    
    
    
    <item>
      <title>Vim Cheatsheet</title>
      <link>https://sanjayregmi.com/posts/vim-cheatsheet/</link>
      <pubDate>Sat, 11 Feb 2023 14:24:52 -0800</pubDate>
      
      <guid>https://sanjayregmi.com/posts/vim-cheatsheet/</guid>
      <description>&lt;p&gt;This page is frequently updated :).&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Didn&amp;rsquo;t know Vim offered spellcheck, handy when editing your md files on the ssh console; enter the following in Vim command mode:&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  :set spell &lt;span class=&#34;nv&#34;&gt;spelllang&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;en_ca
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;Paste from clipboard:&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;SHIFT + Right Click
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;Edit all files iside the directory&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;vim &lt;span class=&#34;se&#34;&gt;\*&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;(&lt;/span&gt;open all files inside the directory&lt;span class=&#34;o&#34;&gt;)&lt;/span&gt;  
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  :ls &lt;span class=&#34;o&#34;&gt;(&lt;/span&gt;shows all opens files in vim&lt;span class=&#34;o&#34;&gt;)&lt;/span&gt;  
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  :w &lt;span class=&#34;o&#34;&gt;(&lt;/span&gt;write the file that is open&lt;span class=&#34;o&#34;&gt;)&lt;/span&gt;  
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  :ls &lt;span class=&#34;o&#34;&gt;(&lt;/span&gt;show all files. The files that is open is marked&lt;span class=&#34;o&#34;&gt;)&lt;/span&gt;  
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  :b filename &lt;span class=&#34;o&#34;&gt;(&lt;/span&gt;open the second file&lt;span class=&#34;o&#34;&gt;)&lt;/span&gt;  
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  repeat &lt;span class=&#34;k&#34;&gt;until&lt;/span&gt; you&lt;span class=&#34;err&#34;&gt;&amp;#39;&lt;/span&gt;re &lt;span class=&#34;k&#34;&gt;done&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;div class=&#34;top-content&#34; style=&#34;text-align: center;&#34;&gt;
  &lt;a href=&#34;https://prasna.ca/contact&#34;&gt;[web]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.linkedin.com/company/prasna-it&#34;&gt;[in]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.facebook.com/prasnait&#34;&gt;[fb]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.instagram.com/prasna.ca&#34;&gt;[ig]&lt;/a&gt; ·
  &lt;a href=&#34;https://x.com/PrasnaIT&#34;&gt;[x]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.tiktok.com/@prasna.ca&#34;&gt;[tt]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.youtube.com/channel/UCbDEvFG_MxmAvLsTeG02S8Q&#34;&gt;[yt]&lt;/a&gt;
&lt;/div&gt;

</description>
    </item>
    
    
    
    <item>
      <title>Koshi (Kosi) River, Koshi Barrage</title>
      <link>https://sanjayregmi.com/posts/kosi-koshi-river-barrage-nepal/</link>
      <pubDate>Tue, 15 Nov 2022 20:51:36 -0800</pubDate>
      
      <guid>https://sanjayregmi.com/posts/kosi-koshi-river-barrage-nepal/</guid>
      <description>&lt;p&gt;Wondering what Koshi river in Nepal, the Koshi Barrage and Indo-Nepal relations are all about over this? I don&amp;rsquo;t have a quick brief here but read/watch through the information below and I hope you&amp;rsquo;ll have a better view than the often politicized information in regular newsmedia. &lt;a href=&#34;https://sanjayregmi.com/about&#34;&gt;Write to me&lt;/a&gt; if you have comments to share.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;What Has Nepal Learned from Unequal Water Treaties with India? Rai Sharad Chandra, Joshi Ratala Dinesh Prasad &lt;a href=&#34;https://www.researchgate.net/publication/352091045_What_Has_Nepal_Learned_from_Unequal_Water_Treaties_with_India&#34;&gt;https://www.researchgate.net/publication/352091045_What_Has_Nepal_Learned_from_Unequal_Water_Treaties_with_India&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Institutional Determinants of Indo-Nepal Hydro Cooperation, Sandeep Bhardwaj &lt;a href=&#34;https://cprindia.org/wp-content/uploads/2021/12/Institutional-Determinants-of-Indo-Nepal-Hydro-Cooperation_Abridged-Report_Sandeep-Bhardwaj.pdf&#34;&gt;https://cprindia.org/wp-content/uploads/2021/12/Institutional-Determinants-of-Indo-Nepal-Hydro-Cooperation_Abridged-Report_Sandeep-Bhardwaj.pdf&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Basin-scale hydrology and sediment dynamics of the Kosi river in the Himalayan foreland Rajiv Sinha, Alok Gupta, Kanchan Mishra, Shivam Tripathi, Santosh Nepal, S.M.Wahid, Somil Swarnkar &lt;a href=&#34;https://www.sciencedirect.com/science/article/pii/S0022169419300289&#34;&gt;https://www.sciencedirect.com/science/article/pii/S0022169419300289&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Nepal&amp;rsquo;s Dangerous Dams by Isabel Hilton, New Yorker, 2015 &lt;a href=&#34;https://www.newyorker.com/news/news-desk/nepals-dangerous-dams&#34;&gt;https://www.newyorker.com/news/news-desk/nepals-dangerous-dams&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Kosi - Video during the building of the barrage - &lt;a href=&#34;https://www.youtube.com/watch?v=I7oEllJpZZM&#34;&gt;https://www.youtube.com/watch?v=I7oEllJpZZM&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;tags: Koshi River Nepal, Koshi River, Koshi Barrage, Koshi Nepal&lt;/p&gt;
&lt;p&gt;🌺&lt;/p&gt;
&lt;div class=&#34;top-content&#34; style=&#34;text-align: center;&#34;&gt;
  &lt;a href=&#34;https://prasna.ca/contact&#34;&gt;[web]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.linkedin.com/company/prasna-it&#34;&gt;[in]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.facebook.com/prasnait&#34;&gt;[fb]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.instagram.com/prasna.ca&#34;&gt;[ig]&lt;/a&gt; ·
  &lt;a href=&#34;https://x.com/PrasnaIT&#34;&gt;[x]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.tiktok.com/@prasna.ca&#34;&gt;[tt]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.youtube.com/channel/UCbDEvFG_MxmAvLsTeG02S8Q&#34;&gt;[yt]&lt;/a&gt;
&lt;/div&gt;

</description>
    </item>
    
    
    
    <item>
      <title>Sources of Energy in Canada</title>
      <link>https://sanjayregmi.com/posts/energy-sources/</link>
      <pubDate>Tue, 15 Nov 2022 20:50:43 -0800</pubDate>
      
      <guid>https://sanjayregmi.com/posts/energy-sources/</guid>
      <description>&lt;ul&gt;
&lt;li&gt;40pc Petroleum Products&lt;/li&gt;
&lt;li&gt;36pc Natural gas&lt;/li&gt;
&lt;li&gt;17pc Hydro&lt;/li&gt;
&lt;li&gt;1pc Others&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;76% is from non-renewable sources.&lt;/p&gt;
&lt;p&gt;2022 Data - &lt;a href=&#34;https://web.archive.org/web/20221019161726/https://www.cer-rec.gc.ca/en/data-analysis/energy-markets/provincial-territorial-energy-profiles/provincial-territorial-energy-profiles-canada.html&#34;&gt;https://web.archive.org/web/20221019161726/https://www.cer-rec.gc.ca/en/data-analysis/energy-markets/provincial-territorial-energy-profiles/provincial-territorial-energy-profiles-canada.html&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;🍓&lt;/p&gt;
&lt;div class=&#34;top-content&#34; style=&#34;text-align: center;&#34;&gt;
  &lt;a href=&#34;https://prasna.ca/contact&#34;&gt;[web]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.linkedin.com/company/prasna-it&#34;&gt;[in]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.facebook.com/prasnait&#34;&gt;[fb]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.instagram.com/prasna.ca&#34;&gt;[ig]&lt;/a&gt; ·
  &lt;a href=&#34;https://x.com/PrasnaIT&#34;&gt;[x]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.tiktok.com/@prasna.ca&#34;&gt;[tt]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.youtube.com/channel/UCbDEvFG_MxmAvLsTeG02S8Q&#34;&gt;[yt]&lt;/a&gt;
&lt;/div&gt;

</description>
    </item>
    
    
    
    <item>
      <title>Teach Kids Crypto</title>
      <link>https://sanjayregmi.com/posts/teach-kids-crypto/</link>
      <pubDate>Wed, 22 Sep 2021 20:53:04 -0800</pubDate>
      
      <guid>https://sanjayregmi.com/posts/teach-kids-crypto/</guid>
      <description>&lt;p&gt;Ask them to read in the following order (12-13 yrs old):&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Bitcoin Whitepaper: &lt;a href=&#34;https://web.archive.org/web/20210906010924/https://nakamotoinstitute.org/bitcoin/&#34;&gt;https://web.archive.org/web/20210906010924/https://nakamotoinstitute.org/bitcoin/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;After the dry whitepaper, this will get them excited: Silkroad - &lt;a href=&#34;https://web.archive.org/web/20210917214326/https://www.wired.com/2015/04/silk-road-1/&#34;&gt;https://web.archive.org/web/20210917214326/https://www.wired.com/2015/04/silk-road-1/&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;🐾&lt;/p&gt;
&lt;div class=&#34;top-content&#34; style=&#34;text-align: center;&#34;&gt;
  &lt;a href=&#34;https://prasna.ca/contact&#34;&gt;[web]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.linkedin.com/company/prasna-it&#34;&gt;[in]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.facebook.com/prasnait&#34;&gt;[fb]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.instagram.com/prasna.ca&#34;&gt;[ig]&lt;/a&gt; ·
  &lt;a href=&#34;https://x.com/PrasnaIT&#34;&gt;[x]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.tiktok.com/@prasna.ca&#34;&gt;[tt]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.youtube.com/channel/UCbDEvFG_MxmAvLsTeG02S8Q&#34;&gt;[yt]&lt;/a&gt;
&lt;/div&gt;

</description>
    </item>
    
    
    
    <item>
      <title>How to make Nepali Momo</title>
      <link>https://sanjayregmi.com/posts/nepali-momo/</link>
      <pubDate>Fri, 30 Oct 2020 20:51:10 -0800</pubDate>
      
      <guid>https://sanjayregmi.com/posts/nepali-momo/</guid>
      <description>&lt;p&gt;One of the best videos around!

&lt;div style=&#34;position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;&#34;&gt;
  &lt;iframe src=&#34;https://www.youtube.com/embed/5WCEr5AYxZc&#34; style=&#34;position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;&#34; allowfullscreen title=&#34;How to make Nepali Momo&#34;&gt;&lt;/iframe&gt;
&lt;/div&gt;
&lt;/p&gt;
&lt;p&gt;🏮&lt;/p&gt;
&lt;div class=&#34;top-content&#34; style=&#34;text-align: center;&#34;&gt;
  &lt;a href=&#34;https://prasna.ca/contact&#34;&gt;[web]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.linkedin.com/company/prasna-it&#34;&gt;[in]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.facebook.com/prasnait&#34;&gt;[fb]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.instagram.com/prasna.ca&#34;&gt;[ig]&lt;/a&gt; ·
  &lt;a href=&#34;https://x.com/PrasnaIT&#34;&gt;[x]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.tiktok.com/@prasna.ca&#34;&gt;[tt]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.youtube.com/channel/UCbDEvFG_MxmAvLsTeG02S8Q&#34;&gt;[yt]&lt;/a&gt;
&lt;/div&gt;

</description>
    </item>
    
    
    
    <item>
      <title>Limpiyadhura, Lipulekh</title>
      <link>https://sanjayregmi.com/posts/limpiyadhura/</link>
      <pubDate>Sat, 20 Jun 2020 20:52:11 -0800</pubDate>
      
      <guid>https://sanjayregmi.com/posts/limpiyadhura/</guid>
      <description>&lt;p&gt;The following is a compilation of some insightful YouTube discussions when the issue of Limpiyadhura and Lipulekh was raging on.&lt;/p&gt;
&lt;h2 id=&#34;recommended-if-you-dont-have-a-lot-time&#34;&gt;Recommended if you don&amp;rsquo;t have a lot time&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://www.youtube.com/watch?v=bg9N59wTnrw&amp;amp;fbclid=IwAR21OW4YGHLeO93fbLi&#34;&gt;Former Ambassador Dr. Jaya Raj Acharya on history, foreign relations, and diplomacy&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.youtube.com/watch?v=BnF27uJIXos&amp;amp;t=726s&amp;amp;fbclid=IwAR0JkAdWCe23&#34;&gt;Rakesh Sood and Kanak Dixit in Wire&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.youtube.com/watch?v=4QMz3qiCQj8&#34;&gt;International Law Expert Apurva Khatiwada - What&amp;rsquo;s Nepal&amp;rsquo;s options if it goes through ICJ&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;general-list&#34;&gt;General List&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://www.youtube.com/watch?v=RHNQmQK4Jic&#34;&gt;Ratan Bhandari&lt;/a&gt; &amp;ndash; informative&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.youtube.com/watch?v=4jAqnOKBQqQ&#34;&gt;Bishwa Bandhu Thapa&lt;/a&gt; &amp;ndash; provides policy insights&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.youtube.com/watch?v=8wTGviCo5uQ&#34;&gt;Dr. Ramesh Dhungel&lt;/a&gt; – informative&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://youtu.be/gS_QRQX9J0M&#34;&gt;Dr. Dipak Gyawali&lt;/a&gt;&amp;ndash; some good information&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.youtube.com/watch?v=_AQ5USO73AQ&#34;&gt;Achyut Raj Regmi&lt;/a&gt; – interesting to listen&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.youtube.com/watch?v=AEDvbwNbaxI&#34;&gt;Rukmagat Katuwal&lt;/a&gt; – some relevance&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.youtube.com/watch?v=bPN2br0dQes&#34;&gt;Dr. Keshar Bahadur Bhandari&lt;/a&gt; – good one&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.youtube.com/watch?v=3vAwcqd_j1A&#34;&gt;Ashok Mehata&lt;/a&gt;- border politics&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.youtube.com/watch?v=R-p7sXBL1cA&#34;&gt;Nepal China&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.youtube.com/watch?v=EEabYmzv0FY&#34;&gt;Anti Indian movement&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.youtube.com/watch?v=EGZme4BbA0k&#34;&gt;KP Oli on Nepal-India border&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.youtube.com/watch?v=DYWoaDItpMA&#34;&gt;China on Lipulek&lt;/a&gt; – some ideas&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.youtube.com/watch?v=LOG3Zu5u-fk&#34;&gt;Indian military in Kalapani&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.youtube.com/watch?v=i4aRRpkWdXo&#34;&gt;Indian scholars on Nepal India border&lt;/a&gt; – thought provoking&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.youtube.com/watch?v=lM8AZ9f3u4A&#34;&gt;Reactive India&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.youtube.com/watch?v=QLXFS0cNXr8&#34;&gt;SD Muni Ashok Mehata and Rajan Bhattarai&lt;/a&gt; – thought provoking&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.youtube.com/watch?v=nKE2OYokxzU&#34;&gt;Dr. Bijaya Joli, BJP India&lt;/a&gt; – appalling conversations&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.youtube.com/watch?v=gG3B46S0Ejc&#34;&gt;Saurav with AP News&lt;/a&gt; – revolutionary but less pragmatic&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.youtube.com/watch?v=3vAwcqd_j1A&#34;&gt;Dr. Prakash Chandra Lohani&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;more-interviews-of-interest&#34;&gt;More interviews of interest&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://www.youtube.com/watch?v=hN5g5PI0564&#34;&gt;Historian, Dr. Dinesh Raj Pant&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.youtube.com/watch?v=9eanJa3NCB0&#34;&gt;Surveyor, Toya Nath Baral&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;🌷&lt;/p&gt;
&lt;div class=&#34;top-content&#34; style=&#34;text-align: center;&#34;&gt;
  &lt;a href=&#34;https://prasna.ca/contact&#34;&gt;[web]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.linkedin.com/company/prasna-it&#34;&gt;[in]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.facebook.com/prasnait&#34;&gt;[fb]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.instagram.com/prasna.ca&#34;&gt;[ig]&lt;/a&gt; ·
  &lt;a href=&#34;https://x.com/PrasnaIT&#34;&gt;[x]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.tiktok.com/@prasna.ca&#34;&gt;[tt]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.youtube.com/channel/UCbDEvFG_MxmAvLsTeG02S8Q&#34;&gt;[yt]&lt;/a&gt;
&lt;/div&gt;

</description>
    </item>
    
    
    
    <item>
      <title>History of Pokhara</title>
      <link>https://sanjayregmi.com/posts/history-of-pokhara/</link>
      <pubDate>Mon, 15 Jun 2020 20:50:59 -0800</pubDate>
      
      <guid>https://sanjayregmi.com/posts/history-of-pokhara/</guid>
      <description>&lt;p&gt;Further Reading:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://www.researchgate.net/publication/325036289_Ongoing_fluvial_recovery_from_medieval_earthquakes_Pokhara_Nepal&#34;&gt;https://www.researchgate.net/publication/325036289_Ongoing_fluvial_recovery_from_medieval_earthquakes_Pokhara_Nepal&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Pokhara: Urbanization, Environment and Development Kindle Editionby Jagannath Adhikari (Author)&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.earthmagazine.org/article/medieval-earthquakes-nepal-may-help-reveal-region%27s-tectonic-future&#34;&gt;https://www.earthmagazine.org/article/medieval-earthquakes-nepal-may-help-reveal-region%27s-tectonic-future&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Regmi Research Series - &lt;a href=&#34;http://www.digitalhimalaya.com/collections/journals/regmi/&#34;&gt;http://www.digitalhimalaya.com/collections/journals/regmi/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Taylor, Carl E. “A Medical Survey of the Kali Gandak and Pokhara Valleys of Central Nepal.” Geographical Review, vol. 41, no. 3, 1951, pp. 421–437. JSTOR, &lt;a href=&#34;https://www.jstor.org/stable/210961&#34;&gt;www.jstor.org/stable/210961&lt;/a&gt;. Accessed 15 June 2020.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://blogs.agu.org/landslideblog/2012/05/23/understanding-the-seti-river-landslide-in-nepal/&#34;&gt;https://blogs.agu.org/landslideblog/2012/05/23/understanding-the-seti-river-landslide-in-nepal/&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;🌹&lt;/p&gt;
&lt;div class=&#34;top-content&#34; style=&#34;text-align: center;&#34;&gt;
  &lt;a href=&#34;https://prasna.ca/contact&#34;&gt;[web]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.linkedin.com/company/prasna-it&#34;&gt;[in]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.facebook.com/prasnait&#34;&gt;[fb]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.instagram.com/prasna.ca&#34;&gt;[ig]&lt;/a&gt; ·
  &lt;a href=&#34;https://x.com/PrasnaIT&#34;&gt;[x]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.tiktok.com/@prasna.ca&#34;&gt;[tt]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.youtube.com/channel/UCbDEvFG_MxmAvLsTeG02S8Q&#34;&gt;[yt]&lt;/a&gt;
&lt;/div&gt;

</description>
    </item>
    
    
    
    <item>
      <title>Install FreeBSD via pxeboot Using mfsbsd for Systems That Have Less Than 512MB Memory</title>
      <link>https://sanjayregmi.com/posts/install-freebsd-via-pxeboot-using-mfsbsd-for-systems-that-have-less-than-512mb-memory/</link>
      <pubDate>Tue, 09 Apr 2019 13:30:37 -0800</pubDate>
      
      <guid>https://sanjayregmi.com/posts/install-freebsd-via-pxeboot-using-mfsbsd-for-systems-that-have-less-than-512mb-memory/</guid>
      <description>&lt;p&gt;If you are PXE booting a client machine with an ISO file that is bigger than available memory on your client, the PXE boot will probably fail. This is because PXE boot is copying the ISO into memory. Nowadays, most of the OS install ISOs are more than 512MB, even for FreeBSD. So here&amp;rsquo;s the process to install FreeBSD on your very old hardware with 512MB memory or less.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Go to &lt;a href=&#34;https://mfsbsd.vx.sk/&#34;&gt;https://mfsbsd.vx.sk/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Grab an iso based on your architecture. For example I got the iso from here - &lt;a href=&#34;https://mfsbsd.vx.sk/files/iso/10/i386/&#34;&gt;https://mfsbsd.vx.sk/files/iso/10/i386/&lt;/a&gt; as my old machine was an i386! (Yes, its not the latest FreeBSD but I can always upgrade).&lt;/li&gt;
&lt;li&gt;Setup &lt;a href=&#34;https://sanjayregmi.com/posts/pxe-boot-to-install-any-operating-system-the-quickest-way/&#34;&gt;tftpboot&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Once booted, run: &lt;code&gt;zfsinstall -d /dev/ada0&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;If needed to remove partitions use &lt;code&gt;destroygeom -d /dev/ada0&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Reboot&lt;/li&gt;
&lt;li&gt;&lt;code&gt;bsdconfig&lt;/code&gt; and run network setup so the ethernet card is up and running&lt;/li&gt;
&lt;li&gt;&lt;code&gt;pkg install pkg&lt;/code&gt; to install the package manager&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;configure-basic-freebsd-tasks&#34;&gt;Configure basic FreeBSD tasks&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Install efl and xorg&lt;/li&gt;
&lt;li&gt;Edit .xinitc file to include exec englightenment_start startx&lt;/li&gt;
&lt;li&gt;Edit rc.conf to include sshd_enable=&amp;ldquo;YES&amp;rdquo;; edit /etc/ssh/sshd_config to allow root login and X forwarding&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&#34;top-content&#34; style=&#34;text-align: center;&#34;&gt;
  &lt;a href=&#34;https://prasna.ca/contact&#34;&gt;[web]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.linkedin.com/company/prasna-it&#34;&gt;[in]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.facebook.com/prasnait&#34;&gt;[fb]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.instagram.com/prasna.ca&#34;&gt;[ig]&lt;/a&gt; ·
  &lt;a href=&#34;https://x.com/PrasnaIT&#34;&gt;[x]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.tiktok.com/@prasna.ca&#34;&gt;[tt]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.youtube.com/channel/UCbDEvFG_MxmAvLsTeG02S8Q&#34;&gt;[yt]&lt;/a&gt;
&lt;/div&gt;

</description>
    </item>
    
    
    
    <item>
      <title>Split Windows in Text Mode in Freebsd and Linux</title>
      <link>https://sanjayregmi.com/posts/split-windows-in-text-mode-freebsd-and-linux/</link>
      <pubDate>Mon, 01 Apr 2019 13:55:36 -0800</pubDate>
      
      <guid>https://sanjayregmi.com/posts/split-windows-in-text-mode-freebsd-and-linux/</guid>
      <description>&lt;p&gt;tmux is a beautiful console program that allows you to split your windows. Very handy with today&amp;rsquo;s large screens.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;run &lt;code&gt;tmux&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;CTRL + B &amp;ldquo;&lt;/code&gt; for horizontal split&lt;/li&gt;
&lt;li&gt;&lt;code&gt;CTRL + B %&lt;/code&gt; for vertical split&lt;/li&gt;
&lt;li&gt;&lt;code&gt;CTRL + B o&lt;/code&gt; to move from one window to another&lt;/li&gt;
&lt;li&gt;a cheatsheet lives at &lt;a href=&#34;https://tmuxcheatsheet.com&#34;&gt;https://tmuxcheatsheet.com&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;🦌
&lt;div class=&#34;top-content&#34; style=&#34;text-align: center;&#34;&gt;
  &lt;a href=&#34;https://prasna.ca/contact&#34;&gt;[web]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.linkedin.com/company/prasna-it&#34;&gt;[in]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.facebook.com/prasnait&#34;&gt;[fb]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.instagram.com/prasna.ca&#34;&gt;[ig]&lt;/a&gt; ·
  &lt;a href=&#34;https://x.com/PrasnaIT&#34;&gt;[x]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.tiktok.com/@prasna.ca&#34;&gt;[tt]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.youtube.com/channel/UCbDEvFG_MxmAvLsTeG02S8Q&#34;&gt;[yt]&lt;/a&gt;
&lt;/div&gt;
&lt;/p&gt;
</description>
    </item>
    
    
    
    <item>
      <title>Why Read Ulysses?</title>
      <link>https://sanjayregmi.com/posts/why-read-ulysses/</link>
      <pubDate>Wed, 13 Feb 2019 13:51:36 -0800</pubDate>
      
      <guid>https://sanjayregmi.com/posts/why-read-ulysses/</guid>
      <description>&lt;p&gt;To those who&amp;rsquo;re used to reading books where there is a plot, events happen and the story moves to an end or a goal, the &amp;ldquo;stream of consciousness&amp;rdquo; technique comes rather as a surprise. Some like it, many others find it dense and cannot carry on after a few pages.&lt;/p&gt;
&lt;p&gt;If you enjoyed dipping your feet into the consciousness technique in &amp;ldquo;To the lighthouse&amp;rdquo; by Virginia Woolf, the one to go next is definitely &amp;ldquo;Ulysses&amp;rdquo; by James Joyce. The problem with Ulysses is that its considered one of the most difficult to read books. Searching for why one should read it and how to read it, I came across &lt;a href=&#34;https://www.economist.com/prospero/2012/06/16/why-you-should-read-this-book&#34;&gt;an article by the Economist&lt;/a&gt; which I simply could not read and forget. Of course, it mentions we need three other books to read the one but it should be an amazing experience, regardless.&lt;/p&gt;
&lt;p&gt;To those that first read Woolf and want to have a general comparison between the two, &lt;a href=&#34;https://web.archive.org/web/20240112075657/https://www.theguardian.com/books/booksblog/2013/jul/16/michael-cunningham-folio-joyce-woolf&#34;&gt;this article provides quick info&lt;/a&gt;.&lt;/p&gt;
&lt;div class=&#34;top-content&#34; style=&#34;text-align: center;&#34;&gt;
  &lt;a href=&#34;https://prasna.ca/contact&#34;&gt;[web]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.linkedin.com/company/prasna-it&#34;&gt;[in]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.facebook.com/prasnait&#34;&gt;[fb]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.instagram.com/prasna.ca&#34;&gt;[ig]&lt;/a&gt; ·
  &lt;a href=&#34;https://x.com/PrasnaIT&#34;&gt;[x]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.tiktok.com/@prasna.ca&#34;&gt;[tt]&lt;/a&gt; ·
  &lt;a href=&#34;https://www.youtube.com/channel/UCbDEvFG_MxmAvLsTeG02S8Q&#34;&gt;[yt]&lt;/a&gt;
&lt;/div&gt;

</description>
    </item>
    
    
    
    
    
    
  </channel>
</rss>
