⇚ Go Back

Linux/Unix Experience

Too long, didn't read version of this page:

There aren't really going to be many pictures in this page, as it'll be more of a detailing of my experiences with Linux. Since I didn't obsessively save screenshots for that, there really isn't much to show, so I'll have to rely on telling.

I've been using Linux off and on since roughly 2008, with one stint of using it predominately for a year. At first, I was deeply fascinated with the idea of portable operating systems when I discovered the ability to boot from a USB drive and use that operating system in memory. While I did not have enough experience to write my own GRUB boot scripts, I did know how to at least boot from a USB drive. There were a few programs I tried, but eventually I found the one I really liked: SARDU. I would recommend it, but sadly between the time I last used it and now, it seems to have gone the route of shareware as opposed to donationware. As well, now that I understand the tools more, I can much more easily recommend tools such as Universal USB Installer and of course the venerable dd.

At the time I was mainly interested in cramming as many distributions onto one USB drive as possible. Since then though I've discovered that what I was more interested at the time was the different desktop environments, and that I really would've been much better served just installing one distribution with many environments. Even that was a radical change compared to Windows, which has been relatively unchanged, save for the much maligned Windows 8 Metro design. The thought of being able to work with user interfaces drastically different from what can be obtained on Windows or OS X (now macOS) was really cool to me. Plus, since I was operating off of an incredibly slow Dell Dimension E310 with a 5400 RPM 80GB IDE hard drive, having an operating system function entirely from memory was like going from a golf cart to an F1 racer. I will confess that I did bring that USB to school, and would often boot into a Linux environment (usually either Porteus or Austrumi, the latter being a relatively obscure one with a satisfying UI based on FVWM). Fortunately, the teachers didn't know any better, and since I was in the browser, thought nothing of it. Portable applications were an interest of mine as well at the time, as I made sure to have portable versions of Firefox, Blender, and a few games on it.

Sometime in 2011, our Windows XP install broke horrendously. I still have no idea what exactly went wrong with it, but we were able to recover the data from the computer and that was about it. I decided at the time to install Linux Mint, because since it was a family computer, it still needed to be usable enough, and Ubuntu was in its Unity phase, which was just simply too slow on the old dinosaur we were using at the time. This was the first stint of using Linux full time. It did run significantly better on the computer than XP did, and was in general a pleasant time to use. Eventually I was able to get the one game I really cared about to work on it, so I was pretty much content as far as gaming at the time (that game being Unreal Tournament 2004 which I still play multiple times a week to this day).

Nothing major really happened between then, until eventually in 2013 I was able to build my first gaming computer. I did go back to Windows 7 since I wanted to have the best gaming experience I could. As a brief aside, I played through the entirety of Half-Life 2 and Episode 1 on the Dell E310. It was one of the most significantly arduous gaming tasks I've ever done, as even at 640x480, I was lucky when framerate got above 10 frames per second. Somehow though I managed to get through it. Even Unreal Tournament 2004 chugged along at a really rough framerate, but once I built the new PC, it was incredible the difference between the two. hile I did spend most of my time from then on in Windows 7, I still had a Linux Mint installation on a separate partition that I tinkered with from time to time (as well as my thumb drive).

