I Battled My Sister’s Blinky Monitor

Good Morning from my Robotics Lab! This is Shadow_8472 with a side project of the week. Let’s get started!

Did I Fix the Graphics Card or Not?

My sister’s computer has had its second monitor blinking intermittently. It’s been frequent enough to be annoying, but rare enough to be infuriating to diagnose. Over the months she’s had it, we’ve tested out the screens and cables. I’ve even booted it to one of my Linux drives for another project and it still blinked, so it’s not Windows’ fault. The next thing to test is the graphics card.

My sister’s graphics card has two HDMI ports for her screens and a DVI port she has set up with an HDMI adapter to a drawing tablet. I swapped it out for one of mine for a couple days, configuring one of my workstations for triple screens and played some games on it. As it continued to hold up, our theory evolved from the card being defective, to it not getting enough power in her computer as my power supply was a little stronger than hers.

We picked up a new power supply on discount, but I restored our original configuration for over the weekend to see if maybe something I wasn’t controlling for –but did nonetheless– was the cause, like a buggy driver (unlikely, given it was previously replicated in Linux).

The graphics card behaved without the new power supply up until just over an hour and a half before posting today. Our best guess was that the power cable wasn’t properly seated. Her card takes an 8-pin connection, but it’s being fed by a 6+2 connector. The extra two pin piece could easily have been dislodged slightly some time ago, causing these problems. The search continues. The next step is to replace the power supply and see if that helps. If the card continues to misbehave, we may try the card switch again for a longer period of time.

Takeaway

While swapping the cards to begin with, I didn’t keep track of the screws as well as I should have, but someone strongly recommended a bowl. While returning our cards to their proper towers, I relented and my dog decided to walk off with it while I wasn’t looking. It only had a couple screws for the outer case when he took it, and I found it in the other room with some new tooth marks and a wet spot. We recovered one screw off the floor, and the other from under the couch. Next time I mess with computer parts, the bowl goes out of his reach.

Final Question


Have you ever faced one of your creatures eating [part of] a project?

I look forward hearing your answers on in the comments below or on my Discord server.

My PopOS Upgrade was Surprisingly Smoothly

Good Morning from my Robotics Lab! This is Shadow_8472 with a side project of the week. Let’s get started!

The Linux Development Cycle

System76 released PopOS 2022.04 LTS for April, 2022. Both PopOS and its upstream distributions Ubuntu and Debian, follow a release cycle where software changes accumulate over time until they are bundled and published together so end-users aren’t bothered with little updates potentially breaking sensitive applications all the time. Ubuntu (and subsequently PopOS) release new versions every six months with very little overlap.

LTS releases are special because support for them lasts far longer. This makes for a more stable platform for developers and end-users, and a larger base of compatible software grows as a result. All this is at the cost of some applications being sorely outdated toward the release’s end of life.

Derpy’s Upgrade

Derpy Chips, one of my desktop workstations, runs PopOS on an LTS release. While Canonical may support several Ubuntu LTS versions at once, System76 does not extend the same policy to PopOS. And so, I went along with the upgrade.

Based on my father’s difficulties installing Discord on Debian 11, I expected it might not work with the new PopOS either. My difficulties were elsewhere. MultiMC was all but gone, I had a few things to re-customize, and the sound stopped working for Nodecore a block game I’ve been playing that runs on the Minetest engine. I originally had to install it from a snap package for version compatibility reasons, but the new repositories had the same version I was already using before the upgrade, and moving away from the Snap fixed my sound issues. I moved my game files around, but it was nothing I wouldn’t trust an adventurous, new Linux user to figure out within a couple hours.

Changes to KDE, my desktop environment, were the most noticeable. The upgrade introduced a number of useful features I’ve been enjoying on Manjaro like split terminals and annotations for screenshots, while also bringing over a wider style of panel menu I don’t particularly care for, but don’t hate enough to revert myself.

Takeaway

Major upgrades carry the potential to break software, but this time has been painless besides reinstalling a couple programs. I was able to upgrade on my own terms

Final Question

Are there any features you’ve been excited to find after an update? I look forward to reading your answers in the comments or on Discord.

Alternative 3D Slicing Arrangements

Good Morning from my Robotics Lab! This is Shadow_8472, and today, it’s been a busy week. Derpy needed work, but I still wanted to 3D print. Let’s get started!

New Computer Screen

A couple weeks ago, Derpy’s monitor failed. I pulled the graphics card and brought in a cathode-ray tube based monitor from the garage. Integrated graphics aren’t good enough for slicing 3D prints though.

Between bugging out from construction noise next door this week and taking evenings off to recover, a good chunk into the week passed before I made a move to switch back. My father and I took the opportunity for a deep dusting. With the graphics card physically removed, it wasn’t much more hassle to remove the outer cover… The radiator decoupled from the GPU chip in the heart of the graphics card, and we had couldn’t find any thermal paste to put it back together properly.

