<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title>Posts on almonde</title>
		<link>https://almonde.org/posts/</link>
		<description>Recent content in Posts on almonde</description>
		<generator>Hugo -- gohugo.io</generator>
		<language>en-us</language>
		<lastBuildDate>Fri, 30 Sep 2022 00:00:00 +0000</lastBuildDate>
		<atom:link href="https://almonde.org/posts/index.xml" rel="self" type="application/rss+xml" />
		
		<item>
			<title>Backblaze B2 Backups with Restic</title>
			<link>https://almonde.org/posts/backblaze-b2-backups-with-restic/</link>
			<pubDate>Fri, 30 Sep 2022 00:00:00 +0000</pubDate>
			
			<guid>https://almonde.org/posts/backblaze-b2-backups-with-restic/</guid>
			<description>Introduction This will walk you through setting up encrypted backups using Backblaze B2 and the Restic app on the client. All run through the terminal. Restic Docs Backblaze Sign In
Keep in mind that this is a file level backup, not a block level backup. Things like VM images, encrypted containers, etc will cause massive bandwidth usage and isn&amp;rsquo;t the appropriate solution for those. Really any large binary file that changes frequently shouldn&amp;rsquo;t use this method.</description>
			<content type="html"><![CDATA[<h2 id="introduction">Introduction</h2>
<p>This will walk you through setting up encrypted backups using Backblaze B2 and the Restic app on the client. All run through the terminal.
<a href="https://restic.readthedocs.io/en/latest/030_preparing_a_new_repo.html">Restic Docs</a>
<a href="https://secure.backblaze.com">Backblaze Sign In</a></p>
<p>Keep in mind that this is a file level backup, not a block level backup. Things like VM images, encrypted containers, etc will cause massive bandwidth usage and isn&rsquo;t the appropriate solution for those. Really any large binary file that changes frequently shouldn&rsquo;t use this method.</p>
<h2 id="setup-backup">Setup Backup</h2>
<blockquote>
<p>Recommendation: Customize the <em>Caps and Alerts</em> page to your liking to avoid unexpected cost.</p>
</blockquote>
<p>Create a B2 bucket on Backblaze, and get the <em>Bucket ID</em>.</p>
<p>Go to the <em>App Keys</em> section and create a new app key with access to your bucket.</p>
<p>Restic uses environment variables for account access. Export these environment variables (also known as keyID and applicationKey):
<code>export B2_ACCOUNT_ID={ID}</code>
<code>export B2_ACCOUNT_KEY={KEY}</code></p>
<p>Initialize the Restic repository:
<code>restic -r b2:{BUCKET NAME}:{REMOTE REPO PATH} init</code></p>
<p>You will now enter an encryption key for this backup. Keep this safe. You can&rsquo;t recover your data without this.</p>
<p>Begin the backup:
<code>restic -r b2:{BUCKET NAME}:{REMOTE REPO PATH} --verbose backup {LOCAL PATH TO BACKUP FROM}</code></p>
<h2 id="viewing-backup-history">Viewing Backup History</h2>
<p>View snapshot history with:
<code>restic -r b2:{BUCKET NAME}:{REMOTE REPO PATH} snapshots</code></p>
<h2 id="restoring-backup">Restoring Backup</h2>
<blockquote>
<p>Note: I have not fully tested this</p>
</blockquote>
<p>Use this to restore a remote backup to your local computer.
Use the <em>ID</em> found with the above snapshots command.</p>
<p><code>restic -r b2:{BUCKET NAME}:{REMOTE REPO PATH} restore {ID} --target {LOCAL PATH TO RESTORE TO}</code></p>
<h2 id="viewing-backup-data--mounting-backup">Viewing Backup Data / Mounting Backup</h2>
<p>Use the mount option to restore only certain files, or view that the backup is working properly.</p>
<p><code>restic -r b2:{BUCKET NAME}:{REMOTE REPO PATH} mount {LOCAL MOUNT PATH}</code></p>
]]></content>
		</item>
		
		<item>
			<title>ffmpeg - Transcoding</title>
			<link>https://almonde.org/posts/ffmpeg-transcoding/</link>
			<pubDate>Fri, 30 Sep 2022 00:00:00 +0000</pubDate>
			
			<guid>https://almonde.org/posts/ffmpeg-transcoding/</guid>
			<description>Introduction This is a super basic usage of ffmpeg for changing video quality. Very useful for home media servers, or just people who own devices that record 4k in x264 or worse&amp;hellip;
