<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
    <title>undying.systems - Blog</title>
    <link rel="self" type="application/atom+xml" href="https://undying.systems/blog/atom.xml"/>
    <link rel="alternate" type="text/html" href="https://undying.systems/blog/"/>
    <generator uri="https://www.getzola.org/">Zola</generator>
    <updated>2026-10-21T00:00:00+00:00</updated>
    <id>https://undying.systems/blog/atom.xml</id>
    <entry xml:lang="en">
        <title>Getting out from under PHP2Shell</title>
        <published>2026-10-21T00:00:00+00:00</published>
        <updated>2026-10-21T00:00:00+00:00</updated>
        
        <author>
          <name>Unknown</name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://undying.systems/blog/php2shell-freebsd/"/>
        <id>https://undying.systems/blog/php2shell-freebsd/</id>
        
        <content type="html" xml:base="https://undying.systems/blog/php2shell-freebsd/">&lt;p&gt;The PHP2Shell disclosure (CVE-2026-109618 and CVE-2026-109619) landed while three sites I run were still sitting on an old Debian Buster box: a phpBB forum, a WordPress site, and a set of PHP endpoints that Second Life scripts talk to. Apache with &lt;code&gt;mod_php&lt;/code&gt; 7.4, kept on Buster on purpose for stability. That stability turned into a liability overnight. There is no patched PHP 7.4 for Buster, so the only real fix was to leave.&lt;/p&gt;
&lt;h2 id=&quot;contain-first&quot;&gt;Contain first&lt;/h2&gt;
&lt;p&gt;Before planning anything, I cut down what an attacker could reach on the old box:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Pulled every stray admin and debug script out of the webroots: two copies of &lt;code&gt;adminer.php&lt;/code&gt;, two &lt;code&gt;info.php&lt;/code&gt; files, a one-off user-creation script, and a phpBB &lt;code&gt;install/&lt;/code&gt; directory that should have been deleted years ago.&lt;/li&gt;
&lt;li&gt;Moved them to a quarantine directory outside the docroot instead of deleting them, so nothing was lost if a site turned out to depend on one.&lt;/li&gt;
&lt;li&gt;Took full backups: every database dump, &lt;code&gt;/var/www&lt;/code&gt;, the Apache, PHP and Let&#39;s Encrypt config, plus a &lt;code&gt;sha256&lt;/code&gt; baseline of the webroots to diff against later.&lt;/li&gt;
&lt;/ul&gt;
&lt;pre&gt;&lt;code data-lang=&quot;sh&quot;&gt;find /var/www -type f -print0 | xargs -0 sha256sum | tee www-baseline.sha256
&lt;/code&gt;&lt;/pre&gt;
&lt;blockquote&gt;
&lt;p&gt;If a box can&#39;t be patched, its job becomes &quot;stay up long enough to be replaced.&quot; Every script you remove is one less thing to worry about during that window.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id=&quot;the-new-layout&quot;&gt;The new layout&lt;/h2&gt;
&lt;p&gt;The old machine was far bigger than these sites ever needed, so I picked a slimmer setup: a small FreeBSD VPS. Each site gets its own jail, the database gets one too, and nginx sits in front as the only thing listening publicly.&lt;/p&gt;
&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Role&lt;/th&gt;&lt;th&gt;Runs&lt;/th&gt;&lt;th&gt;Writable by the web user&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;Reverse proxy&lt;/td&gt;&lt;td&gt;nginx, TLS&lt;/td&gt;&lt;td&gt;nothing&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;Forum&lt;/td&gt;&lt;td&gt;PHP-FPM 8.x, phpBB&lt;/td&gt;&lt;td&gt;upload and cache dirs&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;WordPress&lt;/td&gt;&lt;td&gt;PHP-FPM 8.x, WordPress&lt;/td&gt;&lt;td&gt;uploads dir&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;Script endpoints&lt;/td&gt;&lt;td&gt;PHP-FPM 8.x&lt;/td&gt;&lt;td&gt;nothing&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;Database&lt;/td&gt;&lt;td&gt;MariaDB&lt;/td&gt;&lt;td&gt;n/a&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;p&gt;Code is owned by a separate non-web user. PHP-FPM can write only to the upload and cache directories each app actually needs. If a request gets code execution, it can&#39;t rewrite the app it runs in, and it can&#39;t see the other sites.&lt;/p&gt;
&lt;p&gt;The rest is the boring baseline: &lt;code&gt;pf&lt;/code&gt; default-deny with only 80, 443 and SSH open, key-only SSH, no root login.&lt;/p&gt;
&lt;h2 id=&quot;moving-the-data&quot;&gt;Moving the data&lt;/h2&gt;
&lt;p&gt;MariaDB dumps went in one database at a time, each with its own user and a fresh password. I deliberately did &lt;strong&gt;not&lt;/strong&gt; restore the old &lt;code&gt;mysql&lt;/code&gt; system database; an old grant table is the wrong thing to drag into a new server. It stayed as a reference for which users and grants to recreate.&lt;/p&gt;
&lt;p&gt;The Apache rewrite rules were translated for nginx by hand. That was the only part that needed real care, because the Second Life scripts expect exact URLs.&lt;/p&gt;
&lt;h2 id=&quot;cutover&quot;&gt;Cutover&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;Point the new box at each hostname through &lt;code&gt;/etc/hosts&lt;/code&gt; on my machine and test every site end to end.&lt;/li&gt;
&lt;li&gt;Take a final fresh dump from the old box, import it, and switch DNS.&lt;/li&gt;
&lt;li&gt;Leave the old box running, locked down, as a fallback until traffic is clearly gone.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;The forum moved first, then WordPress, then the script endpoints. All three were live on FreeBSD within two days of starting.&lt;/p&gt;
&lt;h2 id=&quot;what-i-d-do-sooner-next-time&quot;&gt;What I&#39;d do sooner next time&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Don&#39;t pin a production box to an old release for stability unless you also have a plan for the day it stops getting fixes.&lt;/li&gt;
&lt;li&gt;Delete installers and admin tools as soon as setup is done. Every one I quarantined this week had been sitting in a webroot for years.&lt;/li&gt;
&lt;li&gt;Give each app its own process and filesystem boundary from day one. Jails made that cheap.&lt;/li&gt;
&lt;/ul&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>The Update</title>
        <published>2024-02-17T00:00:00+00:00</published>
        <updated>2024-02-17T00:00:00+00:00</updated>
        
        <author>
          <name>Unknown</name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://undying.systems/blog/the-update/"/>
        <id>https://undying.systems/blog/the-update/</id>
        
        <content type="html" xml:base="https://undying.systems/blog/the-update/">&lt;p&gt;Hello everyone,&lt;/p&gt;
&lt;p&gt;I&#39;ve been putting this off for a very long time. Mostly because I didn&#39;t know how to say what I wanted to say. So I&#39;ll start it off with another thank you. Thank you all so much for supporting me and believing in me enough to help me recover from blindness. A month ago I was told my corneas are stable, so I&#39;m cured. That&#39;s some so big, so completely enormous emotionally to me that I can&#39;t express it. I was going to go blind, my life was over and it&#39;s hard to express that without getting emotional. I had lost everything, all of my autonomy, all of my dreams. I would sit at my computer squinting barely making it by day after day for years, just trying to get past it. There was apoint in 2022 where I felt like giving up. I haven&#39;t written a blog post for 2 years. I&#39;ve been keeping up with Twitter and Discord though, a lot of people reading this are already aware how much my life has changed in the last 12 months but for those of you that aren&#39;t, I just want to say thank you for even caring enough to read. Your support has reinforced my belief that people as a whole generally do want to help each other and sometimes we all just get caught up or in our own or each other&#39;s way. This isn&#39;t a techinical blog post so it&#39;s a little out of the ordinary for this blog. I will start posting most technical blogs again soon.&lt;/p&gt;
&lt;p&gt;In the last year I have had my vision restored. My vision isn&#39;t perfect but it&#39;s close. I went back to work and not only that I&#39;m thriving at work. I started skating again, I started working out again. I&#39;ve started chasing dreams again. In all honesty I had lost all my ambition and dreams, I thought I would just slowly go blind alone and my life was genuinely over because of how advanced my Keratoconus had gotten and the financial burden of fixing it. I was encouraged by members of the InfoSec, Free Software and Gaming communities I&#39;m in to start a GoFundMe. My family and friends contributed a lot but there were people I barely know, even people I have had unpleasant interactions with that contributed a lot to those funds. I realistically would not be here today without that help. I wouldn&#39;t be chasing my dreams again without that encouragement not to give up. In two weeks I&#39;m heading on my first real vacation in a long time to continue to chase dreams. Dreams I felt I&#39;d abandoned or had abandoned me.&lt;/p&gt;
&lt;h2 id=&quot;in-the-past-year-i-have&quot;&gt;In the Past Year I have:&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Had my Vision Restored&lt;/li&gt;
&lt;li&gt;Started Skating again&lt;/li&gt;
&lt;li&gt;Opened my own Sandbox for creative people to collaborate in Second Life&lt;/li&gt;
&lt;li&gt;Started to Draw Again&lt;/li&gt;
&lt;li&gt;Started Hacking again&lt;/li&gt;
&lt;li&gt;Started programming again&lt;/li&gt;
&lt;li&gt;Been cleared for driving again&lt;/li&gt;
&lt;li&gt;Started trying to learn to create music again&lt;/li&gt;
&lt;li&gt;Returned to work&lt;/li&gt;
&lt;li&gt;Returning to work enabled me to help friends and family&lt;/li&gt;
&lt;li&gt;Met so many incredible and supportive people&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Four years ago I lost my best friend, it was the most devastating loss I ever experienced. It follows me every day. It motivates me to be the person my friend thought I was. Sometimes I&#39;m a shithead sure, but I really am striving to be the best person I can possibly be. After I had my first crosslinking procedure I sent out a thank you video, and I meant it when I said I wouldn&#39;t squander this opportunity. I just want to say, Thank you. Thank you for the opportunity to chase my dreams.&lt;/p&gt;
&lt;p&gt;I&#39;ll leave you with a musing I wrote a few months ago when I fell down real bad.&lt;/p&gt;
&lt;p&gt;Life is a skateboard ride down a steep hill. Sometimes it&#39;s wobbly and terrifying. Sometimes you fall off and it hurts bad, and you have to take time to recover, but if you get back on and things are going smooth you feel absolutely weightless and free.&lt;/p&gt;
&lt;p&gt;I&#39;ve had a few worse falls since then, and plenty more to come, real or metaphorical.&lt;/p&gt;
&lt;p&gt;Thank you, and I&#39;ll see you out there...&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Hadet&lt;/li&gt;
&lt;/ul&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>Switching to ZFS on Linux</title>
        <published>2022-02-16T00:00:00+00:00</published>
        <updated>2022-02-16T00:00:00+00:00</updated>
        
        <author>
          <name>Unknown</name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://undying.systems/blog/zfs-on-linux-experience/"/>
        <id>https://undying.systems/blog/zfs-on-linux-experience/</id>
        
        <content type="html" xml:base="https://undying.systems/blog/zfs-on-linux-experience/">&lt;p&gt;I recently made the transition to ZFS-on-Root on Void Linux as &lt;code&gt;btrfs&lt;/code&gt; on root recently gave me some issues and while I did like &lt;code&gt;btrfs&lt;/code&gt; the snapshots were less familiar to me than the snapshots I was used to with FreeBSD. I also ran into some filesystem corruption which I was able to solve by booting into a live image and following repair procedures from the documentation, however that left me wanting more, and wanting to switch to an encrypted root install too. While I could do FDE with &lt;code&gt;btrfs&lt;/code&gt; and use subvolumes, I would much rather have all of the zpool features available to me for expanding volumes, and so on.&lt;/p&gt;