With some electrically non-conductive paste on order, I felt my desk was overdue for a cleaning, Special thanks to my whole family for helping out in some capacity or another. I sorted the stuff into Keep, Trash, and ??????!. Keep stayed with the desk, Trash got sorted for disposal, and the rest tagged for dispersal according to where it belonged. My father and I further took the opportunity to remove my monitor shelf, dust the desktop thoroughly, and polish it.

I also addressed the cable management situation. With no electronics at Derpy’s workstation, I was free to swap out the power strip for something with a bit longer of a cord (I swiped it from the 3D printer, which had plenty of cord). As I re-assembled my desk, I was sure to tuck my cables at least somewhat out of sight.

A Light Mode Program on a Dark Mode Theme

This section on down to the side project started off as the combined 3D printing corner/side project sections before it grew to half the post at one point.

With Derpy down for service this week, I couldn’t 3D print. Instead, I explored the option of using PrusaSlic3r on my Manjaro workstation.

My graphical package manager presented me with three versions: an out of date version lacking features I’m after from official repositories, an AUR (Arch User Repository) beta version from git, and one AUR entry with a good version number but included GTK-2 in the name. I chose the GTK-2 one, and it appeared to work perfectly, save for that it defaulting to light mode.

There was no dark mode override in the options. The documentation said Linux versions of Slic3r hook into the global theme, which I most definitely have set to dark. No matter how much I played KDE’s themes in System Settings, Slic3r refused to play nicely. I tried switching to the AUR version labeled git, but it didn’t even compile (two attempts).

Assistance With Diagnostics

During research, I came across some discouraging bits about themes not always working on bleeding edge systems. I was about to give up when I brought this matter up on Engineer Man’s Discord server.

Server regular localhost took notice and suggested I install lxappearance, a theme manager designed with the LXDE desktop environment in mind. It too popped up running light mode, but was exposing its own theme selector on the Widget tab. Hitting Apply didn’t have any apparent system-wide effects until I restarted the graphical package manager into my chosen dark theme.

I rebuilt the GTK-2 version of Slic3r, and it greeted me with dark mode. During the 70 minute wait though, I researched the why of the situation. I pinned the culprit to GTK. Aside from its association with GNOME, I had the hardest time piecing together its purpose with certainty. I figured it was some incompatibility with KDE, and I was half-right.

It Works, but Why?

Lxappearance was actually my biggest clue. With both it and KDE’s theme manager open side by side, I noticed a button under System Settings > Global Theme > Application Style called Configure GNOME/GTK Application Style. It led to an unassuming dropdown menu titled GTK theme with a nondescript preview button. The dropdown had the same list from lxappearance.

Researching GTK has no shortage of results, but what does GTK do? As far as I can tell, GTK stands for GNOME ToolKit. I know KDE doesn’t use GTK at its core, so I conducted my research looking for whatever counterpart I it did use: Qt.

I ran a combined search on GTK vs Qt and learned about their combined history. Qt is to KDE what GTK is to GNOME. Qt is older, but GTK was fully opened up first and became more widely adopted. GTK and Qt serve the purpose of drawing the parts of user interfaces you use, but don’t think about – from buttons to save windows. When developers use them, they provide a unified appearance an end-user can easily configure.

Side Project (Blog Site Building)

I’ve begun research into improving the presentation of this blog. It’s hard to know where to begin. I’m working on four and a half years on the job and I have still to formalize my niche. There are blogs out there for privacy. There are blogs out there for technology and Linux. There are fewer blogs out there for home robotics and AI. This blog is all of those, to an extent. That’s why I’m consolidating my niche to Home Computing for the Privacy-Minded Roboticist. I don’t expect things to change all of a sudden, because I’m still technically covering the supporting technologies: namely Linux. But I want to aim to be doing more with actual robotics from here on.

Over the next several weeks, I intend to make small changes to the site, starting with the “About the Author” page. I’m also working on a community Discord server so we can finally get the conversation going in a place where I don’t need the patience to get WordPress forums going at this present time.

Takeaway

Even though I was out and about, I still managed to find stuff to write about. That said, modular systems can be a bit of both a blessing and a curse at times. Feature A may be implemented any number of times – each can work equally well and provide redundancy in case one project goes unmaintained/unforked, but clashing systems can lead to confusion when an end-user finds himself diagnosing the wrong backbone without realizing there are multiple in the first place.

Final Question

What do you think of my stated niche: Home Computing for the Privacy-Minded Roboticist?

Work Cited

[1] B. King, “What’s the Difference Between GTK+ and Qt?,” makeuseof.com, Feb 20, 2019. [Online]. Available: https://www.makeuseof.com/tag/difference-gtk-qt/. [Accessed Febrewary 21, 2022].

I’m Learning Vaultwarden and Podman!

Good Morning from my Robotics Lab! This is Shadow_8472, and today –with a heap of luck– I’ll be putting a Bitwarden server on ButtonMash (or getting so close I can’t help but finish next week). Let’s get started.

Vaultwarden