ffmpeg basics Make video smaller (but still good quality) ffmpeg -i input.mkv -vcodec libx264 -crf 24 output.mkv
CRF values: x264: 0 (lossless) - 23 (default) - 51 (worst) x265: 0 (lossless) - 28 (default) - 51 (worst)
Multiple files Change the file extension, and CRF value to whatever you need</description>
			<content type="html"><![CDATA[<h1 id="introduction">Introduction</h1>
<p>This is a super basic usage of ffmpeg for changing video quality. Very useful for home media servers, or just people who own devices that record 4k in x264 or worse&hellip;</p>
<h2 id="ffmpeg-basics">ffmpeg basics</h2>
<p>Make video smaller (but still good quality)
<code>ffmpeg -i input.mkv -vcodec libx264 -crf 24 output.mkv</code></p>
<p>CRF values:
<strong>x264</strong>: 0 (lossless) - 23 (default) - 51 (worst)
<strong>x265</strong>: 0 (lossless) - 28 (default) - 51 (worst)</p>
<h2 id="multiple-files">Multiple files</h2>
<p>Change the file extension, and CRF value to whatever you need</p>
<pre tabindex="0"><code>mkdir ffmpeg_output
for file in *.mkv; 
	do ffmpeg -i &quot;\$file&quot; -vcodec libx264 -crf 20 &quot;ffmpeg_output/${file%.mkv}&quot;.mkv
done
</code></pre>]]></content>
		</item>
		
		<item>
			<title>Find Raspberry Pi&#39;s via ARP</title>
			<link>https://almonde.org/posts/find-raspberry-pis-via-arp/</link>
			<pubDate>Fri, 30 Sep 2022 00:00:00 +0000</pubDate>
			
			<guid>https://almonde.org/posts/find-raspberry-pis-via-arp/</guid>
			<description>Introduction Use this one liner to easily find Raspberry Pi&amp;rsquo;s via ARP request on the current Subnet
Command arp -na | grep -e &amp;quot;b8:27:eb&amp;quot; -e &amp;quot;dc:a6:32&amp;quot; -e &amp;quot;e4:5f:01&amp;quot;</description>
			<content type="html"><![CDATA[<h2 id="introduction">Introduction</h2>
<p>Use this one liner to easily find Raspberry Pi&rsquo;s via ARP request on the current Subnet</p>
<h2 id="command">Command</h2>
<p><code>arp -na | grep -e &quot;b8:27:eb&quot; -e &quot;dc:a6:32&quot; -e &quot;e4:5f:01&quot;</code></p>
]]></content>
		</item>
		
		<item>
			<title>ledmon - Identify Disk Drives</title>
			<link>https://almonde.org/posts/identify-disk-drive/</link>
			<pubDate>Fri, 30 Sep 2022 00:00:00 +0000</pubDate>
			
			<guid>https://almonde.org/posts/identify-disk-drive/</guid>
			<description>Introduction On a server with many drive bays (hard drives, HDD, SSD) it can be hard to find which one the software is referring to. Use &amp;ldquo;ledmon&amp;rdquo; to identify the drive using the built-in LED&amp;rsquo;s
Steps Install ledmon (it&amp;rsquo;s called that in Ubuntu repos)
Identify your drive: sudo ledctl locate=/dev/sdb
You should see the LED begin to flash
You can turn off the locate when done with: sudo ledctl locate_off=/dev/sdb</description>
			<content type="html"><![CDATA[<h2 id="introduction">Introduction</h2>
<p>On a server with many drive bays (hard drives, HDD, SSD) it can be hard to find which one the software is referring to. Use &ldquo;ledmon&rdquo; to identify the drive using the built-in LED&rsquo;s</p>
<h2 id="steps">Steps</h2>
<p>Install ledmon (it&rsquo;s called that in Ubuntu repos)</p>
<p>Identify your drive:
<code>sudo ledctl locate=/dev/sdb</code></p>
<p>You should see the LED begin to flash</p>
<p>You can turn off the locate when done with:
<code>sudo ledctl locate_off=/dev/sdb</code></p>
]]></content>
		</item>
		
		<item>
			<title>List every video file&#39;s codec</title>
			<link>https://almonde.org/posts/list-every-video-files-codec/</link>
			<pubDate>Fri, 30 Sep 2022 00:00:00 +0000</pubDate>
			
			<guid>https://almonde.org/posts/list-every-video-files-codec/</guid>
			<description>Introduction Use this script to list every file in the directory, and it&amp;rsquo;s video codec. Try sending the stdout to a file to view the info in a spreadsheet.