&lt;h1 id=&quot;the-problem&quot;&gt;The Problem&lt;/h1&gt;
&lt;p&gt;While I do very much think &lt;code&gt;btrfs&lt;/code&gt; is a great filesystem solution, I&#39;m also &lt;strong&gt;VERY LAZY&lt;/strong&gt;/would like things to be more convenient. Even if that convenience means extra initial preparation. With &lt;code&gt;btrfs&lt;/code&gt; there are no options to boot directly into a snapshot for example. With &lt;code&gt;ZFSBootMenu&lt;/code&gt; there are, as well as a plethora of other convenient options.&lt;/p&gt;
&lt;p&gt;I have a system that boots via UEFI with &lt;strong&gt;A LOT&lt;/strong&gt; of storage. I haven&#39;t transitioned all my storage to ZFS yet but I plan to. I decided to test run this setup and install in a VM. For virtualization I was using KVM+QEMU+OMVF and I ran into some serious issues. For some reason or another after the first boot, &lt;code&gt;refind&lt;/code&gt;, which I was running on top of &lt;code&gt;ZFSBootMenu&lt;/code&gt; for the convenience it provides, would stop booting to &lt;code&gt;ZFSBootMenu&lt;/code&gt;. This was an issue with the virtualized environment, and does not reflect Bare Metal operation. I still have no idea what&#39;s going on but I think it&#39;s likely &lt;code&gt;omvf&lt;/code&gt; being weird about something or other, what&#39;s strange is this doesn&#39;t happen with my FreeBSD VM.&lt;/p&gt;
&lt;h1 id=&quot;the-solution&quot;&gt;The Solution&lt;/h1&gt;
&lt;p&gt;I followed &lt;a rel=&quot;external&quot; href=&quot;https://github.com/zbm-dev/zfsbootmenu/wiki/Void-Linux---Single-disk-UEFI&quot;&gt;This Guide&lt;/a&gt; from the ZFSBootMenu developers. There is also an open PR for the Void Linux handbook which to my knowledge is almost ready to be merged. This is a great guide and if you do it while you&#39;re fully awake and pay attention to what you&#39;re doing, you probably won&#39;t have to start over 3 times like I did.&lt;/p&gt;
&lt;p&gt;I started by taking an archive of my home directory, and moving it to my bulk storage, so I could move it back in place and take ownership of all the files if necessary, once the install was done.(Ownership was retained however because I had the same UID, see &lt;code&gt;man useradd&lt;/code&gt; for options.)&lt;/p&gt;
&lt;p&gt;Where things start to differ is that I didn&#39;t use the &lt;code&gt;hrmpf&lt;/code&gt; image, as I wanted a Graphical Environment to more easily read the documentation on while I was working. So I grabbed the latest void-xfce ISO. Afterwards I prepared the Live Environment with the necesssary tools.&lt;/p&gt;
&lt;p&gt;Getting to that point is as simple as this:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Open a Terminal &lt;strong&gt;CTRL+ALT+T&lt;/strong&gt; and run:&lt;/li&gt;
&lt;/ul&gt;
&lt;pre&gt;&lt;code&gt;sudo su -s /bin/bash
xbps-install -S linux5.13-headers zfs gptfdisk
xbps-reconfigure -a #Just in case
modprobe zfs
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;After this you should have all the tools neccessary to follow the guide, durring the install phase I would replace &lt;code&gt;linux5.10&lt;/code&gt; and its headers package with a newer kernel and headers. You can easily do this after you finish your install, however.&lt;/p&gt;
&lt;h1 id=&quot;using-refind&quot;&gt;Using rEFInd&lt;/h1&gt;
&lt;p&gt;The guide makes reference to using &lt;code&gt;refind&lt;/code&gt; on top of ZFSBootMenu, which is something I wanted to do as I spent a long time making a custom theme, as well as regularly hotplugging devices to boot from. The documentation in the guide is a little out of date for default, I believe so &lt;strong&gt;for me&lt;/strong&gt; the correct proceudre was this:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;xbps-install refind
refind-install
rm /boot/efi/EFI/BOOT/refind_linux.conf
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;After this point I just continued with the final steps in the documentation.&lt;/p&gt;
&lt;h1 id=&quot;post-install-automation-and-convenience&quot;&gt;Post-Install Automation and Convenience&lt;/h1&gt;
&lt;p&gt;As I stated above, the purpose of doing all this work was to make backups/snapshots automatically, that could be used to recover from mistakes, bad upgrades, recover old data, etc. So once my install was done, I needed to start setting all of that up.&lt;/p&gt;
&lt;p&gt;Void Linux does not use systemd, so in order to run tasks on a timer a cron implementation is needed. Void does not ship with a cron implementation by default, so I opted for installing &lt;code&gt;dcron&lt;/code&gt; and starting its service.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;# xbps-install -S dcron
# ln -s /etc/sv/dcron /var/service
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Now that &lt;code&gt;dcron&lt;/code&gt; is running we need to make some scripts to make snapshots. I am using scripts instead of invoking the snapshot command directly to make the crontab easier to read as well as the snapshots easier to read. I am using two separate scripts for this, because I believe that separating individual tasks into separate scripts or programs is cleaner in the long run, as well as the fact I want to take a Daily Snapshot of my root but 4 daily snapshots of my &lt;code&gt;/home&lt;/code&gt; directory.&lt;/p&gt;
&lt;p&gt;So first I created a local path for the scripts, this is preference for me but I use &lt;code&gt;~/.local/bin&lt;/code&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;So I ran &lt;code&gt;mkdir -p ~/.local/bin&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Then in your prefered text editor create the script &lt;code&gt;~/.local/bin/snapshot.sh&lt;/code&gt;:&lt;/p&gt;
&lt;pre&gt;&lt;code data-lang=&quot;bash&quot;&gt;#!/bin/sh
/bin/zfs snapshot -r zroot/home@`date +&amp;quot;%F&amp;quot;-&amp;quot;%H&amp;quot;:&amp;quot;%M&amp;quot;`
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Make the script executable with: &lt;code&gt;chmod +x ~/.local/bin/snapshot.sh&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;What this is doing is calling the &lt;code&gt;zfs&lt;/code&gt; program and taking a snapshot of the &lt;code&gt;/home&lt;/code&gt; volume. Then appending a date to the snapshot name so we know when it was taken.&lt;/p&gt;
&lt;p&gt;Now we will do the same thing for the &lt;code&gt;/&lt;/code&gt; or root volume by creating &lt;code&gt;~/.local/bin/rootsnapshot.sh&lt;/code&gt;:&lt;/p&gt;
&lt;pre&gt;&lt;code data-lang=&quot;bash&quot;&gt;#!/bin/sh
/bin/zfs snapshot -r zroot/ROOT/void@daily`date +&amp;quot;%F&amp;quot;-&amp;quot;%H&amp;quot;:&amp;quot;%M&amp;quot;`
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Make the script executable with: &lt;code&gt;chmod +x ~/.local/bin/rootsnapshot.sh&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;You&#39;ll see that I appended @daily to these snapshots, as above I stated I only wanted daily snapshots of my root volume. This is because I make fewer changes to this volume, and I have some fallback solutions for when I do make those changes like installing or removing packages which we&#39;ll get to later.&lt;/p&gt;
&lt;p&gt;Now we need to configure cron to start automatically taking snapshots.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Run &lt;code&gt;sudo crontab -e&lt;/code&gt; be aware that on Void this defaults to the &lt;code&gt;vi&lt;/code&gt; editor. We just want to append a few lines tot he bottom, you can get to the bottom easily with Shift+G then SHIFT+A then add the following lines:&lt;/li&gt;
&lt;/ul&gt;
&lt;pre&gt;&lt;code&gt;0 */6 * * * /home/hadet/.local/bin/snapshot.sh
0 3 * * * /bin/zfs-prune-snapshots -v  1w zroot/home &amp;gt;&amp;gt; /var/log/snapshot.log
0 0 * * * /home/hadet/.local/bin/snapshot.sh
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Replace &lt;code&gt;hadet&lt;/code&gt; with your username.
Now I&#39;ll break down what each line does:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Every 6 hours on the hour we take a snapshot of the home directory&lt;/li&gt;
&lt;li&gt;Every Day at 03:00 we prune snapshots 1 week old or older&lt;/li&gt;
&lt;li&gt;Every Day at 00:00 we take a snapshot of the root/void volume which is separate from the &lt;code&gt;/home&lt;/code&gt; volume.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Snapshots do not take up a lot of space, so this frequency is not a problem, and in production environments, I&#39;ve set this up to happen once an hour without problems for user directories within &lt;code&gt;/home&lt;/code&gt; for example.&lt;/p&gt;
&lt;p&gt;If you&#39;re fine with only having those snapshots that&#39;s great. However I wasn&#39;t and I wanted some quick fallback options if there was a bad upgrade or I removed some packages that I actually needed.&lt;/p&gt;
&lt;p&gt;XBPS is split into a number of tools, but none of them have the capacity for pre or post invocation hooks. That&#39;s fine for what I want to do since we can just write an alias or even shell function. As I stated earlier. I&#39;m lazy so I wrote some aliases for myself to make this easier, as a function wasn&#39;t really necessary, though probably could have monitored for actual interaction.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Aliases&lt;/strong&gt;:&lt;/p&gt;
&lt;pre&gt;&lt;code data-lang=&quot;bash&quot;&gt;# Oopsie Precautions
alias rootsnap=&amp;quot;sudo zfs snapshot -r zroot/ROOT/void@oopsie-`date +&amp;quot;%F&amp;quot;-&amp;quot;%H&amp;quot;:&amp;quot;%M&amp;quot;`&amp;quot;
alias homesnap=&amp;quot;sudo zfs snapshot -r zroot/ROOT/home@oopsie-`date +&amp;quot;%F&amp;quot;-&amp;quot;%H&amp;quot;:&amp;quot;%M&amp;quot;`&amp;quot;
# XBPS
alias vupcheck=&amp;quot;xbps-install Su&amp;quot;
alias vup=&amp;quot;sudo zfs snapshot -r zroot/ROOT/void@upgrade-`date +&amp;quot;%F&amp;quot;-&amp;quot;%H&amp;quot;:&amp;quot;%M&amp;quot;`; sudo xbps-install -Su&amp;quot;   # Snapshot and Upgrade
alias vps=&amp;quot;sudo xbps-query -Rs&amp;quot; # search
alias vpi=&amp;quot;sudo zfs snapshot -r zroot/ROOT/void@newpkgs-`date +&amp;quot;%F&amp;quot;-&amp;quot;%H&amp;quot;:&amp;quot;%M&amp;quot;`; sudo xbps-install -S&amp;quot; # install a single package or list of packages
alias vpr=&amp;quot;sudo xbps-remove&amp;quot; # remove a single package
alias vpra=&amp;quot;sudo zfs snapshot -r zroot/ROOT/void@rmpkgs-`date +&amp;quot;%F&amp;quot;-&amp;quot;%H&amp;quot;:&amp;quot;%M&amp;quot;`; sudo xbps-remove -R&amp;quot; # remove a single package and all of its dependencies that are not required by other packages:
alias vphan=&amp;quot;sudo zfs snapshot -r zroot/ROOT/void@rmorphans-`date +&amp;quot;%F&amp;quot;-&amp;quot;%H&amp;quot;:&amp;quot;%M&amp;quot;`; sudo xbps-remove -o&amp;quot; # Remove dependencies that are no longer needed
alias vpc=&amp;quot;sudo zfs snapshot -r zroot/ROOT/void@clearcache-`date +&amp;quot;%F&amp;quot;-&amp;quot;%H&amp;quot;:&amp;quot;%M&amp;quot;`; sudo xbps-remove -O&amp;quot; # Clean up all local caches.
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Now you&#39;ll see I have some commands to run to immediately take a snapshot if I feel I&#39;m at a point where I might make an &lt;em&gt;oopsie&lt;/em&gt;. I also have snapshots being taken when I run a full upgrade, install a new package, remove a package and its dependencies, remove orphaned dependencies, or clear my local repo cache. This is very good because it means if I break something or remove something I shouldn&#39;t have, I can fall back to an older snapshot and figure out what went wrong.&lt;/p&gt;
&lt;h1 id=&quot;advantages&quot;&gt;Advantages&lt;/h1&gt;
&lt;p&gt;I&#39;ve outlined a number of advantages already, there are three main advantages I was after that are now possible:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Unlike &lt;code&gt;btrfs&lt;/code&gt; I can boot into a snapshot of the root system directly from &lt;code&gt;ZFSBootMenu&lt;/code&gt; if something goes wrong. This is fantastic functionality, and it&#39;s also incredibly fast, much faster than restoring using timeshift.&lt;/li&gt;
&lt;li&gt;I can easily and quickly add redundancy, or storage to my existing zpool with a few easy configuration steps, this makes data migration or data redundancy much simpler and eventually actually seprate &lt;code&gt;refind&lt;/code&gt; into a small bootdisk to improve portability.&lt;/li&gt;
&lt;li&gt;I have snapshots of my home directory which saves me so much trouble when working on projects that I don&#39;t typically use &lt;code&gt;git&lt;/code&gt; with, like Blender or kdenlive.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;There are a lot of other advantages to this setup now that I have it running. I&#39;ve barely scratched the surface of cool configurations I can do on this, as most of my ZFS experience prior to this was on FreeBSD, to which I only ever just added devices to zpools, or RAID, etc.&lt;/p&gt;
&lt;p&gt;Hopefully this was informative to anyone interested in doing a setup like this, I&#39;m certainly very happy with it now that I got it all figured out.&lt;/p&gt;
&lt;p&gt;In closing, I am still working on my vision expenses, and have been streaming on Twitch 2-3 times a week. I want to start doing SysAdmin streams, and would love to discuss some topics with interested individuals. Feel free to join my Discord server and ask questions.&lt;/p&gt;
&lt;p&gt;Thank you for reading, as always.&lt;/p&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>Switching to Linux, the LTT Dilema</title>
        <published>2022-01-23T00:00:00+00:00</published>
        <updated>2022-01-23T00:00:00+00:00</updated>
        
        <author>
          <name>Unknown</name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://undying.systems/blog/newbie-friendly/"/>
        <id>https://undying.systems/blog/newbie-friendly/</id>
        
        <content type="html" xml:base="https://undying.systems/blog/newbie-friendly/">&lt;p&gt;This post is about expectations and behaviors people have with switching to Linux, as well as our community&#39;s contradictory beahvior and expectations towards new users. It is not meant to attack any particular section of the FOSS community, LMG or LTT community. There will however be some speculation regarding learned behaviors from both the &lt;code&gt;Pop!_OS&lt;/code&gt; maintainers as well as LTT staff&#39;s total disregard for security practices in running any commands they find without understanding what the commands do.&lt;/p&gt;