I’ve already talked about the importance of password strength before. Longer is better, but a unique password per login is more important in case one gets compromised. But who has the attention span to remembering fifty passwords across every obscure site, app, or game he’s ever interacted with? A good password manager solves this by organizing your passwords so you can easily access them from a client, but anyone without your key can’t.

I started researching for this project by revisiting the first time I switched to using Bitwarden and I decided to self-host a server from a Raspberry Pi [1] following a straightforward tutorial by censiCLICK [2]. My SD card corrupted one day, and I’ve been out a password server ever since, despite efforts to repair it. I’ve been covering my exploration of Rocky Linux, a RHEL family OS, on my ButtonMash server/workstation, and now I’m ready to start putting it to work.

The tutorial by censiCLICK was well presented. It takes you from Raspberry Pi 3B+ and layers on Raspberry Pi OS, Docker, and finally Bitwarden_RS all while giving basic introductions to skills you’ll need along the way like SSH and security certificates. It is unfortunately out of date. Around six weeks after I started using it, the project leader announced that there was some confusion over trademark[3] so he was renaming it to Vaultwarden…

Odd… Looking through my posts shortly after the name change, I was already having issues with my Bitwarden server. It could still have been card corruption or me trying to play with Git. I guess I’ll never know…

…In any case, ButtonMash is ready for the next step.

Docker or Something Else?

Docker is a technology I still haven’t fully visualized. While researching instructions to install it on Red Hat systems, I stumbled across a mention of Podman. Online hosting solution Liquid Web provided a decently clear explanation [4]: containerization essentially makes single-purpose VM’s without the overhead of full operating systems. Docker has a master process that runs Docker containers. Podman runs containers separately, doesn’t require root, but requires a separate piece of software called Buildah to create containers to run and doesn’t have available professional support.

Further research confirms that RHEL now endorses Podman over Docker, so Podman I will use. Even so, I had to install it separately along with a Cockpit plugin to manage it. From there, I made just a few well-researched clicks to download Vaultwarden. The Docker-Podman plugin had a lot of fields I didn’t recognize, so I installed the Docker HelloWorld container to play with. I had to run it from terminal, but it appeared to work. I expect running a Vaultwarden container will be my side project next week.

Side Project

Last week for my side project, I set up a Wi-Fi gaming router to hopefully reduce downtime on my Wi-Fi catcher Pi. This week, I made the two get along. First, I thought it might be Wi-Fi drivers, so I updated, getting myself into a tedious cycle of incomplete updates failing when the file system flipped to read-only against the background of Wi-Fi dropouts. I had to flip the power switch because the reboot command broke and reconfigure packages to clean things out before continuing.

My real problem was the static IP landing outside the router’s 192.168.X.X range. Attempts to manually change IP kept failing, so I backed up a known good config file on top of the file I actually needed to go back to dynamic IP and spent many hours piecing it back together. In the end, I was finally able to connect.

Takeaway

PPolished computer tutorials are great for catapulting students of tech over barriers of entry, but they’re each anchored to a fixed point in time: lessons of the recent past compiled for the near future. As much of an accomplishment making a definitive guide to subject X might be, it will only be but a single focus point for future users to look back on when compiling their own procedures.

Final Question

Have you ever gone back to old project notes for insights for follow up projects?

Works Cited

[1] Shadow_8472, “BitWarden: My New Password Manager,” Let’s Build Robotics With Shadow8472, March 15, 2021. [Online]. Available: https://letsbuildroboticswithshadow8472.com/index.php/2021/03/15/bitwarden-my-new-password-manager/ [Accessed Nov. 22, 2021].

[2] censiCLICK, “Full Guide to Self-hosting Password Manager Bitwarden on Raspberry Pi,” on YouTube,Nov 15, 2020. [Online video]. Available: https://www.youtube.com/watch?v=eCJA1F72izc [Accessed Nov. 22, 2021].

[3] d. garcia, “1.21.0 release and project rename to vaultwarden #1642” on GitHub, Apr. 19, 2021. [Online forum]. Available: https://github.com/dani-garcia/vaultwarden/discussions/1642 [Accessed Nov. 22, 2021].

[4] Liquid Web, “Podman vs Docker: A Comparison,” Liquid Web, Sept. 10, 2021.[Online]. Available: https://www.liquidweb.com/kb/podman-vs-docker/ [Accessed Nov. 22, 2021].

Squashing All My Computers into One: Part 1

Good Morning from my Robotics Lab! This is Shadow_8472, and today I am centralizing storage across my several computers. Let’s get started!

Computer Drift

One of my favorite things about Linux is exploring the possibility space of designs for what a computer operating system can look like. But maintaining multiple workstations can and will leave you wondering where that one picture is saved or what ever happened to that document you know you saved under blog drafts. I have no fewer than three computers –four or more if you count my laptop and ButtonMash as separate given their common install and/or my dual booted machines– it’s high time I consolidate my computers’ respective identities to reflect me as a single user given my access to GoldenOakLibry, the family network storage.

Project Overview