Script #!/bin/bash # Field seperator fix for file names with spaces SAVEIFS=$IFS IFS=$(echo -en &amp;quot;\n\b&amp;quot;) # Loop through every file for file in $(ls) do echo $file &amp;quot;|&amp;quot; $(ls -l --block-size=G $file | awk &#39;{print $5}&#39;) &amp;quot;|&amp;quot; $(ffprobe -v error -select_streams v:0 -show_entries stream=codec_name -of default=noprint_wrappers=1:nokey=1 $file) done IFS=$SAVEIFS </description>
			<content type="html"><![CDATA[<h2 id="introduction">Introduction</h2>
<p>Use this script to list every file in the directory, and it&rsquo;s video codec. Try sending the stdout to a file to view the info in a spreadsheet.</p>
<h2 id="script">Script</h2>
<pre tabindex="0"><code>#!/bin/bash

# Field seperator fix for file names with spaces
SAVEIFS=$IFS
IFS=$(echo -en &quot;\n\b&quot;)

# Loop through every file
for file in $(ls)
do
	echo $file &quot;|&quot; $(ls -l --block-size=G $file | awk '{print $5}')  &quot;|&quot; $(ffprobe -v error -select_streams v:0 -show_entries stream=codec_name -of default=noprint_wrappers=1:nokey=1 $file)
done

IFS=$SAVEIFS
</code></pre>]]></content>
		</item>
		
		<item>
			<title>sshuttle - VPN over SSH</title>
			<link>https://almonde.org/posts/sshuttle-vpn-over-ssh/</link>
			<pubDate>Fri, 30 Sep 2022 00:00:00 +0000</pubDate>
			
			<guid>https://almonde.org/posts/sshuttle-vpn-over-ssh/</guid>
			<description>Introduction SSHuttle works pretty well as a quick and dirty solution, but is really slow so use it sparingly.
Commands To connect with sshuttle sshuttle -r USERNAME@SERVER_IP 0.0.0.0/0 -vv
Sudo should not be used if you&amp;rsquo;re using ~/.ssh private keys but sshuttle will request elevation Use 0.0.0.0/0 to route all traffic, or specify an IP/CIDR
If that doesn&amp;rsquo;t work, try this: sshuttle -r USERNAME@SERVER_IP -x SERVER_IP 0/0 -vv
To specify private keys add: --ssh-cmd &#39;ssh -i .</description>
			<content type="html"><![CDATA[<h2 id="introduction">Introduction</h2>
<p>SSHuttle works pretty well as a quick and dirty solution, but is really slow so use it sparingly.</p>
<h2 id="commands">Commands</h2>
<p>To connect with sshuttle
<code>sshuttle -r USERNAME@SERVER_IP 0.0.0.0/0 -vv</code></p>
<p>Sudo should not be used if you&rsquo;re using <code>~/.ssh private keys</code> but sshuttle will request elevation
Use <code>0.0.0.0/0</code> to route all traffic, or specify an IP/CIDR</p>
<p>If that doesn&rsquo;t work, try this:
<code>sshuttle -r USERNAME@SERVER_IP -x SERVER_IP 0/0 -vv</code></p>
<p>To specify private keys add:
<code>--ssh-cmd 'ssh -i .ssh/NAME'</code></p>
<blockquote>
<p>Note: More &lsquo;-v&rsquo; makes it more verbose</p>
</blockquote>
]]></content>
		</item>
		
		<item>
			<title>Wireguard Setup</title>
			<link>https://almonde.org/posts/wireguard-setup/</link>
			<pubDate>Fri, 30 Sep 2022 00:00:00 +0000</pubDate>
			
			<guid>https://almonde.org/posts/wireguard-setup/</guid>
			<description>Introduction This walks you through setting up Wireguard. It is focused towards a traditional Server/Client VPN structure, however if you understand how it works you can make other configurations.