&lt;h1 id=&quot;newcomer-friendly-distributions-don-t-focus-on-the-right-things&quot;&gt;Newcomer Friendly Distributions don&#39;t focus on the right things.&lt;/h1&gt;
&lt;p&gt;Breaking Windows users of bad habits should be a priority, not hiding the CLI from the user in hopes of winning them over. If a user is afraid to open a terminal, Linux is not for them, this is not the way we do things. It is fine to have a visual frontend for a Software Center, but the user should be familiar with how to work with the package manager. This means that your package manager should be well documented and have &lt;strong&gt;QUALITY&lt;/strong&gt; verbose outputs. As well as have sane defaults for the base system. We also need to encourage users to use a system which meets their needs. Telling a user to install Arch or Debian on their first go is setting all but the most dedicated users up for failure.&lt;/p&gt;
&lt;p&gt;Linux does not need to become more like Windows to succeed, Windows users need to approach trying out Linux Distributions as something new to learn. I have another post about Manjaro as an example, almost all newbie focussed distributions end up having some of these issues out of fear or allowing the user to maintain their own system.&lt;/p&gt;
&lt;h1 id=&quot;we-as-a-community-need-to-work-on-more-approachable-documentation&quot;&gt;We as a community need to work on more approachable Documentation&lt;/h1&gt;
&lt;p&gt;The FreeBSD Documentation has this situation mostly solved, Things like the Arch Wiki are not as great as we make them out to be. Verbose Documentation != Quality Documentation. If it takes a user 10x as long to solve an issue because of your documentation is too verbose and your system doesn&#39;t ship with sane defaults, your system is at fault, not the user. Focus on solving the user&#39;s issue first, and explaining how it solves their issue as a secondary. They will be more willing to understand why it it solved their issue. We should encourage users to research their own problems, but not gatekeep them away from obvious solutions behind confusing walls of text.&lt;/p&gt;
&lt;h1 id=&quot;ltt-needs-to-focus-on-learning-as-opposed-to-doing&quot;&gt;LTT needs to focus on learning as opposed to doing&lt;/h1&gt;
&lt;p&gt;You can&#39;t daily drive a system you don&#39;t understand. Linus would likely have a lot of the same issues switching to MacOS. If you don&#39;t take the time to get familiar with your system you can&#39;t be surprised when it breaks. This arguement can easily be made for people Transitioning to and from MacOS, Windows, and ChromeOS. Windows frustrates the hell out of me because I don&#39;tuse it on a daily basis.&lt;/p&gt;
&lt;h1 id=&quot;closing&quot;&gt;Closing&lt;/h1&gt;
&lt;p&gt;&lt;code&gt;apt&lt;/code&gt; is a piece of shit nightmare package manager and that&#39;s the real source of most of these problems. Fuck &lt;code&gt;apt&lt;/code&gt;.&lt;/p&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>Editing Videos with ffmpeg</title>
        <published>2022-01-14T00:00:00+00:00</published>
        <updated>2022-01-14T00:00:00+00:00</updated>
        
        <author>
          <name>Unknown</name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://undying.systems/blog/ffmpeg-cheatsheet/"/>
        <id>https://undying.systems/blog/ffmpeg-cheatsheet/</id>
        
        <content type="html" xml:base="https://undying.systems/blog/ffmpeg-cheatsheet/">&lt;p&gt;This is a short and messy guide for editing files from the command line. While I do this on Linux, these commands will work on MacOS and Windows too. The reason I do this is because I am vision impaired and timeline editors are very cumbersome for me in particular. Sometimes I also feel this is faster, especially for sharing short clips scaled for chat platforms like Discord.&lt;/p&gt;