One would think the process would be as simple as dumping everything in a central location and spreading everything around be it garbage or not. Alas, subtle differences in installed programs or versions of programs make this approach unsuitable.

My best bet will be to think backwards. Not everything will be shuffled around; directories supporting install-specific programs should stay on their specific computer. Backups for such files are fine, but I can accidentally damage other instances if I’m not careful. I’ll need to tailor a number of Rsync commands and schedule them to run automatically with Cron. As this topic is basically day-of filler while I work on a larger project, the full job is a little out of my scope for today.

My goal for today is to make a backup I can operate manually and later automate. If things go well, I can see what I can do about Rsync, but Cron will need to wait for another day.

GUI File Transfer

The terminal is an important skill to have when managing a Linux ecosystem of multiple computers. However, there are some things, such as managing picture files, that inherently work better over a graphical file manager. While preparing for writing today, I noticed places like my respective Downloads directories are quite messy after a few years of Linux.

I wasn’t the biggest fan of jumping workstations all day, so I searched for a way to have the Dolphin file manager operate over SSH. The first result to catch my attention was called FISH (Files Transferred over SHell protocol). Similarly, SFTP (SSH File Transfer Protocol) appears to fill a similar computing niche. Each would be an interesting research topic, but for my purposes today, they both work equally well as long as SSH is configured to use authentication keys.

Derpy’s Backup

The easiest place to start would be my DerpyChips workstation as that’s the one I’m working from starting off. Documents was fairly easy to clean out. I had some Blog drafts and some other stuff I sorted into proper places on the drive.

The dreaded Downloads directory was relatively tame on Derpy. Nevertheless, I still spotted elements from at least four distinct projects ranging from incomplete to long done or abandoned. I even found an instance of GraalVM I may have been running straight from Downloads. My goal is an empty directory. If it will update before I need it again or I won’t need it ever again, it’s gone. If I’m unsure, I’ll find another home for it. I similarly emptied out any directory intended for file storage. Pictures was simple this time, but I expect I’ll need a more elaborate structure once I start trying to organize additional computers’ worth of memories.

ButtonMash’s Backups (Debian and MineOS)

Things were a little more interesting when I started moving things over from ButtonMash. At first, I set a Dolphin instance up with ButtonMash’s home on the left and its view GoldenOak on the right, but when I got a warning about not being able to undo a delete, I thought twice. I did have a deletion accident last phase and used an undo action, so it’s Derpy’s view of it on the right.

I was right about needing to take pictures slowly on this one. Some pictures fit better in with my blog while mems I felt worth saving went in their own directory within the more general Pictures one. But I don’t need copies of everything everywhere if I can just access the drive. Possibly just my favorite desktop and my avatar, if that. I made a directory for those two and any others I may want to spread around.

File manager over SFTP understandably has limitations. Not all files can be directly accessed –particularly audio files– and some graphical files don’t render shortcuts. When I try to preview an archive, it must first be copied over as a temp file.

I had another accident while moving some old Python projects over. For whatever reason –be it permissions or simple corruption– some files didn’t copy over cleanly. I fished around with it a little more and gave up and deleted both source and destination, as I expect another copy was made when I cloned my laptop to its internal drive.

Thanks to this blunder, though, I was more careful when it came to the family’s Minecraft servers from when we were running MineOS. I encountered an error while copying, so I reverted to rsync directly from ButtonMash. Even then, I had to elevate permissions with sudo to finish the job.

Takeaway

I’d like to say I’m somewhere around half way with my goal for today, but if I am to take this task seriously, I’ll need to go back farther and reintegrate any old backups I may have laying around, and by that count, I at least eight computers to consider – more if I count Raspberry Pi’s and any recursive backups I may find.

In some ways, this project is not unlike my experience with synchronizing Steam games manually, but on a larger scale. I’m having to re-think my structure for what I want backed up where as well as how I’m planning to access it. This is not a simple grab and dump.

Final Question

Have you ever made an comprehensive and accessible backup of all your computers, present and surviving?

Bad Ram, or Is It?

Good Morning from my Robotics Lab! This is Shadow_8472, and today I’m solving Derpy’s derp once and for all (I hope)! Let’s get started!

Background

There’s seemingly always been something off about Derpy, even before I dubbed it DerpyChips. First it was a cheap hard drive shorting out. Every so often, the system would throw a power kernel error. I fixed it inadvertently while switching to a solid state drive when I installed Linux.

More recently, we got some new RAM to replace the sticks I borrowed for another computer, but then the system developed occasional twitching fits. It took a while, but I identified one of its four 4gb RAM modules as having a number of bad sectors. The others passed the testing tool. The twitching improved, but not entirely.

Long-Haul Diagnostics

I started using Derpy a little more heavily a bit under a month ago, and the twitching went from Discord twitching by randomly restarting to Kerbal Space Program crashing at least once every couple hours, though only during loading screens and conveniently always shortly after a save or autosave.