Good unofficial docs Arch wiki, good info but I had issues with their configs
Understanding AllowedIPs This is a confusing option, since it seems like it means two things depending on client or server. Really it&amp;rsquo;s one thing, but it&amp;rsquo;s complicated. On the client under [Peer], AllowedIPs is the IP&amp;rsquo;s that will be routed through this Wireguard tunnel.</description>
			<content type="html"><![CDATA[<h2 id="introduction">Introduction</h2>
<p>This walks you through setting up Wireguard. It is focused towards a traditional Server/Client VPN structure, however if you understand how it works you can make other configurations.</p>
<p>Good <a href="https://github.com/pirate/wireguard-docs">unofficial docs</a>
<a href="https://wiki.archlinux.org/title/WireGuard">Arch wiki</a>, good info but I had issues with their configs</p>
<h2 id="understanding-allowedips">Understanding AllowedIPs</h2>
<p>This is a confusing option, since it seems like it means two things depending on client or server. Really it&rsquo;s one thing, but it&rsquo;s complicated.
On the client under <code>[Peer]</code>, AllowedIPs is the IP&rsquo;s that will be routed through this Wireguard tunnel.
On the server, it is the IPs that the clients will be allowed to use</p>
<h2 id="netipv4ip_forward">net.ipv4.ip_forward</h2>
<p>Sometimes it&rsquo;s necessary to enable this to actually connect to devices on the remote LAN. Temporarily enable with this command:
<code>sysctl -w net.ipv4.ip_forward=1</code>
Permenantly enable by adding a file<code> /etc/sysctl.d/98-wireguard.conf</code> (name is for organization purposes) with contents:
<code>net.ipv4.ip_forward=1</code></p>
<h2 id="client-config">Client config</h2>
<pre tabindex="0"><code>[Interface]
Address = 192.168.30.12/24 (IP you want the client to have. Corresponds to server AllowedIPs but notice different CIDR)
PrivateKey = [key content]

[Peer]
PublicKey = [key content]
PresharedKey = [key content] (Optional - use wg genpsk)
AllowedIPs = 192.168.0.0/16 (See Above)
Endpoint = [Server IP]:51820 (Server IP with port to connect on)
PersistentKeepAlive = 25
</code></pre><h2 id="server-config">Server config</h2>
<pre tabindex="0"><code>[Interface]
Address = 192.168.30.1/24 (VPN gateway and subnet)
PostUp = iptables -A FORWARD -i %i -j ACCEPT; iptables -A FORWARD -o %i -j ACCEPT; iptables -t nat -A POSTROUTING -o enp4s0 -j MASQUERADE
PostDown = iptables -D FORWARD -i %i -j ACCEPT; iptables -D FORWARD -o %i -j ACCEPT; iptables -t nat -D POSTROUTING -o enp4s0 -j MASQUERADE (Replace enp4s0 with your interface)
ListenPort = 51820
PrivateKey = [key content]

[Peer]
# Nickname
AllowedIPs = 192.168.30.12/32 (IP you want the client to have)
PublicKey = [key content]
PresharedKey = [key content] (Optional - use wg genpsk)
PersistentKeepAlive = 25
</code></pre>]]></content>
		</item>
		
		<item>
			<title>ZFS - Setting up ZPool</title>
			<link>https://almonde.org/posts/zfs-setting-up-zpool/</link>
			<pubDate>Fri, 30 Sep 2022 00:00:00 +0000</pubDate>
			
			<guid>https://almonde.org/posts/zfs-setting-up-zpool/</guid>
			<description>Introduction This guide is not complete, and should be re-written when I setup a ZFS Zpool again. However, it should capture some of the issues I had last time.