&lt;h2 id=&quot;create-a-folder-to-act-as-a-root-for-your-project&quot;&gt;Create a Folder to act as a root for your project.&lt;/h2&gt;
&lt;p&gt;This is important for later when we want to concat multiple clips together.&lt;/p&gt;
&lt;h2 id=&quot;clipping-files&quot;&gt;Clipping Files:&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;ffmpeg -i input.mp4 -ss 00:00:00 -t 00:00:00 -async 1 -strict -2 output.mp4&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Where the first timestamp is the starting point and the second timestamp is the length of the clip.&lt;/p&gt;
&lt;h2 id=&quot;fade-in&quot;&gt;Fade In:&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;ffmpeg -i input.mp4 -y -vf fade=in:0:30 output.mp4&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;The fade is not a timeinput but actually the number of frames, so 30 = Half a Second on a 60FPS recording. There is a way to automate this to always be half a second, but math between shells can be kind of unreliable.&lt;/p&gt;
&lt;h2 id=&quot;fade-out&quot;&gt;Fade Out:&lt;/h2&gt;
&lt;p&gt;This is a little more annoying, and can be done one of two ways, I hope if there&#39;s a better way to do this someone eventually enlightens me&lt;/p&gt;
&lt;h3 id=&quot;get-framecount&quot;&gt;Get Framecount&lt;/h3&gt;
&lt;p&gt;&lt;code&gt;ffmpeg -i input.mp4 -map 0:v:0 -c copy -f null -&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;OR&lt;/p&gt;
&lt;p&gt;&lt;code&gt;ffprobe -v error -count_frames -select_streams v:0 -show_entries stream=nb_read_frames -of default=nokey=1:noprint_wrappers=1 input.mp4&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;These commands will tell you the total number of frames whichever input you give it.&lt;/p&gt;
&lt;h3 id=&quot;apply-30-frame-fade-out-by-substracking-30-frames-from-that-total&quot;&gt;Apply 30 Frame Fade Out by substracking 30 frames from that total.&lt;/h3&gt;
&lt;p&gt;&lt;code&gt;ffmpeg -i input.mp4 -y -vf fade=out:120:30 output.mp4&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Where 120 is replaced by the total number of frames.&lt;/p&gt;
&lt;h2 id=&quot;prefix-videos-numerically-for-the-order-you-want-them-in&quot;&gt;Prefix Videos Numerically for the order you want them in.&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Creating a list for concat:&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;code&gt;for f in ./*.mp4; do echo &quot;file &#39;$f&#39;&quot; &amp;gt;&amp;gt; project.txt; done&lt;/code&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Combining the Files:&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;code&gt;ffmpeg -f concat -safe 0 -i project.txt -c copy project.mp4&lt;/code&gt;&lt;/p&gt;
&lt;h2 id=&quot;video-scaling-for-upload-limitations&quot;&gt;Video scaling for upload limitations:&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;ffmpeg -i input.mp4 -vf &quot;scale=iw/2:ih/2&quot; output.mp4&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;This is exceptionally useful for Slack, Twitter and Discord, as well as more bandwidth conscious than uploading information that doesn&#39;t need to be hundreds of megabytes when it could be tens of megabytes instead.&lt;/p&gt;
&lt;h2 id=&quot;export-all-video-frames-as-images&quot;&gt;Export all video frames as images&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;ffmpeg -i &quot;%1&quot; frames/out-%03d.jpg&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;I don&#39;t really recommend doing this but it&#39;s possible, it will also take a &lt;strong&gt;LONG TIME&lt;/strong&gt; on long videos and eat up an enormous amount of space. It&#39;s also not really recommended on any filesystem on any OS to put more than 10,000 individual files in a single directory, so bear that in mind.&lt;/p&gt;
&lt;h2 id=&quot;replace-audio-with-music&quot;&gt;Replace Audio with music&lt;/h2&gt;
&lt;p&gt;This stuff gets into audio channels and sinks and i really recommend reading the ffmpeg doc to properly understand these commands as it would take a huge amount of technical explaination that already exists to properly explain these commands.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;ffmpeg -y -stream_loop -1 -i &amp;quot;input_music.mp3&amp;quot; -i &amp;quot;input_video.mp4&amp;quot; \
-map 0:a:0 -map 1:v:0 -c:v copy -c:a aac -ac 2 -shortest output.mp4

&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;This will replace the audio with whatever the input file is and loop it for the entirety of the video length, the original audio track will not be included. See below for just adding stock/background music to your video&lt;/p&gt;
&lt;h2 id=&quot;add-music-to-loop-through-the-whole-video&quot;&gt;Add Music to loop through the whole video&lt;/h2&gt;
&lt;pre&gt;&lt;code&gt;ffmpeg -i input_video.mp4 -filter_complex &amp;quot;amovie=input_music.mp3:loop=0,asetpts=N/SR/TB[input_music];
                                    [0][input_music]amix=duration=shortest,volume=2.0&amp;quot;   output.mp4
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Then you have a background audio track that is accessible in other editors even.&lt;/p&gt;
&lt;h1 id=&quot;conclusion&quot;&gt;Conclusion&lt;/h1&gt;
&lt;p&gt;While this doesn&#39;t come off as very straight-forward or intuitive at first, it does work and for me is sometimes the better option than opening a GUI editor especially for taking just short clips to report a bug, or show off something I&#39;m working on. I&#39;ll also note that the most popular video editor on Linux is kdenlive, which unfortunately like most qt based applications does not handle accessibility scaling in a way that is friendly to my vision impairment. While I think it&#39;s a fantastic piece of software, jumping through menus and configuration stuff that gtk apps typically just adopt from my main gnome config can be very frustrating.&lt;/p&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>End of Year Update</title>
        <published>2021-12-29T00:00:00+00:00</published>
        <updated>2021-12-29T00:00:00+00:00</updated>
        
        <author>
          <name>Unknown</name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://undying.systems/blog/update/"/>
        <id>https://undying.systems/blog/update/</id>
        
        <content type="html" xml:base="https://undying.systems/blog/update/">&lt;p&gt;Hello everyone,&lt;/p&gt;
&lt;p&gt;This is going to be a mostly non-technical blog post. Some of you are aware of some of these things, some of you are not. I&#39;ve posted an update as to part of what&#39;s been going on in my Discord, you can find a link to the Discord on this site. My Discord is a fun place and not everything in there should be taken seriously outside of the tech-support channels.&lt;/p&gt;
&lt;h1 id=&quot;so-where-s-the-content-why-no-streams-for-a-month&quot;&gt;So where&#39;s the content, why no streams for a month?&lt;/h1&gt;
&lt;p&gt;I am currently job hunting, as a blind person this is incredibly stressful. It has been very defeating, I have been looking for a job and applying for jobs every day for the past six months. I have at least one interview a week for varrying positions, but so far nothing has come to fruition either due to my transportation issues, misleading listings, time wasting interviews, Multi Level Marketing Scams, etc.&lt;/p&gt;
&lt;p&gt;This has been very mentally and emotionally draining, and while I do still freelance and fulfill those freelancing contracts, even that has started drying up due to being undercut by less experienced people.&lt;/p&gt;
&lt;p&gt;I have a technical Blog Post and Video coming early next week about Single GPU Passthrough and what kind of work was involved in getting this to work. Since I did get that to work it has opened up a lot of other games for me to stream(on Windows unfortunately.) My intention going forward is to shoot for two blog posts a Month and one video. This is doable and I will hold myself to it. I will continue to maintain community servers, game servers, as well as offer tech support in my Discord, NixNest and Nixfits when pinged. I enjoy doing support and solving problems.&lt;/p&gt;
&lt;h1 id=&quot;plans-to-solve-my-vision-issues&quot;&gt;Plans to solve my vision issues&lt;/h1&gt;
&lt;p&gt;So far all I know is that I need to raise enough money to get another corneal topography done, This will likely be $400-500 and may include a Contact Lens Fitting. I will begin calling offices tomorrow. Once I have an idea for how much this is going to cost, I will launch a GoFundMe and be streaming at least once a week in hopes of covering the costs. Right now I am probably looking at a minimum of $10,000USD. This is no small amount and it could potentially end up being double that without decent insurance. The real goal here is to find a stable job with decent medical benefits, but this just absolutely cannot wait any longer, I ran into some brush walking my dogs this evening and poked my &lt;em&gt;good&lt;/em&gt; eye. Luckily everything is alright but it got me into a panic for a scenario where it might not have been.&lt;/p&gt;
&lt;p&gt;At the moment I have been out of work for all of December, and am waiting on some Bug Bounties to be verified. If you feel like pitching in before I launch my GoFundMe Campaign I will post donation links below. I appreciate everyone sticking around, and the 20 or so people that have shown up regularly when I do decide to stream. Supportive people in the FOSS community that looked into the costs of my vision expenses overseas for me, and of course the few people that are supporting me on Patreon as there is really nothing they get out of it other than enabling me to continue doing these things and tinker around.&lt;/p&gt;
&lt;h1 id=&quot;donation-links-will-be-updated-with-gofundme-link-next-week-as-well&quot;&gt;Donation Links (Will Be Updated with GoFundMe Link next week as well.)&lt;/h1&gt;
&lt;p&gt;&lt;a rel=&quot;external&quot; href=&quot;https://www.patreon.com/hadetundying&quot;&gt;Patreon&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a rel=&quot;external&quot; href=&quot;https://liberapay.com/Hadet&quot;&gt;Liberapay&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a rel=&quot;external&quot; href=&quot;https://www.buymeacoffee.com/hadet&quot;&gt;Buy Me a Coffee&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;I also have Coinbase Wallet: @hadet (please virtue signal elsewhere, I am a poor disabled man I&#39;m not melting the planet)&lt;/p&gt;
&lt;p&gt;Ethereum Address: 0xb863606d5B0528Cd9A2966656B305Fc081c2149C&lt;/p&gt;
&lt;p&gt;USDC Address Must be ERC-20: 0xE959918f94d2fd9CA8C9e7d68286cf0e70FaE716&lt;/p&gt;
&lt;p&gt;Thank you,&lt;/p&gt;
&lt;p&gt;Hadet&lt;/p&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>Risk of Rain 2 VR Mod on Linux</title>
        <published>2021-07-11T00:00:00+00:00</published>
        <updated>2021-07-11T00:00:00+00:00</updated>
        
        <author>
          <name>Unknown</name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://undying.systems/blog/ror2vr/"/>
        <id>https://undying.systems/blog/ror2vr/</id>
        
        <content type="html" xml:base="https://undying.systems/blog/ror2vr/">&lt;p&gt;This was a huge pain to figure out, thanks Valve. So for some reason binding files are executable on Linux, they&#39;re also SHA1 verified, I&#39;m assuming someone more clever than I am figured out how to do malicious things with bindings at some point. Anyway below is a guide on getting Risk of Rain 2 working in VR on Linux. &lt;strong&gt;WOW!!!&lt;/strong&gt;&lt;/p&gt;
&lt;h1 id=&quot;installing-the-mod&quot;&gt;Installing the Mod&lt;/h1&gt;
&lt;ol&gt;
&lt;li&gt;Install and Launch Risk of Rain 2 for the first time then close it&lt;/li&gt;
&lt;li&gt;We need to get r2modman from here: https://thunderstore.io/package/ebkr/r2modman/&lt;/li&gt;
&lt;li&gt;We need to select Manual Download&lt;/li&gt;
&lt;li&gt;Extract the Archive a location you will not forget (You will need &lt;code&gt;unzip&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;Make the .AppImage File exectuable (Right Click Properties or &lt;code&gt;chmox +x r2modman-3.1.17.AppImage&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;Select Risk of Rain 2 as your game ( Set it to Default if you&#39;d like)&lt;/li&gt;
&lt;li&gt;Create a Profile for your Mods and Select it&lt;/li&gt;
&lt;li&gt;Search for VRMod and install it&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;If you are using an HTC Vive you&#39;re done you can &quot;Launch Modded&quot; from r2modman and you should be good to go. Otherwise if you&#39;re like me prepare for the nightmare.&lt;/p&gt;
&lt;h1 id=&quot;configuration-valve-index-reverb&quot;&gt;Configuration Valve Index/Reverb&lt;/h1&gt;
&lt;ol&gt;
&lt;li&gt;Go to the Mod&#39;s Page on GitHub and download the appropriate controller config: https://github.com/DrBibop/RoR2VRMod&lt;/li&gt;
&lt;li&gt;Launch SteamVR and make sure your controllers are powered on&lt;/li&gt;
&lt;li&gt;Select &quot;Launch Modded&quot; from r2modman&lt;/li&gt;
&lt;li&gt;You&#39;ll notice that Steam thinks you are running wine64-preloader and not RoR2 (Thanks Valve)&lt;/li&gt;
&lt;li&gt;Because of this we need to create a custom bind file so do that now. Just leave it default we&#39;re going to overwrite it anyway. ( If you get stuck here the video guide should be up by Wednesday and I&#39;ll update this post with a link )&lt;/li&gt;
&lt;li&gt;Exit RoR2, SteamVR and Steam(Just to be safe, Valve is insane about json parsing)&lt;/li&gt;
&lt;li&gt;This should have now created a directory within &lt;code&gt;~/.local/share/Steam/userdata&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;We need to find specifically &lt;code&gt;binding_config.json&lt;/code&gt; This is the file we&#39;re going to overwrite. The best way to do this is to run &lt;code&gt;find -mmin -10 -name *.json&lt;/code&gt; in the directory and look at the output.&lt;/li&gt;
&lt;li&gt;Now that we know where the file is navigate to that directory, we&#39;re almost done.&lt;/li&gt;
&lt;li&gt;Open the controller settings file we downloaded earlier and change the line for app_key to &lt;code&gt;system.generated.wine64-preloader&lt;/code&gt; instead of the RoR2 executable&lt;/li&gt;
&lt;li&gt;rename the file to &lt;code&gt;bindings_config.json&lt;/code&gt; and overwrite the old one&lt;/li&gt;
&lt;li&gt;Set the file perms with &lt;code&gt;chmod 771 bindings_config.json&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;get the SHA1 sum from the file with &lt;code&gt;sha1sum bindings_config.json&lt;/code&gt; and replace the sha1 in &lt;code&gt;data.vdf&lt;/code&gt; with that.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;If you did everything correctly this will have overwritten the original file you created and will make this the default active custom bind for Wine/Proton when a Non-SteamVR game is launched. Remember this because you may need to change it or make new binds in the future. This should persist across application and steam restarts. Hopefully in the future Valve can make this process a little easier by allowing us to file navigate to custom binds.&lt;/p&gt;
&lt;h1 id=&quot;self-promotion-begging&quot;&gt;Self-Promotion/Begging&lt;/h1&gt;
&lt;p&gt;If this guide was too hard to follow i will be posting a Video Guide so please subscribe to my Youtube for when that happens. (There is a YouTube Icon in the Footer of this website.) I always post step-by- step copy &amp;amp; paste capable commands when I write guides like this but because of the nature of this guide in particular some user experience is necessary.&lt;/p&gt;
&lt;p&gt;If this Helped you please consider donating to me at one of the links below. I have a progressive eye condition that effects my ability to work and am currently legally blind attempting to get corrective surgical procedures.&lt;/p&gt;
&lt;p&gt;Thank you.&lt;/p&gt;
&lt;p&gt;Patreon: https://www.patreon.com/hadetundying&lt;/p&gt;
&lt;p&gt;Liberapay: https://liberapay.com/Hadet&lt;/p&gt;
&lt;p&gt;BuyMeACoffee: https://www.buymeacoffee.com/hadet&lt;/p&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>mesa-git in Userland</title>
        <published>2020-12-21T00:00:00+00:00</published>
        <updated>2020-12-21T00:00:00+00:00</updated>
        
        <author>
          <name>Unknown</name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://undying.systems/blog/mesa-git-testing/"/>
        <id>https://undying.systems/blog/mesa-git-testing/</id>
        
        <content type="html" xml:base="https://undying.systems/blog/mesa-git-testing/">&lt;p&gt;So some of you probably saw me posting about running Cyberpunk 2077 on Linux using the latest commits to mesa on my AMD Graphics Card. This was actually quite a pain to get going at first because I wasn&#39;t thinking, and ended up heavily modifying the &lt;code&gt;srcpkg&lt;/code&gt; template in the Void repos to install the driver system-wide.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;mesa&lt;/code&gt; does not need to be installed system-wide and the drivers are fully swappable in userland. So below I&#39;m going to walk you through how to prepare a userland install of mesa and how to use it to run 3D applications independently of your system&#39;s mesa. Enabling you to keep the stable mesa release as your system-wide drivers, which will prevent a lot of headaches and crashing. I personally experienced a Visual Artifact Special Rainbow Crash on my RX Vega card for example, which would require a powercycle to fix every other time it would happen.&lt;/p&gt;
&lt;h1 id=&quot;the-build-process&quot;&gt;The build Process&lt;/h1&gt;
&lt;p&gt;I&#39;m going to assume you know how to fetch the required dependencies for mesa on whichever distribution you are running. You can reference the extended build doc &lt;a rel=&quot;external&quot; href=&quot;https://docs.mesa3d.org/install.html&quot;&gt;HERE&lt;/a&gt; if you don&#39;t know which packages you will need. The packages are also listed in the meson file. On Void all of the dependencies are listed in the srcpkgs repo under &lt;code&gt;void-packages/srcpkgs/mesa/template&lt;/code&gt; Assume that anything with a trailing # is a comment for explanation your shell should but if it doesn&#39;t remove the comments from the command list I&#39;m about to provide below.&lt;/p&gt;
&lt;p&gt;We&#39;re going to clone and build the latest commit with the default configuration arguments now.&lt;/p&gt;
&lt;pre&gt;&lt;code data-lang=&quot;bash&quot;&gt;git clone https://gitlab.freedesktop.org/mesa/mesa.git mesa-git
cd mesa-git
meson --prefix=/tmp/mesa-git git-build # Pick a different directory if you wanna need it to stick around
ninja -C git-build install
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;If everything went well you should have just built mesa and installed it and all of the default x86_64 drivers to &lt;code&gt;/tmp/mesa-git&lt;/code&gt;. You can can change the install location with the prefix argument. I would use &lt;code&gt;/tmp/&lt;/code&gt; if you&#39;re expecting to rebuild a lot. If you&#39;re expecting to stick with that build for awhile just drop it in another directory.&lt;/p&gt;
&lt;h1 id=&quot;overriding-opengl-drivers&quot;&gt;Overriding OpenGL Drivers&lt;/h1&gt;
&lt;p&gt;Now we&#39;ve compiled with the latest commit, we want to be able to use it. By default your system will still favor the libraries installed by your package manager. Luckily we can override this easily even on a per application basis.&lt;/p&gt;
&lt;p&gt;Depending on how you compiled these file paths my be different only use these for a reference.&lt;/p&gt;
&lt;p&gt;To preload your newly built drivers use &lt;code&gt;LIBGL_DRIVERS_PATH=/tmp/mesa-git/lib/dri/&lt;/code&gt; followed by the application you want to run.&lt;/p&gt;
&lt;p&gt;For example: &lt;code&gt;LIBGL_DRIVERS_PATH=/tmp/mesa-git/lib/dri/ glxgears -info&lt;/code&gt;&lt;/p&gt;
&lt;h1 id=&quot;overriding-vulkan-drivers&quot;&gt;Overriding Vulkan Drivers&lt;/h1&gt;
&lt;p&gt;This is pretty similar you just need to use the &lt;code&gt;VK_ICD_FILENAMES&lt;/code&gt; override.&lt;/p&gt;
&lt;p&gt;For example: &lt;code&gt;VK_ICD_FILENAMES=/tmp/mesa-git//share/vulkan/icd.d/radeon_icd.x86_64.json&lt;/code&gt;&lt;/p&gt;
&lt;h1 id=&quot;quality-of-life-practices&quot;&gt;Quality of Life Practices&lt;/h1&gt;
&lt;p&gt;First I&#39;m going to provide a shell script for doing this to make your live a little easier and provide an example for executing it on an application.&lt;/p&gt;
&lt;p&gt;Here is the Script you should create and make executable:&lt;/p&gt;
&lt;pre&gt;&lt;code data-lang=&quot;sh&quot;&gt;#!/bin/sh

MESAENV=/tmp/mesa-git
LIB64=$MESAENV/lib/
export LD_LIBRARY_PATH=$LIB64/
export LIBGL_DRIVERS_PATH=$LIB64/dri
export VK_ICD_FILENAMES=$MESAENV/share/vulkan/icd.d/radeon_icd.x86_64.json

exec &amp;quot;$@&amp;quot;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;An Example of running this would be &lt;code&gt;./scriptname.sh vkcube&lt;/code&gt;. This will load &lt;code&gt;RADV&lt;/code&gt; from the driver we just built instead of your system&#39;s mesa install. It will also select OpenGL Drivers for OpenGL applications, for example &lt;code&gt;./scriptname.sh supertuxkart&lt;/code&gt; Will load the radeon drive we just built.&lt;/p&gt;
&lt;h2 id=&quot;using-with-steam&quot;&gt;Using with Steam&lt;/h2&gt;
&lt;p&gt;Using the newly compiled drivers with steam is also very easy. All you need to do is go into the game properties, click &quot;SET LAUNCH OPTIONS&quot; and paste this string &lt;code&gt;LIBGL_DRIVERS_PATH=/tmp/mesa-git/lib/dri/ VK_ICD_FILENAMES=/tmp/mesa-git/share/vulkan/icd.d/radeon_icd.x86_64.json %command%&lt;/code&gt; , once again the file paths I&#39;m using are for example purposes, if you changed them you will have to change them here as well. You can also just launch Steam with the script provided above, but doing so may have undesired results if you don&#39;t need the latest driver for more than one specific game.&lt;/p&gt;
&lt;h1 id=&quot;conclusion&quot;&gt;Conclusion&lt;/h1&gt;
&lt;p&gt;I wish I had done a little more research about mesa before installing from the latest commit system-wide, as downgrading is a bigger pain than using a few overrides most of the time. I&#39;ve been doing this to play Cyberpunk 2077 for a few days now, rebuilding the driver every day, it&#39;s been really useful for performance testing, and I was also able to do this to test the new &lt;code&gt;zink&lt;/code&gt; option in mesa without causing too much trouble with the rest of my system.&lt;/p&gt;
&lt;p&gt;If you found this guide helpful or informative considering checking out my About page and subscribing to my social media, maybe even backing me on Patreon or just buying me a coffee. I do stream sometimes and I am trying to post at least one Video on my youtube a month currently, I just need some help picking topics.&lt;/p&gt;
&lt;p&gt;Thank you.&lt;/p&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>OSGrid Simulator Setup Guide</title>
        <published>2020-12-03T00:00:00+00:00</published>
        <updated>2020-12-03T00:00:00+00:00</updated>
        
        <author>
          <name>Unknown</name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://undying.systems/blog/osgrid-guide/"/>
        <id>https://undying.systems/blog/osgrid-guide/</id>
        
        <content type="html" xml:base="https://undying.systems/blog/osgrid-guide/">&lt;p&gt;&lt;strong&gt;THIS GUIDE ASSUMES YOU KNOW HOW TO USE SSH IF YOU DON&#39;T LOOK UP A GUIDE FOR THAT&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Get a Fresh Debian Install either on Bare metal, a VPS or in a VM. Make sure you have at least port 9000 forwarded. I forwarded the port range 9000-9100&lt;/p&gt;
&lt;p&gt;I recommend following &lt;a rel=&quot;external&quot; href=&quot;https://www.linode.com/docs/security/basics/securing-your-server/&quot;&gt;Linode&#39;s Guide on Hardening SSH Access&lt;/a&gt;&lt;/p&gt;
&lt;h1 id=&quot;now-that-your-server-install-is-ready-let-s-install-dependencies&quot;&gt;Now that your server install is ready let&#39;s install dependencies:&lt;/h1&gt;
&lt;pre&gt;&lt;code&gt;sudo apt install  atool mono ufw screen libturbojpeg0 unzip
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Press &lt;strong&gt;Y&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Allow the Ports through ufw(the firewall we installed)&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;sudo ufw allow 9000:9100/tcp
sudo ufw allow 9000:9100/udp
&lt;/code&gt;&lt;/pre&gt;
&lt;h1 id=&quot;set-up-a-user-for-osgrid-s-opensim-binary-to-run-as&quot;&gt;Set up a user for OSGrid&#39;s OpenSim binary to run as:&lt;/h1&gt;
&lt;pre&gt;&lt;code&gt;sudo adduser --disabled-login osgrid
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;You can just leave all the prompts blank.&lt;/p&gt;
&lt;h1 id=&quot;let-s-switch-to-that-user-and-get-opensim-for-osgrid&quot;&gt;Let&#39;s Switch to that user and get OpenSim For OSGrid:&lt;/h1&gt;
&lt;pre&gt;&lt;code data-lang=&quot;bash&quot;&gt;sudo su osgrid
cd # Will take you to the osgrid user&amp;#39;s home directory, Remember this
wget http://danbanner.onikenkon.com/osgrid/osgrid-opensim-10172020.v0.9.2.3049658.zip
aunpack osgrid-opensim-10172020.v0.9.2.3049658.zip
mv osgrid-opensim-10172020.v0.9.2.3049658.zip osgrid
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Now We&#39;re gonna run it for the first time. It&#39;ll have you go through some prompts. The documentation for these prompts are &lt;a rel=&quot;external&quot; href=&quot;https://wiki.osgrid.org/index.php/Tutorial01&quot;&gt;HERE&lt;/a&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;cd osgrid/bin/
mono OpenSim.exe
&lt;/code&gt;&lt;/pre&gt;
&lt;ol&gt;
&lt;li&gt;Name the Estate/Region&lt;/li&gt;
&lt;li&gt;Accept UUID by pressing Enter&lt;/li&gt;
&lt;li&gt;Pick Grid Coordinates&lt;/li&gt;
&lt;li&gt;Leave Internal IP 0.0.0.0 by pressing Enter&lt;/li&gt;
&lt;li&gt;We&#39;re not running inside docker just press Enter&lt;/li&gt;
&lt;li&gt;Make sure you give it your publick IP Address for the machine or the domain name you directed at the Server&lt;/li&gt;
&lt;li&gt;It&#39;ll ask you if you want to create an Estate propbably, say yes make yourself Estate owner&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;That should do it, but we want this thing running all the time. Once it&#39;s up, verify you can access it by teleporting to it in your Client,&lt;/p&gt;
&lt;p&gt;If you can, good job, next we want to shut it down in the console type &lt;code&gt;shutdown&lt;/code&gt; and it should go down.&lt;/p&gt;
&lt;h1 id=&quot;systemd-service-and-screen&quot;&gt;SystemD Service and Screen:&lt;/h1&gt;
&lt;p&gt;Now we&#39;re going to create a SystemD service.a&lt;/p&gt;
&lt;p&gt;First press &lt;strong&gt;CTRL+D&lt;/strong&gt; to exit the osgrid user session and get back to your main user.&lt;/p&gt;
&lt;p&gt;By default Debian Comes with &lt;code&gt;nano&lt;/code&gt; I hate &lt;code&gt;nano&lt;/code&gt; but we&#39;ll use it anyway.&lt;/p&gt;
&lt;p&gt;Run:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;sudo nano /lib/systemd/system/opensim.service
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Then paste this in pressing SHIFT+CTRL+V&lt;/p&gt;
&lt;pre&gt;&lt;code data-lang=&quot;ini&quot;&gt;[Unit]
Description=OpenSim Service
After=syslog.target network.target

[Service]
User=osgrid
LimitSTACK=1048576
WorkingDirectory=/home/osgrid/osgrid/bin
ExecStart=/usr/bin/screen -S OpenSimService -D -m mono OpenSim.exe -gui=true
ExecStop=/usr/bin/screen -d -r OpenSimService -X stuff &amp;quot;shutdown&amp;quot; ; /usr/bin/screen -d -r OpenSimService -X eval &amp;quot;stuff ^M&amp;quot;
KillMode=none

[Install]
WantedBy=multi-user.target
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;PRESS CTRL+O TO SAVE THEN CTRL+X TO EXIT&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Now Let&#39;s enable and start the service&lt;/p&gt;
&lt;p&gt;type:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;`sudo systemctl enable opensim.service
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;then type:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;sudo systemctl start opensim.service
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;It might have started running when you enabled it.&lt;/p&gt;
&lt;p&gt;You can check the status of it with &lt;code&gt;sudo systemctl status opensim.service&lt;/code&gt; Read the systemctl manual for more understanding.&lt;/p&gt;
&lt;p&gt;That&#39;s it you should be good.&lt;/p&gt;
&lt;p&gt;You can access the server console with screen like this:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;sudo su osgrid -c &amp;#39;screen -r OpenSimService&amp;#39;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;You can quit the console without killing the server by pressing &lt;strong&gt;CTRL+A&lt;/strong&gt; and then hitting &lt;strong&gt;D&lt;/strong&gt; on the keyboard.&lt;/p&gt;
&lt;p&gt;You&#39;re done. If you need additional help message me.&lt;/p&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>EAC Progress in Wine is Finally Here.</title>
        <published>2020-07-19T00:00:00+00:00</published>
        <updated>2020-07-19T00:00:00+00:00</updated>
        
        <author>
          <name>Unknown</name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://undying.systems/blog/wine-eac/"/>
        <id>https://undying.systems/blog/wine-eac/</id>
        
        <content type="html" xml:base="https://undying.systems/blog/wine-eac/">&lt;p&gt;&lt;strong&gt;UPDATE: THIS NO LONGER WORKS!&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;So it&#39;s been a long road getting to here, but I&#39;m happy to say I played 3 games of Apex Legends and Halo: Reach competitively on Linux over the past 24 hours. It&#39;s still a bit of a pain but progress is being made, games are finally playable. This opens the door to so many games that did not run previously. While Battle Eye might be a long way off, this is incredible news for Linux Gaming. Reports are piling up for games that are working, and the methods to get them working.&lt;/p&gt;
&lt;h2 id=&quot;some-things-worth-mentioning&quot;&gt;Some Things worth Mentioning&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;This is not officially supported by Wine or EAC currently so use this at your own risk.&lt;/li&gt;
&lt;li&gt;Esync and Fsync are currently Unsupported. This has major performance implications on weaker machines.&lt;/li&gt;
&lt;li&gt;This is a &lt;strong&gt;VERY UNSTABLE&lt;/strong&gt; release. you will need to create a script to kill wine processes because you&#39;ll be using it regularly. I will provide one in the guide below for getting Apex running.&lt;/li&gt;
&lt;li&gt;Not everything is working. Fortnite for example uses both BattleEye and EAC and it&#39;s a gamble which one will launch, though some people have reported success.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;steps-to-get-apex-legends-working&quot;&gt;Steps to get Apex Legends working.&lt;/h2&gt;
&lt;p&gt;Apex is currently the best title to test because people have had the most success with it.&lt;/p&gt;
&lt;h2 id=&quot;this-is-what-i-had-to-do-to-get-apex-working&quot;&gt;This is what I had to do to get Apex working:&lt;/h2&gt;
&lt;p&gt;Join &lt;a rel=&quot;external&quot; href=&quot;https://discord.gg/xyk669b&quot;&gt;This Discord&lt;/a&gt;.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Do not Spam up the Chat and make sure you&#39;re posting in the correct channel.&lt;/li&gt;
&lt;li&gt;There are a ton of Pinned Messages they&#39;re hard to sort through. Which is why I&#39;m writing this guide.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;installation&quot;&gt;Installation&lt;/h3&gt;
&lt;p&gt;Install Lutris and Install &lt;strong&gt;Apex&lt;/strong&gt;((Not Origin)) from the &lt;a rel=&quot;external&quot; href=&quot;https://lutris.net/games/apex-legends/&quot;&gt;Lutris Page&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Log into your Origin account, and Install Apex &lt;strong&gt;fully&lt;/strong&gt; through Origin. It&#39;s around 40GB so it might take awhile.&lt;/li&gt;
&lt;li&gt;Download GloriousEggroll&#39;s latest EAC-Testing build &lt;a rel=&quot;external&quot; href=&quot;https://drive.google.com/file/d/1DJUhQrPii9386Y7HDhF5ZsW3T3Z7jUYk/view?usp=sharing&quot;&gt;HERE&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Extract that file and place the folder in &lt;code&gt;~/.local/share/lutris/runners/wine&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;When the game is done installing &lt;strong&gt;DO NOT LAUNCH IT&lt;/strong&gt; kill all Wine Processes from you Terminal like this &lt;code&gt;kill -9 $(ps -ef | grep -E -i &#39;(wine|processid|\.exe)&#39; | awk &#39; {print $2}&#39;)&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;configuration&quot;&gt;Configuration&lt;/h3&gt;
&lt;p&gt;From Lutris Right Click Apex and go to &lt;strong&gt;Runner Options&lt;/strong&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Set the runner to &lt;code&gt;eac-2020JULY13-eac-derek-x86_64&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Scroll down to &quot;Output Debugging info&quot; and set it to &quot;Inherit from environment&quot;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Next we need to install &lt;code&gt;winhttp&lt;/code&gt; with &lt;code&gt;winetricks&lt;/code&gt; There&#39;s two ways to do this:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;You can use the winetricks GUI by right clicking Apex and clicking Winetricks. Click Install an Application then click cancel, another GUI window should pop up and select Install Windows DLL or Component, then scroll down and check &lt;code&gt;winhttp&lt;/code&gt; and click okay.&lt;/li&gt;
&lt;li&gt;You can do this from CLI, provided you have &lt;code&gt;winetricks&lt;/code&gt; installed on your system. Run this command &lt;code&gt;WINEPREFIX=${HOME}/Games/apex-legends winetricks winhttp&lt;/code&gt;. This will use your System&#39;s Wine and &lt;strong&gt;IS NOT RECOMMENDED!&lt;/strong&gt; However I&#39;ve had some issues with the &lt;code&gt;winetricks&lt;/code&gt; GUI in the past so if you&#39;re having issues try this.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;known-issues&quot;&gt;Known Issues.&lt;/h2&gt;
&lt;p&gt;There&#39;s a known issue on some Window Managers for getting a black screen. You can fix this with the launch options &lt;code&gt;-window -noborder -dev -novid&lt;/code&gt; Which are applied by going into your Library on Origin, click Apex, then clicking the Settings Cog, and going to Advanced Launch Options.&lt;/p&gt;
&lt;p&gt;EAC will sometimes launch twice, it does not close gracefully always kill &lt;code&gt;wine&lt;/code&gt; with the command provided above.&lt;/p&gt;
&lt;p&gt;Origin will fail to fully launch if you have Simultaneous Output Enabled for PulseAudio. You can disable this under the Simultaneous Output tab of &lt;code&gt;paprefs&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Check the Pinned Messages in The Discord Server&lt;/strong&gt; report problems you&#39;re having in the places they say to report them.&lt;/p&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>Protecting Your Privacy</title>
        <published>2020-05-16T00:00:00+00:00</published>
        <updated>2020-05-16T00:00:00+00:00</updated>
        
        <author>
          <name>Unknown</name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://undying.systems/blog/protecting-your-privacy/"/>
        <id>https://undying.systems/blog/protecting-your-privacy/</id>
        
        <content type="html" xml:base="https://undying.systems/blog/protecting-your-privacy/">&lt;p&gt;If you live in The United States, I have some unsurprising news for you, &lt;a rel=&quot;external&quot; href=&quot;https://www.vice.com/en_us/article/jgxxvk/senate-votes-to-allow-fbi-to-look-at-your-web-browsing-history-without-a-warrant&quot;&gt;Senate just Voted that the FBI can seize your Browsing and Search History without a Warrant.&lt;/a&gt;. &lt;a rel=&quot;external&quot; href=&quot;https://gizmodo.com/heres-who-just-voted-to-let-the-f-b-i-seize-your-searc-1843445032&quot;&gt;Here&#39;s another link so you know who&#39;s responsible.&lt;/a&gt;. Normally I&#39;d want to avoid conspiracy terms in this Tech Oriented Blog but this is another example of the American Police State, and Dystopian Cyberpunk Nightmare Society we seem to be on a fast track towards.&lt;/p&gt;
&lt;h1 id=&quot;privacy-practices&quot;&gt;Privacy Practices&lt;/h1&gt;
&lt;p&gt;These things and steps you can take to better secure your privacy. I&#39;ll be discussing each one in a section below.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Don&#39;t use Windows&lt;/li&gt;
&lt;li&gt;Encrypt your data(Even on Windows)&lt;/li&gt;
&lt;li&gt;Hardware 2FA for PC Logins&lt;/li&gt;
&lt;li&gt;Use TOR or a Quality VPN&lt;/li&gt;
&lt;li&gt;Use a safe and trusted Web Browser&lt;/li&gt;
&lt;li&gt;Zero Persistence Systems&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;BE LOUD AND COMPLAIN!&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h1 id=&quot;don-t-use-windows&quot;&gt;Don&#39;t use Windows&lt;/h1&gt;
&lt;p&gt;It should go without saying that if you value your privacy and are serious about it that Windows 10 is entirely out of the question. Microsoft is generally 100% compliant with Law Enforcement. Windows 10 is closed source, and there are numerous examples of people using Man-in-the-Middle devices to monitor the amount of data that Windows 10 sends out when idle.&lt;/p&gt;
&lt;p&gt;If Windows is Required for your work, I recommend at the very least setting it up as a Virtual Machine and doing your Web Browsing from a more secure system.&lt;/p&gt;
&lt;p&gt;There are a lot of Privacy Oriented Open Source Operating Systems, and I recommend doing some research. I will talk about Zero Persistence further in this article.&lt;/p&gt;
&lt;p&gt;That being said many regular use Linux Distributions are fine for taking an extra step in protecting your privacy, especially large ones where thousands of people are reviewing the code on a daily basis.&lt;/p&gt;
&lt;h1 id=&quot;encrypted-your-data&quot;&gt;Encrypted your Data&lt;/h1&gt;
&lt;p&gt;Even if you don&#39;t care about warrantless seizure of your data because you&#39;re a boot licking moron, you should still care about your data being stolen if your machine is physically compromised. If you have an Unencrypted Drive and you use the default password storage for Google Chrome or Firefox, your passwords are stored in &lt;strong&gt;plaintext&lt;/strong&gt; in your application data folders.&lt;/p&gt;
&lt;h3 id=&quot;on-windows&quot;&gt;On Windows&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;Press the Windows Key.&lt;/li&gt;
&lt;li&gt;Type &quot;Bitlocker&quot; in the search field.&lt;/li&gt;
&lt;li&gt;Click &quot;Click Turn On Bitlocker&quot; for any Fixed Disks with Sensitive Data.&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&quot;on-macos&quot;&gt;On MacOS&lt;/h3&gt;
&lt;p&gt;&lt;a rel=&quot;external&quot; href=&quot;https://support.apple.com/guide/disk-utility/encrypt-protect-a-storage-device-password-dskutl35612/mac&quot;&gt;Follow this guide and pray.&lt;/a&gt;&lt;/p&gt;
&lt;h3 id=&quot;on-linux&quot;&gt;On Linux&lt;/h3&gt;
&lt;p&gt;&lt;a rel=&quot;external&quot; href=&quot;https://en.wikipedia.org/wiki/Logical_Volume_Manager_(Linux)&quot;&gt;LVM&lt;/a&gt;+&lt;a rel=&quot;external&quot; href=&quot;https://en.wikipedia.org/wiki/Linux_Unified_Key_Setup&quot;&gt;LUKS&lt;/a&gt; is your best bet and many popular distributions like Debian, Fedora and Ubuntu have options for this in their graphical installers. I will not write a step by step guide for doing this. I recommend an encrypted boot partition that requires a Hardware Two Factor Key like a Yubikey or Google Titan Key for work sensitive data.&lt;/p&gt;
&lt;h1 id=&quot;hardware-2fa&quot;&gt;Hardware 2FA&lt;/h1&gt;
&lt;p&gt;I use Hardware Keys as an additional step for Login on my system. I have three Yubikeys for this. One that sits in my laptop permanently, one that&#39;s on my keychain, and one that is my backup key for both systems that sits in my safe.&lt;/p&gt;
&lt;p&gt;What this means is that I cannot log in on my machines without one of these keys inserted. I need a password and the key to authorize a login. The key is also required to unlock my Encrypted drives on my Work Laptop.&lt;/p&gt;
&lt;p&gt;This is important because if I wanted to block someone&#39;s access to the machine, I could physically destroy the main key for it.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;ALWAYS BUY AT LEAST TWO KEYS IF YOU WANT TO DO THIS&lt;/strong&gt;&lt;/p&gt;
&lt;h1 id=&quot;use-quality-premium-vpn-or-tor&quot;&gt;Use Quality Premium VPN or TOR&lt;/h1&gt;
&lt;p&gt;I did a video on VPNs awhile back on YouTube. It&#39;s entirely irrelevant now given the subject matter of this blog post. The reason why I recommend a VPN is to help obfuscate your data by blending it with data from other users. This doesn&#39;t entirely stop digital fingerprinting but it&#39;s a good step in the right direction.&lt;/p&gt;
&lt;p&gt;I really can only recommend two Premium VPN Services these days.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a rel=&quot;external&quot; href=&quot;https://mullvad.net/en/&quot;&gt;Mullvad VPN&lt;/a&gt;
Mullvad is a Premium and Totally Anonymous VPN with a Zero Logging Policy that can be paid for entirely in CryptoCurrency.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a rel=&quot;external&quot; href=&quot;https://protonvpn.com/&quot;&gt;ProtonVPN&lt;/a&gt;
ProtonVPN is the Sister Project to ProtonMail. Both are Privacy Oriented Projects. While I think Encrypted Email is totally pointless, I still use both because they are quality services. They have Open Sourced their projects now under GPLv3 and offer TOR Exit Nodes on their Paid Tier.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;You can use TOR on almost any Operating System by just downloading and installing TOR Browser, it&#39;s based on Firefox, it bounces you through the TOR Network, It is good, and it is free. Many Linux Distributions include a base TOR package which can be executed manually to generate a secure TOR SOCKS connection if you&#39;re interested in using TOR for all of your internet traffic.&lt;/p&gt;
&lt;h2 id=&quot;privacy-respecting-web-browsers&quot;&gt;Privacy Respecting Web Browsers&lt;/h2&gt;
&lt;p&gt;If you&#39;re not using TOR Browser, I highly recommend Firefox with some extensions like &lt;a rel=&quot;external&quot; href=&quot;https://addons.mozilla.org/en-US/firefox/addon/adnauseam/&quot;&gt;AdNauseam&lt;/a&gt; and one of the wonderful script blocking plugins out there. Be sure to change your default search engine to &lt;a rel=&quot;external&quot; href=&quot;https://help.duckduckgo.com/duckduckgo-help-pages/desktop/firefox/&quot;&gt;Duck Duck Go&lt;/a&gt; while you&#39;re at it.&lt;/p&gt;
&lt;p&gt;Some other Browsers I can recommend if you&#39;re locked into your Chrome Extensions are &lt;a rel=&quot;external&quot; href=&quot;https://vivaldi.com/&quot;&gt;Vivaldi&lt;/a&gt; and &lt;a rel=&quot;external&quot; href=&quot;https://brave.com/&quot;&gt;Brave&lt;/a&gt;. Both projects are run by Former Opera and Mozilla developers and both are fairly nice. Brave offers a rewards program which I&#39;ve never used.&lt;/p&gt;
&lt;p&gt;Your Web Browser is a big part of your digital finger print and these Browsers and Plugins make an effort to obscure that fingerprint whenever possible, as well as minimize tracking and play the role of watchdog between you and malicious sites.&lt;/p&gt;
&lt;h2 id=&quot;zero-persistence-systems&quot;&gt;Zero Persistence Systems&lt;/h2&gt;
&lt;p&gt;If you really want to go to extremes you can combine all of the above mentioned things in a Zero Persistence System. I feel like this subject matter is probably deserving of its own blog post so I will briefly sum up the concept.&lt;/p&gt;
&lt;p&gt;Zero Persistence Operating Systems are very common among activists and government intelligence organizations. The NSA has their own Linux Distribution for this. The basic idea is that you boot your system from a small disposable medium such as a Disc or USB Drive, the system either boots into your RAM or Directly off of the USB Drive and stores no data after you shut the system down, or boots the System Volume with &quot;Read Only&quot; permissions and you are expected to store any persistent data on an additional Storage Medium. Many Linux Distributions offer Live Images with Zero Persistence for example.&lt;/p&gt;
&lt;p&gt;Some Linux Distributions that specialize in this are:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a rel=&quot;external&quot; href=&quot;https://tails.boum.org/&quot;&gt;Tails&lt;/a&gt;
Tails is probably the most popular solution for this usecase. It is lightweight and can boot on almost any Personal Computer from the past 20 years or so.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a rel=&quot;external&quot; href=&quot;https://www.kali.org/&quot;&gt;Kali Linux&lt;/a&gt;
Kali Linux is a Penetration Testing Tool Kit used by many industry professionals. You&#39;ve likely seen it mentioned a lot by the Media as the Hacker Operating System and even seen its logo on television shows like Mr. Robot. Kali is inteded to be run with Zero Persistence and is a good alternative to Tails if you need more software available to you on boot. Anything packaged for Debian &lt;em&gt;should&lt;/em&gt; also be available for Kali.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a rel=&quot;external&quot; href=&quot;https://alpinelinux.org/&quot;&gt;Alpine Linux&lt;/a&gt;
Alpine Linux is a lightweight Privacy Focussed distribution with multiple install options, a wide range of Software and CPU Architecture Support. Alpine is somewhat of an outlier as it uses OpenRC for its init system, uses musl-libc, and BusyBox instead of GNU CoreUtils. I use Alpine every day for non privacy oriented tasks, it is a very well put together distribution.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;be-loud-and-annoying&quot;&gt;BE LOUD AND ANNOYING!&lt;/h2&gt;
&lt;p&gt;Finally, you need to be loud. You need to let your representatives know that this kind of unwarranted wiretapping and spying is &lt;strong&gt;not okay&lt;/strong&gt; and never will be. This is the kind of &lt;strong&gt;BULLSHIT&lt;/strong&gt; the FBI and NSA have been getting away with since the Civil Rights Movement under the guise of locating &lt;em&gt;Domestic Terrorists&lt;/em&gt; and protecting America from &lt;em&gt;Communist Interests&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;Being Loud, spreading information about Data Privacy and steps the government is taking to eliminate encryption are the most important part of this entire process. A properly informed society is a very powerful society, Iceland is a great example of this. We need to start holding politicians accountable for the Bills they sign that violate our Civil Liberties and Personal Privacy.&lt;/p&gt;
&lt;p&gt;I don&#39;t think that everyone needs to go to the lengths that I or other Privacy Advocates generally go through, but taking some steps if you&#39;re researching controversial or anti-government ideas or concepts are now an absolute requirement, and you need to be careful. &lt;strong&gt;YOU DO NOT HAVE TO HAVE DONE SOMETHING WRONG TO GET IN TROUBLE! THE POLICE LIE ALL THE TIME, THEY GET PAID WHETHER THEY CATCH THE RIGHT PERSON OR THE WRONG PERSON! DO NOT EVER TRUST AUTHORITY! TRUST AND RESPECT ARE EARNED! OUR TRUST AND RESPECT IS USED AS A TOOL TO MAKE US FEEL GUILTY AND HAS BEEN REPEATEDLY VIOLATED SINCE SEPTEMBER 11TH, 2001!&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Thank you for reading as always and feel free to contact me if you have any questions or suggestions. As always you can catch me in my Discord or on Freenode in #cyberpunk or #voidlinux-ppc.&lt;/p&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>Three Years Windows Free</title>
        <published>2020-05-06T00:00:00+00:00</published>
        <updated>2020-05-06T00:00:00+00:00</updated>
        
        <author>
          <name>Unknown</name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://undying.systems/blog/windows-free/"/>
        <id>https://undying.systems/blog/windows-free/</id>
        
        <content type="html" xml:base="https://undying.systems/blog/windows-free/">&lt;p&gt;I have spent the last 3 years mostly Windows free. In April of 2017 my boot files on my     Windows 7 install got corrupted. I had been mostly using Linux for work at this point. I had the  urge to move back to Linux as my desktop after a long hiatus after the growing pains Gentoo and Fedora had between 2006-2009, had long since been overcome. The one thing that was holding me back up until then was a number of games; of which I was hardly playing.&lt;/p&gt;
&lt;p&gt;Around this time a project had popped up on GitHub and was being posted about called &lt;a rel=&quot;external&quot; href=&quot;https://github.com/doitsujin/dxvk&quot;&gt;DXVK&lt;/a&gt;. The project&#39;s intent was to provide a translation layer between DirectX 11 API calls and convert them to Vulkan, as opposed to the old method of using the dated OpenGL API, with limited success. DXVK did not see its first release in 0.2.0 for nearly 8 months after I decided to switch, but Wine was also making a lot of progress in game compatibility at the time too, and many users had gotten one of my favorite games, Overwatch, working at the time. These factors on top of Valve supplying Native Ports for almost their entire Library since the release of Steam for Linux and SteamOS were also major motivating factors in making the switch. I decided that I would just ignore any games that I couldn&#39;t run on the chance that they would certainly run in the future.&lt;/p&gt;
&lt;h2 id=&quot;making-the-switch&quot;&gt;Making the Switch:&lt;/h2&gt;
&lt;p&gt;I initially decided to install Kubuntu, the KDE Plasma flavor of Ubuntu. I gave this a try for a few months before deciding I didn&#39;t like KDE very much anymore. Primarily due to a &lt;strong&gt;still present&lt;/strong&gt; bug where Baloo file indexer will recursively index files, and cause your disk I/O to be at 100% constantly. This was causing my system to perform almost as poorly as it did on Windows.&lt;/p&gt;
&lt;p&gt;After deciding that KDE was not for me, I switched stock Ubuntu with Gnome for some time with xfce4 installed to test out as well. I stuck with this setup for 4 months. It was great, I have almost nothing bad to say about the Ubuntu landscape, other than the mess that is getting up-to-date Graphics Drivers, and having to resort to using 3rd Party PPA&#39;s at the time.&lt;/p&gt;
&lt;p&gt;I had been entertaining the idea of switching back to Gentoo for most of this time, however I was very bandwidth and time limited and did not feel like waiting for source downloads and compile times for every package on my system. I also think &lt;code&gt;portage&lt;/code&gt; is the absolute worst package manager ever devised, and I will stand by this for the rest of forever until it is rewritten in something that isn&#39;t python2.&lt;/p&gt;
&lt;h2 id=&quot;switching-to-arch-linux&quot;&gt;Switching to Arch Linux&lt;/h2&gt;
&lt;p&gt;I ended up making a compromise and switching to Arch Linux instead. I mostly enjoyed Arch linux but I&#39;m going to list a few problems I had as an experienced Linux user right from the start with just my installation.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Copious amounts of Documentation on a Wiki is no substitute for concise and easy to follow Documentation.&lt;/li&gt;
&lt;li&gt;The Arch Live image comes with a tool called &lt;code&gt;wifi-menu&lt;/code&gt;, which allows you to get networking to get your system installed. The &lt;code&gt;base&lt;/code&gt; metapackage at the time included &lt;code&gt;wifi-menu&lt;/code&gt; but none of its dependencies. This went unfixed for &lt;strong&gt;2 years!&lt;/strong&gt;  This meant that when you finished your installation, if you did not have access to an ethernet port or have not manually installed an application like &lt;code&gt;NetworkManager&lt;/code&gt;, you were about to end up being very frustrated.&lt;/li&gt;
&lt;li&gt;Arch has a very limited amount of software in its &lt;code&gt;core&lt;/code&gt;, &lt;code&gt;community&lt;/code&gt; and &lt;code&gt;extra&lt;/code&gt; repositories. This makes Arch very dependent on the Arch User Repository, which has absolutely no oversight for packaging quality. Meaning if you don&#39;t know how the Arch Build System works you&#39;re basically trusting a package not to break your machine.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;All of this being said my experience on Arch Linux was incredibly good. I was always able to find or package software I wanted because the Arch Build System is very easy to learn. Having the latest packages was very nice since I do a moderate amount of gaming. Arch encouraged me to fiddle with my system a lot too, and I was able to learn a lot more about how I wanted my workflow to be. I stuck with Arch for about a year, with the only major problems I had being the occasional random black screen on boot because of &lt;strong&gt;NVIDIA!&lt;/strong&gt;&lt;/p&gt;
&lt;h2 id=&quot;proton&quot;&gt;PROTON&lt;/h2&gt;
&lt;p&gt;In April of 2018 Valve released a Beta Steam Client update that allowed users to test their new Compatibility Layer called &lt;a rel=&quot;external&quot; href=&quot;https://github.com/ValveSoftware/Proton&quot;&gt;Proton&lt;/a&gt;. Along with Hiring the developer of DXVK. This has drastically improved the Gaming Landscape on Linux in ways i would have never imagined after the collapse of Loki Games, in the early 2000s. I cannot express how happy I am with Proton, I have done 3 Youtube videos on Proton, covering how incredible it is for gaming on Linux. The number of people that have switched to Linux as their primary Desktop Operating System thanks to Valve&#39;s efforts with Proton is nothing short of amazing.&lt;/p&gt;
&lt;p&gt;My experience with Proton on Arch Linux was pretty great until I had to deal with Proton running the Esync patches for wine, and Arch was using the default file descriptor limit sizes. This was a huge pain to figure out how to change because Arch Uses SystemD which overrides the default method for changing hard and soft descriptor limits.&lt;/p&gt;
&lt;p&gt;As of writing this most of my game library is Compatible. You can check yours on &lt;a rel=&quot;external&quot; href=&quot;https://www.protondb.com/&quot;&gt;ProtonDB&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id=&quot;void-linux&quot;&gt;Void Linux&lt;/h2&gt;
&lt;p&gt;In September of 2018 I switched from Arch Linux to Void Linux on my Desktop, after running Void with &lt;a rel=&quot;external&quot; href=&quot;https://www.musl-libc.org/&quot;&gt;musl-libc&lt;/a&gt; on my laptop for most of the summer. My experience on Void Linux is probably the closest I&#39;ve gotten to my enjoyment of learning things and using Linux since the time I first installed Slackware on a Machine in 1999. I would not recommend Void Linux for everyone or even as their first Linux Distribution but It is an incredibly well put together Distribution.&lt;/p&gt;
&lt;p&gt;Some things I really like about Void:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The Package Manager&lt;/li&gt;
&lt;li&gt;Support for a wide variety of CPU Architectures.&lt;/li&gt;
&lt;li&gt;The New Handbook and the way they approach Documentation&lt;/li&gt;
&lt;li&gt;The way they maintain and oversee the repositories.&lt;/li&gt;
&lt;li&gt;The community in general seems to be a lot more mature and professional&lt;/li&gt;
&lt;li&gt;Using &lt;a rel=&quot;external&quot; href=&quot;http://smarden.org/runit/&quot;&gt;runit&lt;/a&gt; as its init system&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I am able to run Void on a variety of systems because of the portability of the package manager.&lt;/p&gt;
&lt;p&gt;Currently I&#39;m running Void on:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;My Main Desktop and Work Laptop&lt;/li&gt;
&lt;li&gt;3 raspberry pi 3Bs&lt;/li&gt;
&lt;li&gt;2 PowerMac G5 towers&lt;/li&gt;
&lt;li&gt;3 PowerBook G4s&lt;/li&gt;
&lt;li&gt;My 2u Frankenstein Server&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I have only had Void break from updating one time in the nearly 2 years I have been using it. While there has been a fair bit of public drama regarding the distribution recently, things on the end that matters, which is maintenance continue to go forward as normal.&lt;/p&gt;
&lt;h2 id=&quot;the-desktop-experience&quot;&gt;The Desktop Experience&lt;/h2&gt;
&lt;p&gt;This post primarily addressed gaming because the regular Desktop experience on Linux with a full Desktop Environent is honestly much better than it currently is on Windows. Using a fully featured and developed Desktop Environment like Gnome 3 or KDE Plasma you can expect a very professional and modern experience on Linux. Most Distribution&#39;s Package Managers are far superior to Windows, since you  can source your software directly from the people maintaining your operating system, as opposed to finding executables and installers on the web. This is a much more sane approach to installing software, it&#39;s easier, it&#39;s safer, it&#39;s much more modern.&lt;/p&gt;
&lt;p&gt;The only bad thing that I can really say about this would be the nearly overwhelming number of choices you have. When making the switch I did a little research and ended up grabbing the software that sounded appealing to me for the tasks I was doing.&lt;/p&gt;
&lt;p&gt;In the  end I decided to use Gnome 3 as it is the default environment on many Distributions and I work with remote workstations a lot. In my opinion this is the most feature complete Environment on Linux, even if other people are very opinionated against it.&lt;/p&gt;
&lt;h2 id=&quot;i-won-t-be-returning-to-windows&quot;&gt;I won&#39;t be returning to Windows&lt;/h2&gt;
&lt;p&gt;Here is a short list of reasons why I won&#39;t return to Windows:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Reformatting should not be a recommended Maintenance Step&lt;/li&gt;
&lt;li&gt;Windows Update is undeniably broken,&lt;/li&gt;
&lt;li&gt;NTFS is almost as old as I am, has notoriously slow I/O and leads to horrible disk fragmentation.&lt;/li&gt;
&lt;li&gt;Bloatware on a &quot;Professional&quot; Operating System.&lt;/li&gt;
&lt;li&gt;Lack of Standardization&lt;/li&gt;
&lt;li&gt;Shady data collection&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I am willing to give up the 10 or so games I might not be able to play right now for the quality of life I have when working on my system now. When I do run into a problem it&#39;s much easier to track down the issue and correct it. It is mind boggling to me that Windows users are terrified of opening the CLI but don&#39;t bat an eye following some sketchy forum post telling them to run some software as Administrator to fix their system problem, or open up the Registry and edit a specific file. That is in no way easier than the few maintenance tasks I have to run twice a month on my system.&lt;/p&gt;
&lt;h2 id=&quot;conclusion&quot;&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;After 3 years using a Linux Distribution as my daily Operating System for work. I can certainly recommend that you give it a try unless you are doing Audio Production, which is a miserable experience and there&#39;s a reason why Apple is praised in this field.&lt;/p&gt;
&lt;p&gt;I hope in 3 years time I won&#39;t be back here eating my words like I was with Gentoo and Fedora in 2009, but I don&#39;t really foresee that happening. Things have improved so much, the world runs on Open Source now.&lt;/p&gt;
&lt;p&gt;If you want any advice on making the switch, feel free to contact me. I will be posting about my experience on PowerPC very soon.&lt;/p&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>Where have I been? What&#39;s Going on?</title>
        <published>2020-05-04T00:00:00+00:00</published>
        <updated>2020-05-04T00:00:00+00:00</updated>
        
        <author>
          <name>Unknown</name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://undying.systems/blog/hello/"/>
        <id>https://undying.systems/blog/hello/</id>
        
        <content type="html" xml:base="https://undying.systems/blog/hello/">&lt;p&gt;Hello friends,&lt;/p&gt;
&lt;p&gt;I have been gone for awhile, and I apologize for that. I have been busy and just hit a big creative slump and depression. I decided the best way to get back into wanting to make things is to start writing about things I have been working on, and interesting projects I&#39;ve found.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;I have been working on:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Setting up a &lt;a rel=&quot;external&quot; href=&quot;https://discord.gg/RPgbjJs&quot;&gt;Discord&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Setting up Game Servers&lt;/li&gt;
&lt;li&gt;Porting Software to PowerPC and RISC-V&lt;/li&gt;
&lt;li&gt;Relearning C/C++ the &lt;strong&gt;RIGHT WAY&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;A series of lessons for people to get started using &lt;code&gt;vim&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Theming this blog so it&#39;s not a total eyesore(gruvbox dark coming soon...)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This is the first of many blog posts. I will try to post at least 2 times a week. Don&#39;t worry I&#39;m going to get a decent vanity domain this week, I know the current URL is a mouthful.&lt;/p&gt;
&lt;p&gt;Thanks for checking in.&lt;/p&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>Don&#39;t Install Manjaro</title>
        <published>2020-05-04T00:00:00+00:00</published>
        <updated>2020-05-04T00:00:00+00:00</updated>
        
        <author>
          <name>Unknown</name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://undying.systems/blog/manjaro-bad/"/>
        <id>https://undying.systems/blog/manjaro-bad/</id>
        
        <content type="html" xml:base="https://undying.systems/blog/manjaro-bad/">&lt;p&gt;Manjaro markets itself as a new user friendly distribution. It attempts to cater to the the same demographic of users as Mint(a conversation for another time.) and Ubuntu. The Manjaro maintainers are however very bad at doing this at anything deeper than a surface level. This makes the concept fundamentally fall apart.&lt;/p&gt;
&lt;h2 id=&quot;things-to-consider-in-no-particular-order&quot;&gt;Things to consider(in no particular order):&lt;/h2&gt;
&lt;p&gt;This is a brief rundown of things over the past five years or so.&lt;/p&gt;
&lt;h3 id=&quot;it-is-not-stable&quot;&gt;It is not stable&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;The Manjaro developers hold packages behind a week from the upstream for &lt;em&gt;stability&lt;/em&gt;. However there is little evidence of them ever intervening when there is an actual problem. This actually leads to more problems than it solves.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Manjaro has their own AUR helper. AUR Packages expect you to have an up-to-date Arch System. Since Manjaro holds packages for a week, this can and does lead to breakage from mismatched dependencies.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;poor-maintenance-practices&quot;&gt;Poor Maintenance Practices:&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Example;&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;The totally &lt;strong&gt;INSANE&lt;/strong&gt; way they went about reverting a SystemD vulnerability. Which caused a lot of the core system to break because they changed the version number instead of using an epoch. &lt;a rel=&quot;external&quot; href=&quot;https://old.reddit.com/r/linux/comments/ajclsq/manjaro_stable_requires_users_to_manually/&quot;&gt;Reference&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Up until recently they had documentation that would lead to partial system updates, which Arch Based Distributions just cannot do reliably, and could cause all sorts of problems. The lead developer was receptive about changing this documentation, but it&#39;s mind boggling to me how they can be maintaining this project and not know how the system they forked works.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;bad-security-practices&quot;&gt;Bad Security Practices&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Manjaro&#39;s SSL Certificates have expired twice in the past. These things happen and that&#39;s okay. What was not okay was what they suggested doing to get around this temporary issue. &lt;a rel=&quot;external&quot; href=&quot;https://web.archive.org/web/20150409095421/https://manjaro.github.io/expired_SSL_certificate/&quot;&gt;They recommended users change their system time.&lt;/a&gt; Yes this was 5 years ago but if you browse their forums or blog posts these kind of horrible recommendations are still the norm.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Their updater executes commands with the &lt;code&gt;--no-confirm&lt;/code&gt; flag by default. This is bad because it is essentially a &quot;forced&quot; command and will force updates even if their are errors, without notifying the user of any detected errors.&lt;a rel=&quot;external&quot; href=&quot;https://gitlab.manjaro.org/packages/core/manjaro-system/blob/master/manjaro-update-system.sh#L34&quot;&gt;Reference&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;They &lt;em&gt;accidentally&lt;/em&gt; pushed a beta feature of &lt;code&gt;pamac&lt;/code&gt;(their AUR Helper) which allowed for passwordless AUR package updates. I could write an entire book on why the AUR is unsafe. Why AUR helpers in general are bad. The potential damage that can be done to your machine is significant if you were to download a malicious AUR package update you system could easily be rooted. Their reaction from their community to people criticizing this was to call experienced Arch Linux Maintainers biased for pointing out why this was an incredibly bad idea. &lt;a rel=&quot;external&quot; href=&quot;https://www.reddit.com/r/linux/comments/eks6iw/major_security_flaw_with_manjaro_pamac/&quot;&gt;Reddit&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h1 id=&quot;conclusion&quot;&gt;Conclusion:&lt;/h1&gt;
&lt;p&gt;Every FOSS Project and Linux Distribution goes through growing pains and problems. My Distribution of choice, Void Linux, is now stranger to this. However, these situations with poor maintenance practices have been happening for 5 years and it seems they just can&#39;t get past them. I personally believe Arch is a barely functioning mess to begin withi, so basing a distribution for new users around it is only relevant because of the amount of software that&#39;s available in the AUR. You will learn a lot of very bad practices going forward if you decide to stick with Manjaro.&lt;/p&gt;
&lt;p&gt;If you are looking for a new user friendly distribution with a friendly installation process I really recommend picking an Ubuntu flavor, or using Fedora if you want newer packages.&lt;/p&gt;
&lt;p&gt;Thanks for reading.&lt;/p&gt;
</content>
        
    </entry>
</feed>