Sometimes my game would catch and I could properly close out before it quit with a note about core dumped. If I was unlucky, the even the mouse would freeze for minutes on end. Rebooting didn’t help.

With problem frequency rising into the barely diagnosable range, I decided to run Derpy’s RAM through a less formal test. I temporarily moved the suspect sticks to my Manjaro workstation, isolating them from an unknown number of possible causes. Both computers were pretty dusty, so I took them outside and hit them with the canned air. To keep things fair, I only installed three out of four known good RAM sticks into Derpy and stored the fourth in a drawer.

A Test in Question

Both systems were usably stable right away. Derpy’s fan especially wasn’t panting nearly so hard without a giant dust mat blocking the heat sink. But what if that was the problem all along? Dust in the computer is the perfect unstory. It was early enough in the week I would have sought out another topic.

I spent an afternoon of perfect stability on Derpy, then focused my efforts on passively testing the RAM with my main computer. 99% stability. I had a few audio glitches, but for all I knew, they were always there and I was just noticing them because I was expecting trouble.

Over the course of the week, more problems started showing up. Not many, not often, but KSP did eventually lag hard a couple times, and Discord restarted, switching screens while it was at it. I even had the whole system go unresponsive, even when trying to switch to the “real” terminals outside the graphical environment. One time in a week of testing, I was forced to reboot.

Takeaway

I wasn’t as intense with the RAM as I would have liked, but all things considered, I’m around 95-98% sure Derpy’s replacement RAM is no good. I’ll be interested in seeing about switching it out under warranty this coming week.

To get an idea of how irreproducible this error is on command, after a couple big crashes, I finally had the idea to keep the terminal I’ve been running KSP from up on my second monitor. The plain loading screen is a buzz of activity as the terminal dutifully posts entries in the log file. I was hoping to see its activity during a bad crash, but it wasn’t to be.

Final Question

I’ve narrowed down the problem to the part and prescribed a solution, but I still don’t understand the why. My best guess is that it’s degraded somehow since the test or else it’s weaker under extra heat. Why does my RAM glitch out the way it does?

Package Loop

Good Morning from my Robotics Lab! This is Shadow_8472, and today, I am aiming to rig Kerbal Space Program (KSP) to run across two Linux computers. Let’s get Started!

Intended Target

KSP is one of those games I find myself coming back to every so often. In case you’ve survived the past decade without hearing about KSP, it’s a game where you design rockets using an assortment of parts and fly your kerbals on them to explore their solar system. There are no goals except the ones you set for yourself. With the final major update now released, I’m going to give it another go at an interplanetary game.

But it would sure be nice if I weren’t tied to a single computer while playing. Steam offers a cloud save option, but I’d rather not be needlessly broadcasting my play time for a single-player or Local Area Network (LAN) experience. I picked up a little shell scripting for auto clicking in another game, so I figured I’d stretch the skill a little farther. For this project, I will be using Derpy Chips and my daily driver without a fancy name.

KSP updated nicely on my tower, but when I went to install the game on Derpy, Steam was nowhere to be found aside from a broken icon and a couple other Steam games I might try pulling this trick with in the future. My system was bugging me to update, so I went sudo aptitude update and sudo aptitude upgrade. It didn’t update correctly.

Running in Circles

I spent around three days trying different combinations I knew. Both Aptitude and Apt-get were stumped. The errors recommended I try running some more aggressive commands to fix installs, but I kept ending back at the same broken state.

Taking a closer look at the errors themselves, it appeared a whole host of locale packages were to be replaced with one inclusive one. Each and every one of them, as well as others appeared to reference some variant of libc6.

Not good.

Libc6 is a C language library. C is important as one of the first programming languages with a little abstraction for easier human readability while still being close enough to the hardware for amazing optimizations. You take out LibC, things start breaking fast.

I tried putting the upgrade off some more, but my package manager wasn’t having any of it. It insisted I fix the problem before installing or removing anything.

All this time, I was reaching out to the Engineer Man Discord. I got a few links on stuff to do, like a number of commands to do in sequence in case a particular log was getting in the way, but it always came back to my Libc6 version being wrong.

Progress and Repair

I of course was looking stuff up on my own, and I managed to find Libc6 was “half-installed.” My best guess is that a month or two ago, I had a partial upgrade. I didn’t think much of it at the time because I wasn’t relegated to an Xorg forsaken command line like all my other major system meltdowns normally worthy of a repair shop visit.

I made some progress when I used dpkg to uninstall a package I was otherwise interested in removing from the system anyway. According to localhost, the Discord user who solved my snafu (special thanks), I was caught in a dependency loop. Basically, when apt-get is either installing or trying to fix an install of package A , it wants to see package B or something like it before adding it to the list of satisfied packages, but if package B wants to see A or similar before it’s happy, there’s trouble. My trouble was that in order to fix the AB circle with apt-get or aptitude, I needed to first fix the AB cycle preventing me from solving it. Dpkg is too dumb to care about package dependencies, so it will happily ignore any logic bombs you’re setting (or defusing) for yourself.