Towards the very end of 2013, my SSD that I had Windows installed on failed. It was a Kingston SSDNow V300, which after their rather scummy re-etching of NAND chips from that era (I'm not sure if it's illegal but it's essentially bootlegging chips and branding them as your own), I now no longer trust the brand with anything. Without turning this into an ad, I will say that I use a brand of SSD from a company that also makes washing machines. My Mint install was on the mechanical hard drive, which I ended up having to rely on for a little while. Since I had it pretty much set up in a similar way to how it was on the Dell computer, it wasn't too rough switching back to it. Eventually I got that newer SSD, and it worked great until now in late 2020, but given that the thing has had tens of terabytes written to it, I'm not too surprised if it's starting to wear out. After this, I went back to my cycle of mostly using Windows and sometimes using Linux. In 2014 I took a class on Linux and Unix from my local community college. I was working as a tutor at the time, which had me in a room with two computers. During my downtime, naturally I found myself booting into Linux on one of those computers and doing homework for the class on it. We were asked to use Ubuntu for the class, so that's what I used.

Nothing much noteworthy happened between that point and the eventual point when I went back to Linux full time. The two major points were that my folks got a laptop of their own, and that I ended up building a newer computer in March 2019. I had set up Linux Mint once again on the SSD before the new build, and I had a slight suspicion that I would end up needing it in case something went screwy with the Windows 7 installation. Well... the Windows 7 installation sure did go screwy. I was stuck in 640x480 with no mouse and keyboard. No amount of unplugging and plugging would work. Since it wasn't responding to keyboard input I couldn't get into safe mode, and I didn't have a PS/2 adapter on hand either. As such, I needed to go with my Mint installation, and I decided at that point to just go back to Linux full time, since I knew significant advances had been made as far as Steam Proton goes. In short, Steam is a games distribution platform on PC, and Proton is a modified version of WINE, which is a set of libraries that allow many Windows programs to run on Linux. There have been some issues I've had with games not working at all or being very unstable, but most of the games I care about work just fine.

The real holy grail as far as gaming goes on Linux is the idea of GPU passthrough. Just playing games on a virtual machine (a software emulation of a computer) is insufficient because of the sometimes extreme performance impacts and limitations of that software emulation in and of itself. GPU passthrough allows the virtual machine to access the GPU directly, leading to near-equivalent if not completely equivalent performance to running the system under Windows. I haven't done that yet as I quite frankly don't have a power supply good enough to do that yet, and I'd also need a bigger case. My microATX case isn't nearly big enough for two GPUs. If I were to ever need to use Windows again, it would be in this sense. I have no plans to ever use Windows as my primary operating system ever again.

Since I have this computer entirely to myself, it pretty much means I can do whatever I want with it. One of the big changes between the last time I had used Linux and now is that I became much more interested in minimalist and terminal programs. Part of this was because I was admittedly somewhat blinded by the allure of being able to do things much more "efficiently," but also I just had an interest in doing things differently. I like software that makes my life easy, and if I can find software that makes my life easier, I'll go with it. It all started, as it does for so many, with the switch to Vim. As it is the case with so many people, using Vim is a bit rough to start with, but once I started getting better at it, I realized I never wanted to go back to text editors. Even still I find myself configuring programs to work in as Vim-like of a way as possible (mainly this means navigating with hjkl, corresponding to left, down, up, and right, but also to have certain Vim-like commands as well whenever applicable). A keyboard driven, modal editor really is the best way to go, and even though I now use Emacs and Vim for different tasks, I see no future in going back to any Notepad-esque programs. Another one of the first terminal based programs I really started relying on was an RSS reader known as Newsboat. I had been using RSSOwl for a while for a few simple feeds, but it was a bit cumbersome clicking through all of my unread news items. Newsboat was great because it does pretty much everything I need it to and nothing more: it organizes news by feeds, allows me to go through them quickly, and makes deleting them quick. I've tried a few of Emacs' RSS readers, but I've found them to be much more of a pain than just sticking with Newsboat. Either that or they simply lacked functionality that is innate to Newsboat, which while I understand can be implemented, seems to be too much of a hassle compared to just using Newsboat.

Another one of my big switches was to the neomutt terminal mail client. It does sound kinda crazy nowadays to have mail done by a terminal, but it actually works very well. Links does the heavy lifting as far as rendering the email, and writing the email is done in one's choice of editor. Plus, it's much, much easier to do things such as changing passwords on an account, as all you have to do is edit a .gpg file. It's quite convenient, and while I suppose I could be convinced to go back to a graphical mail client, I'd prefer to stick with newsboat if I can.

One of the biggest changes I decided to try as far as minimalism goes was to go to a tiling window manager. Tiling window managers work by having all windows on the screen, rather than being hidden, and allow you to switch between workspaces to stash windows in. There are two types: manual tilers, which allow you to spawn new windows usually to the right or beneath the current window, and dynamic tilers, which tile based on a preconfigured layout. At first I had tried i3, a manual tiler, and found it quite cumbersome trying to remember whether a window would spawn to the right or beneath my current window, as well as the cumbersome nature of having to switch between the two. I wrote off the idea of using a tiling window manager for a bit as I didn't know of the difference between the two types of tiling. I then discovered dwm and fell in love instantly. Its way of handling the spawning of windows was exactly what I wanted, and since it's designed to have the user build their own functionality into it through premade patches, it's something that the user innately remembers the key commands of. There's no learning, it's all what you decided on yourself. While I do know of other dynamic tilers such as Xmonad and qtile, I have no interest in using them, as dwm does everything I want it to. Plus, since it's in C, I don't have to worry about using a language that may or may not be installed on a machine I bring my installation to (although in the case of qtile, python is most likely already installed, but potentially without the libraries needed for it to run).

Another change that I've made on my Linux journey is the eventual switch away from Linux Mint. The company behind Ubuntu, Canonical, made a rather controversial decision to cut off 32-bit support, which would have made all 32-bit Steam games not usable under it. Since Linux Mint is a derivative of Ubuntu, this would have been a big issue. Eventually Canonical reversed the decision, but my lack of trust was pretty much solidified. The straw that broke the camel's back was that Linux Mint's version of neovim was 0.2.3, when the newest version at the time was 0.4.3. That's two major revisions behind. I decided to then look toward Debian, Arch, and Gentoo. I tried Arch first, and found that the installation process wasn't that bad, but I still wanted to try the other two to see how I felt about them. Gentoo was a kinda rough installation process, and I eventually decided that I didn't wanna use it full time, as the thought of having to recompile my kernel every now and then (as well as the full-system recompile in some cases) simply didn't appeal to me. Like I said earlier, I care about software that makes my life easy. I still hugely respect the project, it's just not for me. With Gentoo being struck from the list, it was now down to Debian and Arch. Debian's install was pretty painless, but I still found the idea of juggling repositories pretty obnoxious. I had already done that enough with PPAs in Linux Mint, and to be quite frank I just wanted something that would work cleanly. Plus, the "sudo-apt-update-sudo-apt-upgrade-shuffle" was in and of itself somewhat cumbersome. Finally, I was convinced enough by the Arch User Repository to just stick with Arch.

Arch has made my computing life much, much easier. I haven't really seen any major signs of breakage since installing it in November 2019. The only ones that really come to mind were a font acting somewhat finicky, the swapfile needing recreated on my tablet, and an issue getting Dwarf Fortress to work, which was the result of an AUR package. Otherwise, the Arch Linux news feed informs me of anything that may need intervention, and I haven't had any of the dreaded Xorg.conf errors that people were supposedly mortified of. Ever since then I haven't had much need to switch away from Arch. It does most everything I want it to, and it does it much much better than Windows or macOS alone could have done. I know there are some folks who ain't a fan of SystemD, and use forks of Arch such as Artix, but I haven't had enough issues with SystemD in order to switch to it. As much as I dislike some software being reliant on SystemD, I get why they do it.

As far as the BSD side of things go, that one is a bit more recent, but that involves the server farm I implemented. I'll go more into that on the SysAdmin portion, but I do prefer using OpenBSD as opposed to FreeBSD for servers. For the desktop experience, I don't have much interest in using FreeBSD. While I do know its Linux compatibility layer is quite good, and that its codebase is generally much more robust than Linux's, where it falters is in bleeding edge hardware compatibility. In a pure development environment I could be convinced, but for my daily usage, it's not quite there yet. As well, GPU passthrough is very much in its infancy in FreeBSD, and as such, that keeps me from being particularly interested in using it.

All in all, I'm glad I made that first step in the very beginning to give Linux a shot, as it has led me to a completely different operating system mindset. Windows is far too locked down for me, and as anyone who has used Windows for any extended period, troubleshooting it is an incredibly cumbersome time, even with Event Viewer. While SystemD certainly has issues with reporting what the error is (one of the reasons why people prefer other init systems), it is leaps and bounds better than Windows' systems. macOS is the one that I don't talk about much, but it suffers from largely the same concerns I have in being too closed source and locked down. Plus, their EULA is incredibly restrictive, which I find distateful. Linux on the desktop has made considerable advances, to where even my mom can use Linux Mint without any problems (although given how arduous the upgrade to Mint 20 was, that may soon become Manjaro instead). For most people who live in the browser, they may not notice any difference whatsoever. Thousands of college students already run Linux in the form of Chromebooks (as Frankenstein-like as Chrome OS is (seriously, Gentoo based, using Upstart (an unmaintained init program developed by Canonical) as its init system, and apt (Debian) as its package manager). It's absurd!). Really, the last boundaries are media productivity software and gaming, both of which are solved by GPU passthrough virtual machines. The software Looking Glass makes running a virutal machine with GPU passthrough incredibly easy. It's easier than ever to do most of one's work in Linux, so I feel that anyone curious should absolutely give it a shot. Start with Manjaro though, as Arch might just end up scaring potential greybeards-to-be away.