Finding WWN The WWN is usually best to use as a unique identifier for the drives then partuuid, since UUID applies to partitions, but WWN is physical drives. You can use the /dev/sdaX however those may change on reboots, rendering the ZPool degraded.</description>
			<content type="html"><![CDATA[<h2 id="introduction">Introduction</h2>
<p>This guide is not complete, and should be re-written when I setup a ZFS Zpool again. However, it should capture some of the issues I had last time.</p>
<h2 id="finding-wwn">Finding WWN</h2>
<p>The WWN is usually best to use as a unique identifier for the drives then partuuid, since UUID applies to partitions, but WWN is physical drives.
You can use the /dev/sdaX however those may change on reboots, rendering the ZPool degraded.</p>
<p>Use this command to list drives and their WWN: <code>lsblk -o name,size,mountpoint,wwn</code></p>
<p>Keep note of the WWN&rsquo;s for the drives you want to use</p>
<h2 id="creating-the-zpool">Creating the ZPool</h2>
<p>Create the relevant type of ZPool using this command, modified as needed. I&rsquo;ll create a mirored vdev:
<code>zpool create {NAME} mirror /dev/disk/by-id/{WWN IDENTIFIER} /dev/disk/by-id/{WWN IDENTIFIER}</code></p>
<h2 id="viewing-status">Viewing Status</h2>
<p>Use these two commands to view the status:
<code>zpool status</code>
<code>zpool list</code></p>
<h2 id="configure-scrub">Configure Scrub</h2>
<p>It is a good idea to configure a regularly scheduled scrub, such as once or twice a month. The command is: <code>zpool scrub {NAME}</code></p>
]]></content>
		</item>
		
		<item>
			<title>Future Posts</title>
			<link>https://almonde.org/posts/future-posts/</link>
			<pubDate>Thu, 29 Sep 2022 00:00:00 +0000</pubDate>
			
			<guid>https://almonde.org/posts/future-posts/</guid>
			<description>I&amp;rsquo;m Alive The plan for the blog portion of this site has always been, in part, posting simple how-to documentation for friends to view. That continues to be the primary goal of the blog. I haven&amp;rsquo;t been very consistent with actually writing documentation in my personal life though. That&amp;rsquo;s changed this year with my personal discovery of Obsidian.
Obsidian I highly recommend anyone who likes taking notes wander their way over to the Obsidian website, and see what makes it wonderful.</description>
			<content type="html"><![CDATA[<h1 id="im-alive">I&rsquo;m Alive</h1>
<p>The plan for the blog portion of this site has always been, in part, posting simple how-to documentation for friends to view. That continues to be the primary goal of the blog. I haven&rsquo;t been very consistent with actually writing documentation in my personal life though. That&rsquo;s changed this year with my personal discovery of <a href="https://obsidian.md">Obsidian</a>.</p>
<h1 id="obsidian">Obsidian</h1>
<p>I highly recommend anyone who likes taking notes wander their way over to the Obsidian website, and see what makes it wonderful. I care about it for</p>
<ul>
<li>Vendor Tie-In: I never really have to worry about moving away from Obsidian, since it just uses locally stored markdown files. Moving to another platform is just a matter of copying the raw files over if it supports markdown, or converting them somehow otherwise.</li>
<li>Portability: Due to the nature of the files, it&rsquo;s completely up to the user how they want to handle the files. Locally store? Done. Sync between devices with Syncthing? Easy. Git?  Cryptomator? Google Drive? OneDrive? All of these are easily implemented to fit in with whatever your workflow is. And if you really want it, they offer their own sync service.</li>
<li>Graph view: Discoverability of notes, and visualizing how complex thoughts and documentation relate to each other is <em>significantly</em> better on Obsidian than any other note application I&rsquo;ve used. This is particularly valuable for sharing documentation with someone new.</li>
<li>HUGO: It goes without saying, but since it&rsquo;s based on markdown, I can just copy the files over to HUGO and post to this site.</li>
</ul>
<p>I&rsquo;ve spent many, many hours documenting my existing personal infrastructure, and guides on how to replicate things I&rsquo;ve done in Obsidian. If I think people I know could benefit from it I&rsquo;ll copy them over to this site. Expect to have a lot more files joining the blog for the next little bit! Keep in mind, it won&rsquo;t be everything, and it <em>generally</em> won&rsquo;t be anything I wrote for work. So <strong>expect lower quality guides than I am capable of</strong>. These are all written pretty quick, and I just want to share them with people.</p>
<h1 id="final-thoughts">Final Thoughts</h1>
<p>As always, I&rsquo;m constantly learning new things! If I&rsquo;ve made a mistake about something on the site, feel free to reach out to me on the contact page and let me know!</p>
]]></content>
		</item>
		
		<item>
			<title>How To Check For RDRAND Bug on Ryzen</title>
			<link>https://almonde.org/posts/how-to-check-for-rdrand-bug-on-ryzen/</link>
			<pubDate>Sun, 10 May 2020 00:00:00 +0000</pubDate>
			
			<guid>https://almonde.org/posts/how-to-check-for-rdrand-bug-on-ryzen/</guid>
			<description>What is RDRAND? As a broad overview, RDRAND is a method of returning pseudo-random numbers from the CPU. Originally, it was developed by Intel, however it has since been implemented on AMD CPU&amp;rsquo;s, which is of course where this bug lies.