Takeaway

I don’t understand the fix, sadly. I am still thankful Derpy is running again. I went ahead and installed KSP there, but the game file structure is so complicated, I’m just going to be copying the whole thing over to GoldenOakLibry, the network storage, using rsync. After going back and forth a few times to make sure everything is working as expected, I will write a set of scripts for further automation.

I will follow up if anything interesting happens on the implementation proper.

Final Question

Have you ever fudged a personal cloud?

I Didn’t Git It

Good Morning from my Robotics Lab! This is Shadow_8472, and today, I tried adding a Git server to my Bitwarden server, and blew most of my time on a detour. Let’s get started!

Git

Git is an open source version control platform, not to be confused with GitHub, a website and hosting service implementing the software. Git is sort of like an Undo/Redo history, but you can switch off old changes and put the new ones on. It will be very useful –if not project saving– while building my social robot. The only problem is that I need to learn how to use it from a developer’s point of view.

I want to install a Git server. My target is my Raspberry Pi 3B+ hostname: BlinkyPie operating system: Raspberry OS lite. It’s already running my Bitwarden server to host passwords, and has plenty of space on its SD card for starting out and ample room in its CPU cycles.

Failed installation

As always, the first step in installing any piece of software in Debian family Linux distributions (distros) is to update repository information. sudo apt-get update The log put up a warning about the locale. I didn’t think much of it until Git didn’t install.

Logs are not always the easiest things to understand. They’re also not the easiest for search engines to decode when nobody has made attended to the exact wording. Even now, I have no idea what’s going wrong. What I do know is that when I tried messing with the locale configuration settings under raspi-config, the whole system would stop responding to any command I sent remotely logged in over SSH other than exit (ending the session). Further attempts to connect would fail until I rebooted from the physical switch and I would repeat the cycle.

System Failure and Backup

Things got really messed up to the point where I started worrying if I’d ever get my passwords back. I mentally went into recovery mode, trying to salvage what I could. I started by using dd to Duplicate the Disk onto the NAS so I could restore it if I messed it up worse. I also observed that my Bitwarden plugin has a limited-time retention of my password vault in case it can’t reach its host server. My vault was soon exported, where it would be safe in case of a total system wipe and reset.

With the only irreplaceable nugget safely tucked away, I unsuccessfully turned my attention to extracting the Docker image hosting Bitwarden, and settling for the contents of the home directory. This whole time, I was also researching what operating system I was going to replace Raspberry OS with. I seriously looked at Arch, Manjaro, and Apache, though that’s not something I can just do in a single day and expect satisfactory results: I gave repairing what I had one more chance.

Net Work: Nothing

After sifting through the tons of free tools for checking SD card integrity, I landed on linux.goeszen.com/how-to-test-an-sd-card-on-ubuntu. It tells of a tool that “comes with most debian based *nix systems” called dosfsck (also present on Manjaro). I told it to repair the SD card and test for bad clusters. It found a “dirty bit.” I won’t pretend to understand, but it appears to involve the computer’s CPU tracking modified data in RAM.

There was another error it found and repaired I wasn’t able to understand myself, but when I booted it back up, everything was back to the way it was before. The next step is to make another image and do some research before hacking another OS in there.

Takeaway

In retrospect, I probably should have checked if GoldenOakLibry, my Network Attached Storage (NAS) unit, can do Git easily. I’ll probably need more than the 64 GB of storage in the server’s card. Besides, I’m asking for trouble if I don’t at least schedule regular backups for something as important as passwords, even if I weren’t thinking in terms of potentially faulty SD card.

Final Question

On a scale of annoyed to paralyzed, if you had to roll a many sided die and yank that hard drive as if it were now destroyed, how much pain would you be in?

Family Photo Chest Part 14.1: A Workstation From the Parts I Have at Home

Good Morning from my Robotics Lab! This is Shadow_8472, and today, I am setting up my second scanner workstation. Let’s get started!

Prologue

As seems to be my new tradition when getting/assembling a new workstation, I am recording this week’s observations from said machine. It’s been interesting. Especially since I don’t have a budget for new hardware.

The Tower

Once upon a time, I set up a Minecraft server for my family to play on. I named it ButtonMash. I did a lot of maintenance to keep it running, but eventually, we stopped playing on our own family-owned servers. Ever since, ButtonMash has been running in the background, catching dust.

With a renewed effort towards finally starting production on scanning, ButtonMash is the perfect fit for a workstation. It’s presently running on 16 GB of RAM, and while I thought it might benefit from an old graphics card I found lying around, a quick test proved it to be a downgrade from integrated.

The Hard Drive

A long time ago, I talked my laptop into scanning without sudo. So long ago –in fact– it was before I cloned Debian to run internally, so it would still be on the external SSD on USB 3.0.

ButtonMash’s motherboard lacks a USB 3 port, so we ordered up a card special. Unfortunately, it straight up refuses to boot from either of the card’s USB slots. No configuration works. lspci will detect the card once booted, but not even my GRUB disk can find my Debian external drive. I could get lost trying to troubleshoot, but for now, the bootable USB 2 slots must suffice.