If you are a Windows user, you can still be affected by this bug, you&amp;rsquo;re just less likely to notice. The theoretical security implications will still affect you, and you should still fix it.</description>
			<content type="html"><![CDATA[<h2 id="what-is-rdrand">What is RDRAND?</h2>
<p>As a broad overview, RDRAND is a method of returning pseudo-random numbers from the CPU. Originally, it was developed by Intel, however it has since been implemented on AMD CPU&rsquo;s, which is of course where this bug lies.</p>
<p><strong>If you are a Windows user</strong>, you can still be affected by this bug, you&rsquo;re just less likely to notice. The theoretical security implications will still affect you, and you should still fix it.</p>
<p>Further reading: <a href="https://en.wikipedia.org/wiki/RDRAND">Wikipedia - RDRAND</a></p>
<h2 id="what-is-amd-ryzens-rdrand-bug">What is AMD Ryzen&rsquo;s RDRAND Bug?</h2>
<p>On some Ryzen CPU&rsquo;s, whenever RDRAND is called it will return the extremely random value of 0xffffffff every single time. I would highly recommend reading Jim Salter from Ars Technica&rsquo;s <a href="https://arstechnica.com/gadgets/2019/10/how-a-months-old-amd-microcode-bug-destroyed-my-weekend/">article on this bug</a> since it will explain more about the bug, and for testing I will have you using his code later.</p>
<p>This has been a very irritating bug that has afflicted me for a while. Using a Linux system, I have found that Linux will soft lockup at random periods. Usually during low CPU usage such as browsing the internet.
The GUI would lock up, and I would be unable to click, or use any UI elements. I could still switch to another TTY, however I was unable to recover the GUI.</p>
<p>According to Jim Salter, these soft lockups are related to SystemD&rsquo;s handling of bad RDRAND output. Although I&rsquo;m admittedly unsure as to what SystemD is specifically doing with RDRAND that causes this. If you have an idea, please email me and let me know!</p>
<p>While I felt that while Jim Salter&rsquo;s article was fantastic, it is a little unclear for those unfamiliar with Linux on how to test it. This step-by-step guide should show you how to test for it yourself, and again I will be using same code Jim Salter provided.</p>
<hr>
<p> </p>
<h2 id="step-by-step-testing-guide">Step-By-Step Testing Guide</h2>
<blockquote>
<p>If you are already using Linux, or know how to setup Linux bootable disks, skip to step 4 for testing</p>
</blockquote>
<ol>
<li>
<p><strong>Download necessary files</strong></p>
<ul>
<li>
<p>We will be using Ubuntu for this tutorial, which can be <a href="https://ubuntu.com/download/desktop">downloaded here</a></p>
</li>
<li>
<p>Download and launch <a href="https://rufus.ie/">Rufus</a></p>
</li>
</ul>
</li>
<li>
<p><strong>Flash the iso to a thumb drive</strong></p>
<ol>
<li>In Rufus, select your thumb drive under &lsquo;Device&rsquo;. Note that all data on this device will be destroyed!</li>
<li>Under &lsquo;Boot selection&rsquo; choose your Ubuntu .iso file</li>
<li>&lsquo;Partition scheme&rsquo; should be <em>MBR</em>, and &lsquo;Target system&rsquo; should be <em>BIOS or UEFI</em></li>
<li>The rest of the settings can remain the same, click &lsquo;START&rsquo; and wait for Rufus to finish
<img src="/images/rufus_example.png" alt="Rufus Example Image">
<blockquote>
<p>Image from <a href="https://rufus.ie">https://rufus.ie</a></p>
</blockquote>
</li>
</ol>
</li>
<li>
<p><strong>Reboot into Ubuntu</strong></p>
<ol>
<li>With the thumb drive plugged in, reboot to your computer&rsquo;s BIOS. Exact steps are dependant on your motherboard manufacturer, but usually during boot you can keep pressing the F12 or Delete key</li>
<li>Once in your BIOS, look for a boot menu and select your thumb drive to overwrite the boot order</li>
<li>Ubuntu may prompt you to &ldquo;Try Ubuntu without installing&rdquo; or &ldquo;Install Ubuntu&rdquo;. You will choose <em>Try Ubuntu without installing</em>
<blockquote>
<p>You should not encounter any partitioning at any time during this tutorial. If Ubuntu is asking you to partition, you may have chosen &ldquo;Install Ubuntu&rdquo; which is not what you&rsquo;re looking for</p>
</blockquote>
</li>
<li>You should see Ubuntu loading, and eventually see a desktop</li>
<li>Connect to the internet by using the WiFi button at the top right, searching &ldquo;WiFi&rdquo;, or by just using ethernet</li>
</ol>
</li>
<li>
<p><strong>Launch Terminal, and test for RDRAND bug</strong></p>
<ol>
<li>
<p>Press your &lsquo;Windows key&rsquo;, or click the 9 dots at the bottom left to bring up your system search</p>
</li>
<li>
<p>Search &ldquo;Terminal&rdquo; and open up the corresponding application</p>
</li>
<li>
<p>Enter this command to download Jim Salter&rsquo;s test application:
<code>wget https://cdn.arstechnica.net/wp-content/uploads/2019/10/rdrand-test.zip</code></p>
</li>
<li>
<p>Enter this command to unzip the archive:
<code>unzip rdrand-test.zip</code></p>
<blockquote>
<p>If the unzip command is not found, enter this command (you will need an internet connection): <em>sudo apt install unzip</em></p>
</blockquote>
</li>
<li>
<p>Run the amd-rdrand-bug application:
<code>./rdrand-test/amd-rdrand-bug</code></p>
</li>
<li>
<p>The output should tell you whether or not you are affected</p>
</li>
</ol>
</li>
</ol>
<p> </p>
<h2 id="fixing-the-rdrand-bug">Fixing the RDRAND Bug</h2>
<p>In the unfortunate event that you are affected by this bug, you are at the whim of your motherboard manufacturer to patch it. Fortunately, this bug was patched by AMD about a year ago as of writing, so your manufacturer has likely added the fix to their firmware.</p>
<p>To install the patch you need to update your motherboard&rsquo;s BIOS/firmware. Unfortunately I cannot write a step-by-step guide on how to do that, since the instructions very depending on which motherboard you own. Simply search &ldquo;BIOS update&rdquo; with your motherboard make and model online, and you should find your manufacturers website with instructions.</p>
<blockquote>
<p><strong>Warning</strong>: Be careful when updating your BIOS/firmware. If you restart your computer, or lose power during the update your motherboard may be bricked and have to be replaced</p>
</blockquote>
<blockquote>
<p>Follow the directions provided by your motherboard manufacturer carefully</p>
</blockquote>
<p>Once your motherboard&rsquo;s BIOS is updated to the latest version, be sure to go through the step-by-step guide once more (you can skip straight into booting into Ubuntu. No need to re-make the thumb drive)</p>
<p>Running the test program should now tell you that your do not have the AMD bug.</p>
<hr>
<p> </p>
<h2 id="closing-thoughts">Closing Thoughts</h2>
<p>This isn&rsquo;t the type of tutorial I would normally like to put on this website. Most of the stuff will be more technical then this. However, I did feel that there was very few tutorials online about testing for this common bug, so hopefully this tutorial will be helpful to someone!</p>
]]></content>
		</item>
		
		<item>
			<title>Transitioning to Hugo</title>
			<link>https://almonde.org/posts/transitioning-to-hugo/</link>
			<pubDate>Wed, 01 Apr 2020 00:00:00 +0000</pubDate>
			
			<guid>https://almonde.org/posts/transitioning-to-hugo/</guid>
			<description>Goals for a website The simple answer is I&amp;rsquo;ve always wanted a website. I grew up during the Yahoo Geocities days, and back then everyone had made their own website. Sure, most of the time they were hideous, brightly colored, horrible animated messes, but they were also unique. They weren&amp;rsquo;t built using drag and drop utilies, or often times even templates. A websites content was solely determined by it&amp;rsquo;s creator. Every title, dropdown, and image was part of the vision of some 12 year old.</description>
			<content type="html"><![CDATA[<h2 id="goals-for-a-website">Goals for a website</h2>
<p>The simple answer is I&rsquo;ve always wanted a website. I grew up during the Yahoo Geocities days, and back then everyone had made their own website. Sure, most of the time they were hideous, brightly colored, horrible animated messes, but they were also unique. They weren&rsquo;t built using drag and drop utilies, or often times even templates. A websites content was solely determined by it&rsquo;s creator. Every title, dropdown, and image was part of the vision of some 12 year old.</p>
<p>Nowadays, personal websites are uncommon, and those that do exist usually just hold resumes. The decentralized internet that once held people&rsquo;s blogs, vacation photos, and even dancing dinasaur gifs has been replaced with corporate services like Facebook and Twitter. While there are advantages to using those services, the downside is a lack of individuality and independence I remember from &lsquo;the internet of old&rsquo;</p>
<p>Another reason is that I often times get asked a lot of questions about self-hosting, privacy, etc. And while I&rsquo;m certainly not an expert in any of these topics, I&rsquo;d like to scream my opinion and experiences into the air. After all, what else is the point of the internet?</p>
<h2 id="why-not-use-wordpress">Why not use Wordpress?</h2>
<p>Every decision is a balancing act between the pro&rsquo;s and con&rsquo;s of each available option. For me, the con&rsquo;s of Wordpress far outweigh the pro&rsquo;s.</p>
<p>Don&rsquo;t get me wrong, Wordpress is a fantastic service, and there are a lot of situations where I would recommend using. However, I have no plans to make my site very complex, have interactive content, a storefront, or anything else that Wordpress excells at.</p>
<p>There are a few downsides to using Wordpress on a simple site like mine. The main issue is added complexity. This complexity can make a website difficult to manage for someone who isn&rsquo;t working on it every day. Complexity can make a website load slower, requiring me to pay for better hosting, or upgrade my self hosted equipment. As it stands, I pay for this website to be hosted but it&rsquo;s practically free. Complexity can add security vulnerabilies that for many sites are completely unecessary. Most Wordpress vulnerabilities come from plugins and themes, but anytime you&rsquo;re running a small application in a web browser you&rsquo;re going to have more vulnerabilites than a simple page displaying formatted text.</p>
<p>To summarize, <a href="https://en.wikipedia.org/wiki/KISS_principle">KISS</a></p>
<p>What do you do when you don&rsquo;t want to fully write your own website, don&rsquo;t want to have massive Javascript applications or Wordpress, but still want it to be easy on the eyes? Queue static site generators!</p>
<h2 id="experience-with-hugo-thusfar">Experience with Hugo thusfar</h2>
<p>So far Hugo has been fantastic. I spent a bit of time on <a href="https://gohugo.io/">Hugo&rsquo;s website</a> to find the right theme for me. After that it was just a matter of installing Hugo (which could be done through Ubuntu&rsquo;s built in repo&rsquo;s) and adding the theme. Now I have spent the majority of the time doing what I feel is most important: adding content to the site.</p>
<p>Writing this article was a great experience. With the Hugo server running in the background, all I needed to do was hit save in my text editor and my browser automatically updated the newest content.</p>
<p>If you&rsquo;re thinking about setting up your own website, I highly recommend looking into Hugo and seeing if it will fit your needs, before moving to expensive options.</p>
]]></content>
		</item>
		
	</channel>
</rss>