The Keyboard and Mouse

There must be about seven wireless keyboards hovering about my house, each of which is orphaned from its dongle and paired mouse. Each of them always seems to have some sort of buffering problem.

On the other hand, I managed to spot a keyboard from when I was little hanging out in our treasure trove of old tech stored in the garage. It’s in relatively good shape — most likely because its from the days before USB became king. Fortunately, ButtonMash is old enough to have not one, but two PS/2 ports: one for keyboard, one for mouse. On the other hand, the integrated tickle pad uses a different standard I don’t have the proper port for.

My greatest gripe is that it’s a little hard to write on because it has the pipe and backslash key to the right of the Right Shift key. My computing habits have evolved since using this keyboard. When selecting text, I move my right hand so my thumb presses Ctrl and Shift, and my other fingers operate the arrow keys. On this model, I have to angle my hand at awkward angles to not hit a key I never use outside the command line.

The mouse was a little harder to find, but I managed to pull up a trackball with three less-than-perfectly-reliable buttons. It too is on a PS/2 connector, and so wasn’t designed for “plug and play.” However, I have tested it, and ButtonMash’s motherboard was able to pick them up after unplugging them without rebooting when I tested it for myself.

The trackball is different to use. I’m a lefty, and while I can normally manipulate the thumb buttons with my ring finger, I don’t have the dexterity to spin a sphere in the same place with my pinkie. I’d also have to contend with more extreme button placement, in addition to said buttons being unreliable. I’m finding I get a more consistent click if I press near the base of the button, though click and drag requires a particularly good streak of luck. Either way, it’s pretty fun to spin the ball super fast and watch the pointer not know what to make of it until things slow down.

The Display

ButtonMash has been running headless, only sharing a monitor with my father’s tower when needed. However, I found another treasure from the garage from when I was little: an old CRT monitor I remember being amazed with because of how flat the surface was. It’s just an extra panel of glass in front of the tube.

The long standing standard of VGA means that ButtonMash has no problem outputting to this old monitor. Honestly, it has no business lasting as long as it did.

I started the monitor for the first time in what must have been around 10 to 15 years, give or take, and cringed, thinking it was burning itself out as it crackled to life. It’s probably just thermal expansion. The picture still looks good, though there is noticeable flickering in large patches of white. I calibrated the screen so I’m using the full usable area, but I noticed it drifting a little after a while. My particular monitor has a degauss option hidden in its menus, and in addition to making everything go funny for a few seconds, it removes latent magnetic interference that builds up over time. It also produces a satisfying TWANG! After a few days of regular use, the picture appears to have mostly stabilized.

One thing I was sure to enable is a screensaver. This art form isn’t as important with the Liquid Crystal Displays permeating the market these days, but on old Cathode Ray Tubes, they would prevent a static image from burning itself into the surface of the vacuum tube if left alone too long. The pickings were a little slim on Debian, so I installed the xscreensaver package and picked one called Galaxy.

Using this older aspect ratio brings to light a few design decisions I’ve called into question on a few older pieces of software, namely XSANE, GIMP, and the default panel settings on GNOME2/MATE. On a wide screen, XSANE feels needlessly skinny and lost. GIMP looks silly with its tools detached from the main program body to the point where it doesn’t look like a cohesive program. And panels in MATE flat out waste space when hogging both the top and bottom.

But with a narrower aspect ratio, I find I’m only paying attention to the middle strip of the screen. XSANE windows can be rearranged with the important one taking up roughly half the screen and the others put where needed on the other. While I’ve yet to try GIMP in fragmented mode, I expect it too makes more sense this way. I even found myself restoring MATE’s upper panel to alleviate the icon traffic jam my one panel at the bottom was suffering from.

The Internet Connection

The Internet Connection was about the one part I had already figured out months ago. I grabbed my Pi 400 router from where it has been serving a more permanent workstation. I already copied the card and assigned it one a different IP address.

I tried going straight from Pi to tower without a switch in-between. I wasn’t expecting it to work because of the way I understand network cables to work, but it would seem one system or the other has figured the arrangement out.

Takeaway

The nineties… I can hear them calling… but no, they can’t have their workstation back because I have enough of an anchor in the twenties that spontaneous, meme-powered time travel will not be happening in the foreseeable future. I’m just excited to finally see the last bits of hardware fitting into place after over a year of planning.

Final Question

Have you ever amused yourself by spinning a trackball faster than the computer knew what to do with it?

Stabilizing Derpy Chips at Last

Good Morning from my Robotics Lab! This is Shadow_8472, and today, I’m addressing an annoying trio of issues I’ve had with Derpy Chips since I installed PopOS on it. Let’s get started!

The Problems

I have a number for gripes to myself about Derpy. I frequently have to stare at an ugly, gray login screen for to a minute and a half before I can select a user account. Tabs sometimes crash in FireFox, but only while I’m using it. Discord sometimes blinks, and I lose any posts in progress – possibly representing minutes of work.

Additionally, my mother uses a separate account to play Among Us on Derpy, and I have my account set up with a left-handed mouse she can’t use easily. Unfortunately, Derpy tends to crash whenever I try switching users, so I’ve been using a full power cycle. And that means we need another long, featureless login screen before the actual login. Some day, I really want to figure out how to change a login screen. Aside from how long this one takes, I’d much rather use the KDE one over GNOME 3.

The Plan

Of the three issues I’m setting out to address, long login is the most reproducible. Fickle FireFox and Ditzy Discord happen often enough to make Derpy frustrating to use as a daily driver, but sporadically enough to resist debugging on-demand. So I am planning on spending up to the full week on Derpy ready to catch the errors when they happen.

Going off what I have to start with, I’m assuming my FireFox and Discord issues are related. Both use the Internet for their every function, and the glitching tends to happen at times when a packet is logically being received: for FireFox, when a page is either loading or reloading, and Discord when someone is typing or has sent a post. If I had to hazard a guess, I would have to say Lengthy Login is directly caused by my NFS being mounted in /etc/fstab, and I’m not sure if there’s anything to be done about it except working the surrounding issues.

For this week, I an reaching out to the the Engineer Man Discord and a Mattermost community I found for PopOS. I don’t know much about the latter, but I heard the PopOS dev team frequents that forum.

The Research

I started by posting about my issues. Help was super-slow, and I often got buried. I don’t remember any self research making any sense. Anyone helping me in the PopOS support chat seemed obsessed with getting me to address Blank Login first, even though it was the least annoying of my three chosen issues, if only other stuff didn’t bug out on me.

Someone gave me a journalctl command to check my logs, and I did so shortly after a target glitch. It came back with a segfault error of some kind. I added this to my help thread and humored them about disabling my NFS fstab lines.

RAM or Motherboard?

When researching further for myself, I came across a number of topics I didn’t understand. I didn’t make any progress until someone told me to try memtest86+. What a headache! I installed the package, but had to dip into GRUB settings so I could boot into the tool. Even then, it kept crashing whenever I tried to run it with more than one stick of RAM at a time, as in the whole thing froze within 8 seconds save for a blinking + sign as part of the title card.

I was hoping at this point it was just a matter of reseating RAM. Best case: something was in there and just needed to be cleaned off. Worst case: a slot on the motherboard might have gone bad, meaning repair might be one of tedious, expensive, or impossible.

I tried finding the manual of Derpy’s motherboard, but the closest was the one for my personal motherboard, a similar model. Both come with 4 slots of RAM: two blue, two black. I used the first blue slot to make sure each stick of RAM passed one minute of testing, followed by a full pass of testing, which typically took between 20 and 30 minutes. I wasn’t careful with keeping my RAM modules straight, in part because I helped clean my church while leaving a test running.

I identified the fourth stick from a previously tested one I’d mixed it up with by how it lit up the error counter, starting just past one minute in. I tried reseating it several times, with similar results: the same few bits would sometimes fail when either reading of writing. If I had more time, I would have a program note the failing addresses and see if they were the same each pass as they kept adding up.

Further testing on the motherboard involved putting a good stick of RAM into each slot. Three worked, but one of the black slots refused to boot, as did filling the other three slots. I landed with leaving one blue slot empty for a total of 12 out of 16 gigs of RAM.

NFS Automount with Systemd

I still want relatively easy access to the NAS from a cold boot. “Hard mount in fstab has quite a few downsides…” cocopop of the PopOS help thread advised me. Using the right options helps, but ‘autofs’ was preferred historically and systemd now has a feature called automounts. I thought I might as well give the latter a try. cocopop also linked a blog post On-Demand NFS and Samba Connections in Linux with Systemd Automount.

I won’t go into the details here, but I highly recommend the above linked blog. It didn’t make sense at first, but after leaving it for a day, my earlier experiences with fstab translated to this new method within the span of about an hour total. I missed an instruction where I was supposed to enable automounting once configured, but it felt almost trivial.

Results

I haven’t had any problems with Discord or FireFox since setting the defective RAM aside in the anti-static bag it came in. As a bonus, switching users works correctly now as well.

NFS mounting is now much more streamlined with systemd. While I cannot say which method would have been more challenging to learn first, the tutorial I was following made this new method feel way more intuitive, even if file locations were less obvious. I didn’t even need any funny business with escape characters or special codes denoting a space in a file share name.

Takeaway

It really should go without mention that people will only help each other with what they know. I find myself answering rookie questions all the time when I’m after help with a more difficult one. Working side by side this week on a future topic, I had such a hard question, people kept coming in with easier questions, and I ended up asking mine enough times someone commented about the cyclic experience. The same thing kept happening with the easy part of my question about login.

Final Question

Do you ever find yourself asking a multi-part question, only to have everyone helping you with just the easiest parts you’ve almost figured out?