Space Nerds In a Tiny Space

Good Morning from my Robotics Lab! This is Shadow_8472 and today I am working on one of my smaller dream projects: a bridge simulator. Let’s get started!

Space Nerds In Space (SNIS) is a LAN game for Linux available as source code hosted on GitHub [1,2]. In it, you and several friends take on the roles of a starship bridge crew manning your stations and going on sci-fi adventures in deep space.

LAN: Local Area Network

I have access to an old church office computer with Windows XP installed. I’m gonna try running it on there. The main site [1] recommends against trying anything less powerful than a Raspberry Pi 4B, but I want an idea of how low the game can go. I’ve set my expectation to “This computer has absolutely no business running this game.”

In old or low-end machines, the weight of an operating system often becomes a significant contribution to resource consumption. At the same time, both low-overhead distros I’ve worked with before (Tiny/Micro Core and Puppy) have specialized package managers, and I’m not up to a self-guided crash course on repositories this week.

My first thought was that I’d prefer access to AUR for an “one-click install,” like how I cheesed it into working on Manjaro. I located an 8GB thumb drive, but the old church computer didn’t appear to be a fan of booting Manjaro. Instead, I researched low-overhead distros which could cleanly install packages from apt. I came across DebianDog Linux which sounded perfect until I learned development had stopped and shelved the idea as a backup plan. Puppy –as I learned– already has the means to use .deb files, so I stashed that as another backup plan in my recent experiences with Puppy, it has to be told to connect each boot.

AUR: Arch User Repository

Bodhi Linux

Further research found me Bodhi Linux, an Ubuntu derivative with downloads as light as 747MB and RAM requirements well under a gigabyte. Its native apt support means access to a large selection of standard packages, which will come in handy when compiling software.

I found my way onto the Bodhi Linux Discord server, where I reported the Arch logo of all things showing up in the installer. After I provided a screenshot from a staged second installation, we figured it was a bug with the installer Bodhi borrows from Ubuntu.

My installation was a success. I found the Moksha desktop maintained in-house [4] to be surprisingly polished, but a bit too flashy for my needs. Were I moving into it as a daily driver, I’d be disabling the animated taskbar icons. The terminal visual bell would also have to go, as I about hear sirens whenever I trip it – and I trip it frequently with my liberal use of tab to complete. I did –however– get around to removing Chromium.

Installing Space Nerds

This was neither my first attempt compiling SNIS nor my first time getting a product out the end, but it was my first time successfully doing so manually. I installed git and cloned the SNIS repository. I passed up my previous attempt by using util/install_dependencies as opposed to finding/installing dependencies manually. My first attempt at opening the compiled program I was… met with a solid green window and the computer crashing hard. I never figured out why, but on attempts where that didn’t happen, I had to wait through a 5 minute, 30-40 second loading screen where I realized later how lucky my second attempt was to have not ended in a massive flicker between black and the desktop – and this second attempt ended in a display of erroneously rendered polygons after a few minutes of play.

I inquired as to SNIS’ minimum system requirements on GitHub [2] and smcameron, the game’s creator, kindly helped me get it “working.” You can read the full discussion here: https://github.com/smcameron/space-nerds-in-space/discussions/333, but to summarize: I provided a number of logs documenting various error states and we figured my graphics card was running out of memory, as I didn’t get a light show when using lower resolution planetary textures.

Takeaway

This computer has no business running SNIS, yet it runs – if only barely. My fun this week was in coaxing this game to running on such an outdated system.

Final Question

What is your go-to low-overhead Linux distribution?

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

Works Cited

[1] S. Cameron, “SPACE NERDS IN SPACE,”github.io, [Online]. Available:https://smcameron.github.io/space-nerds-in-space/ [Accessed May 24, 2023].

[2] S. Cameron, “space-nerds-in-space,”github.com, May 21, 2023. [Online]. Available: https://github.com/smcameron/space-nerds-in-space [Accessed May 24, 2023].

[3] Bodhi Linux, “WELCOME,” bodhilinux.com, [Online]. Available: https://www.bodhilinux.com [Accessed May 24, 2023].

[4] J. Hoogland, “Introducing Moksha Desktop,” github.io, March 3, 2014. [Online]. Available: https://mokshadesktop.github.io/Hello-World/ [Accessed May 24, 2023].

SimCity 3000 on Linux Using Lutris

Good Morning from my Robotics Lab! This is shadow_8472 and today I am exploring the feasibility of running SimCity on Linux. Let’s get started!

Short Answer

SimCity 3000 Unlimited refused to run for me. I suspect DRM. I tried the earlier SimCity3000 (1999) on PopOS, EndeavourOS, and Linux Mint through Lutris with progressively worse results. Of note: I found it important to enable dgvoodoo2.

DRM: Digital Rights Management

Have fun. Good luck. You’ll need it.

My Attempts at SimCity3000 Unlimited

While digging through Garage Space, I happened across a copy of SimCity3000 Unlimited. This city building game of yesteryear puts you in the role of mayor and city planner of a city. You must balance zoning, manage public streets, power, and water service, clean up after disasters, and more as you fight to keep your budget in the black. The case says it’s for Windows 95/98, but I remember it running at least as recently as XP.

Gaming on Linux has a fascinating history. In short: the userbase will sometimes “cheat” Windows games into running through the WINE compatibility layer, though it doesn’t always work. Lutris is a multi-game launcher that makes WINE a lot more approachable. I figured there would be no harm in popping the CD in a drive and trying it out. Like all my previous attempts to install a game manually in WINE, I had little-to-no luck.

My efforts were soon split multiple directions. DosBox is a DOS virtual machine. I found a fork called DosBox-X, which claims to run Windows programs up through the 3.x era as they’re basically just fancied up DOS applications. Windows 95 made some major additions, but was still built on DOS until XP dropped it as a base. Consequently, if our Windows 95/98 CD’s/product keys were to show up, they could be installed into DosBox-X and we could again play our period games.

Garage Space was not so kind. With help, I located a bucket each of 3.25” floppies and CD’s. A further CD binder turned up full of drivers, but no Windows 9X install disks. In one of these caches, the original SimCity3000 turned up.

My Attempts at SimCity3000

This earlier version of Maxis’ once flagship game installed nicely on Derpy Chips running PopOS, but failed miserably at anything past the main menu until I turned on dgvoodoo2 under Lutris’s “Runner options” under the game’s configuration popup. I found it very playable, but sound effects were only in my left speaker channel and I got a nasty buzzing sound in the right speaker/headphone if I turned off the music the way I preferred to play.

Moving on, I attempted a more advanced installation on my Upstairs Workstation, where I created and mounted a disk image on my hard drive. This configuration had a better response time, while still requiring the actual CD to be mounted. Unfortunately, there was a serious graphical issue that affected the main menu, all textual popup boxes except the No-CD notification, and the in-game sidebar sub-menus. It’s like animation layers render black instead of clear. The main menu and text boxes mostly look strange, but are perfectly usable. On the other hand, the in-game sub-menus render as black bars and only show their buttons when hovered over. This arrangement might work for someone who is desperate.

Additionally, I tested SimCity on my father’s computer running Linux Mint. The game would not even install to the prefix; a usable, but slightly graphically glitched launcher was all I got. No matter what I tried on any system, I could not improve its respective base issue. In a last-ditch effort to get it working for my father’s computer, I attempted to copy over my WINE prefix from Derpy, but when I found its debug and pasted a prominent error into a search, I learned how WINE’s Intel integrated graphics support is incomplete and unlikely to ever see completion.

Takeaway

This is a progress report. At present, I believe my issues have to do with AMD vs. NVIDIA vs. integrated graphics. I don’t know if I will follow up or not. The main conversation online around SimCity3000 and WINE is focused around the edition from GoodOldGames. The Unlimited edition on CD has practically zero heartbeat – probably because its DRM is incompatible with WINE, like many games not on lists maintained by Lutris or PlayOnLinux (another WINE tool I tried out, but didn’t remember while weaving my narrative). I also learned of a Linux port of SimCity3000 [and Unlimited] by Loki Games through a script for getting it to run on “modern” versions of Linux as of a few years ago, but it went bankrupt reportedly due to piracy.

Running Windows games on Linux is a puzzle. Your particular one may come pre-solved or there might be pieces entirely missing. I am very proud of my first-ever successful “manual” install, even if I used a tool and it still isn’t perfect.

Final Question

Do you know of a good place to learn WINE? Have you had any success playing SimCity on a Linux system?

I look forward to hearing from you in the comments below or on my Socials.

Room for New Projects

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

I live in a typical middle class, American home in suburbia: master suite, a few bedrooms, shared bathrooms, assorted living spaces, front lawn, back yard, driveway, and a garage. The same or similar goes for each of my hundreds to thousands of neighbors living within walking distance. Some houses are larger or smaller. My family’s cars occupy the driveway, and our garage is brimming with storage buckets to sort through.

The State of Our Garage

We already have a workshop in the garage, but it would be a nice place to house some projects. My robotics lab may have and the still-unfinished photo trunk project have admittedly taken over the art room, and I have been invited to help clean out a space where my stuff can be better consolidated for managing things like excess heat, sound, and/or fumes.

This project is one I’ve been particularly unenthusiastic about whenever it’s come up over the years growing up. We have roughly 100 clear, plastic storage buckets per a brief and incomplete inspection, especially if you start counting the odd cardboard box. While many of them are used for things like holding Christmas decorations, games/puzzles, or sentimental treasures, around a third to half of them are the Big, Bad, Clutter Bucket.

I hate the Clutter Bucket just as much as my parents. I’ve had favorite toys slammed into them wholesale when a parent got frustrated with a messy room; it was so loud and painful, my Autism registered it as yelling despite getting reminded that not a word was being said (parents didn’t have Container Analogy or even a good predecessor). Their cleanup has been [unsuccessfully] used as a condition of engaging in preferred activities (read: chores before play). Threats of outright dumping their miscellaneous contents in the garbage still cause triggering echos when I remember them to this day. And the worst part is that whenever I was sent to find stuff to put away, I honestly never knew where most of it belonged!

Cleanup In Progress

The above back and forth played out for years until Clutter Buckets became an uncomfortable fact of life lurking in the background. It wasn’t until I had a good, parental talk a little over a week ago that my worst anxieties were addressed: a lot of the Clutter Buckets are mostly trash: treasured memories were not being planned for disposal.

This assurance paired with a clear, long-term goal in mind has done wonders for my motivation. It’s still mostly not my mess to clean up, so I cannot be the one sorting things for disposal. What I can do is move buckets and boxes around for my parents to identify and carry out their subsequent instructions.

With teamwork, the empty buckets started to pile up. When we ran out of Clutter Buckets along the walkway through the garage, I spent some time sorting out low-priority buckets, and stacking them in a less accessible area while taking care of some easy boxes and cuing buckets for parental sorting.

A great hunt was made to locate the CD bucket in the hopes of finding a piece of software crucial to a surprise project. I paced the garage for a whole day, checking most buckets at least five times, inspecting the difficult to access ones at least twice, and providing our garage cat to give scritchies over twenty times. The VIP bucket was legit the last one available to lay my eyes on – it was by the pathway all along, hiding at the bottom of our stock of toilet paper packages. The software I wanted wasn’t in it.

I spent a significant portion of Sunday pacing the garage again. Odd pieces of laundry, corroded batteries, and stray CD’s/CD cases were all taken care of, but I felt less productive overall. The highlight of the day was working out provisions to home CD and floppy disk buckets where they can more easily be found: in the network closet. The paper soup in the first box they’re replacing got split between the shredder and recycle, with my father setting a few aside to sort later.

Takeaway

This is an ongoing project. During my survey late Sunday night, I included ten empty buckets – most of which were full two weeks ago. And in case there is any doubt, I love my parents and trust that they were doing the best job of raising me they could. Mistakes were made and trauma was had, but lessons were learned and forgiveness was had.

Final Question

I’ve had a Podman project stuck for months just trying to mount a volume hosted on a drive mounted over NFS. Have you ever had success in this apparently niche department?

I look forward to solving this issue with someone either in the comments below or on one of my Socials.

A 3DPrinter Only as Good as Its Parts

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

I’ve had a hit/miss relationship with my 3D printer. Some of the time, it works great, but when it’s not, I’m having to scavenge a solution to whatever is ailing it.

Fan


One fateful project, I chipped a couple fan blades off in my attempt to service it while in operation; it seemed like a good idea at the time. Don’t repeat this mistake at home. In the case you do, there exist sets of replacement blades. I was able to print one up on my damaged printer, and were it not for clipping right through one of the posts holding the motor in place, it would have worked beautifully. Instead, it would grind loudly whenever I started the printer up. I would always have to tap it a few times until it managed to find its balance.

The only real fix for this problem was a replacement fan. We had to be careful when ordering one when considering its size, voltage, and pin count. We ended up with a close enough match I was able to install it with few questions – there are tear-down tutorials for in-depth instructions. The cord was way longer than it needed to be, so for my installation, wrapped it around the box behind the printhead a couple times before plugging it in.

Bed

And then there is the printer bed. Metal warps with heat cycles – especially when it’s made on the cheap. Aluminum print beds are no exception. Mine has reached the point of unusability having formed itself into somewhat of a slight bowl or saddle. Note that this is after giving it a gnarly scratch right in the middle.

This too took a replacement part. We ordered one for my specific model of printer (Maker Select Plus) and it arrived at the same time as the fan. Judging by follow-up research, borosilicate glass is preferred as a print surface, though cheaper, more thermally sensitive glass like you’d find in windows can also work as long as the operator is careful. My glass plate is affixed with four small binder clips, which I will need to mind as my favorite test print for leveling the bed sends the extruder right through them.

Takeaway

One key element I was not prepared for before printing a Benchy this week was hair spray. Makers love their Aqua Net hair spray. Another common-sense recommendation was not to use the metal spatula that came with the printer as it could damage the new bed.

Final Question

Have you ever 3D printed on glass? I look forward to hearing about your experience in the comments below or on my Socials.

Hard Drive Full: Decluttering

Good Morning from my Robotics Lab. This is Shadow_8472, and today I’m finishing off my move from Manjaro to EndeavourOS. Let’s get started!

About Last Week

14 hours. That’s how long it took for a proper fix to Space Engineers after I posted my attempt at a high-quality walkthrough for the workaround. I feel humbled, but in a good way. Someone at Keen, the game’s studio, took the time to fix a Linux problem for a Windows game. There’s also been some other good news I’d talk more about if I understood it, but the gist is that there are people working to optimize Space Engineers’ Linux experience.

Clearing Space on Manjaro

The big push this month has been to prepare EndeavourOS for daily use and make sure it’s stable in case I need a full reinstall. With NVIDIA drivers sorted and Space Engineers well-established, it’s time to move more stuff over. These last two posts were especially important to me, so I took the extra time with them. Now, I’m back at my original endgoal: Manjaro running again.

My Manjaro installation is so full, it can finish its update – or even log in anymore. Space Engineers is a big game, so I’m uninstalling it from there. I moved over my save data and reviewed it briefly in case I ever want to see my old creations.

“Easy Diffusion” basically takes care of itself, so while it had to [re]download some files to get going again, it was an easy 12gb to free. While I was at it, I added a new model I’ve been looking at. It was as simple as download and place in the right directory as directed (see Easy Diffusion’s help section for links).

With those offloaded, I easily booted Manjaro to apply several hundred updates amounting to a non-trivial download time. I now have a working backup OS on my Upstairs Workstation again.

Takeaway

There is more to life than big projects all the time. There will always be more to hand craft. I am thankful that my computer is usable.

Final Question

What is your idea of an “off week” project?

I Put Space Engineers on Linux (Again)

Good Morning from my Robotics Lab! This is Shadow_8472, and today I am offloading Space Engineers from Manjaro to EndeavourOS. Let’s get started!

Short Answer

I used Glorious Eggroll’s community version of Proton [1], but the AI update this past week and now requires a blank registry key or two added to its prefix. See the section titled “GAME UPDATE!!!” down below.

EDIT 4-18-2023: The development team just released a Hotfix in update 1.202.067 fixing the issue. 2/3 of my post is out of date only 14 hours after publication.

Background

This is a follow up/update to both last week –where I finish moving into a new EndeavourOS installation– and a post I wrote on January 18, 2021 [2], where I installed Space Engineers on Manjaro Linux and go into some detail about WINE, Proton, and the lengthy struggle I went through to install it there without fully understanding what I was doing. In case the specifics help anyone, I am running Space Engineers 1.201.014 default (Most Wanted update) on Glorious Eggroll GE-Proton7-54 on EndeavourOS with an Nvidia Geforce 970 graphics card.

I know what I’m doing a little better this time around. I even got it working first try. But that doesn’t mean I understand how everything works inside. There was an update to Space Engineers some time after my 2021 post that introduced a bug related to the audio system that would crash the game after anywhere between 5 minutes to 2 hours (ballpark average of half an hour). I was never able to diagnose it beyond a since-forgotten Discord post noting that the crash is an audio-related bug, and that it can be fixed by ripping open the .exe to kill the sound system. I happen to like sounds, so I accepted it until I gradually stopped playing.

The Dotnet Tradeoff

In more recent days, a member of the community going by G3ckobot on the developers’ Discord (Keen Software House) identified this crash as related to dotnet48, which I was quite possibly using as it showed up in a guide I linked to on GitHub I tried to follow. In my new installation, I went straight for Glorious Eggroll, and while the trade-off, as G3ckobot put it, is worse performance, the improved stability using the default wine-mono is worth it. He also suggested disabling progression in world settings to fix some lag related to the “G menu” for selecting blocks for your hotbar.

Crashes aren’t the only change I’ve noticed improvements with. The main menu plays videos like it’s supposed to. “Inventory Full” doesn’t self-overlap or cut off. Even “Exit to Windows” doesn’t throw a crash anymore. On the topic of miscellaneous bugs, there’s a new hint of static sometimes when I finish welding something.

A Note About Ship Blueprints

I’ve had one long-term goal while playing Space Engineers, and that is to perform a grand tour of the Solar System map before doing much else. I want to visit every planetary body once – even if just for a touch and go. My first attempt had a worker ship I was quite fond of designing, so I went to fetch it from my old save.

Like with any long-file path file transfer, my first move was to explore the destination directory.

/home/shadow/.steam/steam/steamapps/compatdata/244850/pfx/drive_c/users/steamuser/AppData/Roaming/SpaceEngineers/Blueprints/local/

When I navigated to the counterpart on Manjaro, I found myself in the exact, same place. I even made a file using the touch command in one place and it showed up in the other! A closer inspection of my file path showed that ~/.steam/steam is actually a symbolic link. Symbolic links have no concept of being mounted into another file system, so when I followed it, I landed right back in EndeavourOS’s copy of Space Engineers. It pointed to /home/shadow/.local/share/Steam, which I had to manually follow. I had to look around to find ../steamuser/Application\ Data/SpaceEngineers/, but in the end, it imported just fine.

GAME UPDATE!!!

The AI update arrived this week, and my installation broke after I was all but done writing.

Missing prerequisites
There is missing required C++ package.
You have to accept elevation dialogs from the
Steam to install prerequisites.

Within 20 minutes, I was the first one reporting it on Discord. The server went into a flurry of activity as community members pooled skills over the next four hours. A few facts were soon apparent: there are a lot of C++ packages, no logs were of help narrowing down the missing one, beta builds were working fine with Proton right up until the update dropped. I was busy with more important matters for most of it, but by the time I came back, user opekope2 posted [3]:

HERE'S THE WORKAROUND
1. Install and run protontricks
2. Navigate to SE > default prefix > regedit
3. Under HKLM\SOFTWARE\Classes\Installer\Dependencies, create Microsoft.VS.VC_RuntimeAdditionalVSU_amd64,v14

Community consensus was that an unused dependency was listed last-minute –perhaps accidentally– that wasn’t commonly included in Proton. Since the dependency isn’t actually called, it’s OK to add a fake entry in the prefix’s registry. How to get that fake entry in there can get tricky.

How to use Winetricks instead of Protrontricks

Protontricks is a version of Winetricks geared for managing Proton prefixes instead of Wine prefixes. Protontricks is in AUR but didn’t feel like installing anything from there properly. Instead, I made a symbolic link from ~/.wine to my Proton prefix and told Winetricks to load the “default” prefix. Note: I heard good things about Proton Experimental, so I switched to it from Glorious Eggroll.

AUR: Arch User Repository

cd ~
mv .wine .wineDISABLED
ln -s .steam/steam/steamapps/compatdata/244850/pfx .wine
cd .wine

Errors about .wine and “No such file or directory” can be ignored. It just means you don’t already have a default Wine prefix. If you get an error when trying to cd into .wine, that means you will have to find where Steam puts games on your distribution and change your file path accordingly.

If everything is good so far, It is a very good idea to back up your prefix if you aren’t working with a clean one or wish not to redownload it.

cp ~/Full/Proton/Path ~/.SEbackup

Ensure both Space Engineers and Steam are closed. Start Winetricks. Select “Select the default wineprefix.” The link you created and tested earlier will fool Winetricks into looking at Space Engineers’ prefix. Click OK.

Next, select “Run regedit” and hit OK.

Navigate in the registry editor to HKEY_LOCAL_MACHINE\Software\Classes\Installer\Dependencies.

You the Classes folder is long. Once you scroll down to Installer and find Dependencies, you should see two keys with the folder icon (my screenshot already has the extra key). Bring up your context menu and make a New Key and name it Microsoft.VS.VC_RuntimeAdditionalVSU_amd64,v14. Do not worry about adding a value.

Space Engineers should start up now, but you may have to try a few times before you start/load a game. My record is 4. After you confirm Space Engineers is working, be sure to remove ~/.wine link and replace your original default wine prefix if you had one before!

rm .wine
mv .wineDISABLED .wine


Takeaway

I’m no stranger to easy projects expanding on me, but this was dramatic! I tried to keep up with developments in this story until the night before publication. Opekope2’s original workaround post is pinned and has been edited to include instructions for importing two keys* that will do the same job as editing the registry manually as demonstrated. As a personal experiment starting around the time this goes live, I’m adding the other key manually. I don’t expect anything to change, but as opekope2 pointed out to me, “Because that’s how it is on Windows,” [3].

* Microsoft.VS.VC_RuntimeAdditionalVSU_amd64,v14 and Microsoft.VS.VC_RuntimeMinimumVSU_amd64,v14

Final Question

Have you gotten whatever latest update of Space Engineers running on Linux? If not, I highly recommend you engage with the community on Discord [3].

As always, I look forward to hearing about your experience.

Works Cited

[1]. GloriousEggroll, “proton-ge-custom,” github.com, [Online]. Available: https://github.com/GloriousEggroll/proton-ge-custom [Accessed Apr. 17, 2023].

[2]. Shadow_8472, “Space Engineers: WINE Is Not an Emulator” letsbuildroboticswithshadow8472 Jan. 18, 2021. [Online]. Available: https://letsbuildroboticswithshadow8472.com/index.php/2021/01/18/space-engineers-wine-is-not-an-emulator/ [Accessed Apr. 17, 2023].

[3]. Keen Software House, “Linux” [Discord]. Available: https://discord.gg/keenswh [Accessed Apr. 17, 2023].

How to Install NVIDIA Drivers on EndeavourOS: Easy

Good Morning from my Robotics Lab! This is Shadow_8472 and today I am fixing/installing NVIDIA drivers on my Upstairs Workstation’s EndeavourOS installation. Let’s get started!

Short Answer

EndeavourOS has an NVIDIA installation script in the repository. It worked beautifully with my GTX 970, but I gather I am on the older side.

sudo pacman -S nvidia-inst
nvidia-inst

See the official EndeavourOS site for more information: https://discovery.endeavouros.com/nvidia/new-nvidia-driver-installer-nvidia-inst/2022/03/ [1].

Project Background

To my readers installing NVIDIA: I bid you good luck and look forward to hearing about your experience. I found precious few relevant search results about this topic aside from EndeavourOS’s admittedly confusing site, and my hope is that I’ve pointed you in the correct direction. If that doesn’t work, I have another of their articles in my Works Cited.

For my regular readers: wow. I don’t have many first attempt projects. Granted, this is technically a well-researched second attempt. One draft only had 100 words between title, introduction, and delivery (down to 75 in this cut, according to LibreOffice Writer). For now, I am thankful I didn’t have to learn what all the hype is about firsthand over installing NVIDIA on Arch .

EndeavourOS went on very smoothly earlier this year until after I installed Steam. My boot sequence would then stop updating where it normally hands over operations to the graphical server. The community helped me trace the problem to repository-installed drivers. I had to use the camera from the lab’s photo booth for pictures of TTY terminals. I let the project go dormant for a month while I focused on Nextcloud, but then Manjaro filled up its hard drive again while updating, and I was out of stuff to offload. (After I finished research this week, I installed Filelight and noticed several unused Proton versions taking up space.)

Listed in EndeavourOS’ features is “Nvidia installer.”

“A terminal-operated app that lets you easily install the right Nvidia driver and/or hybrid set-up required for your machine” [2]

Every other item on this feature list came pre-installed. Over the course of a couple late-night hours, I learned first about an older script called nvidia-intro. It reportedly works with cards made around 2010 and newer, such as the GeForce 930 [3]. I bounced around among what forum offerings my search turned up before settling on the link I shared from the start. Once installed, it was completely automatic. It needed a root password for installation proper, but the script itself does not run as root.

Takeaway

Normally, I would have combined this and next week’s similarly short topic since I am again working on my Upstairs Workstation. However, thinking about it from the perspective of someone searching online for help, it makes the most sense to split them.

Final Question

Have you done battle to install video drivers? I would like to hear about it in the comments below or on my socials.

Works Cited

[1] Manuel, “New Nvidia driver installer, nvidia-inst,” endeavouros.com, March 31, 2022. [Online]. Available: https://discovery.endeavouros.com/nvidia/new-nvidia-driver-installer-nvidia-inst/2022/03/ [Accessed April 10, 2023].

[2] B. Poerwoatmodjo, J. Kamprad, and Manuel, EndeavourOS, “Welcome to EndeavourOS”endeavouros.com, [Online]. Available: https://endeavouros.com [Accessed April 10, 2023].

[3] Joekamprad, “Nvidia intro,” endeavouros.com, Mar. 9, 2021. [Online]. https://discovery.endeavouros.com/nvidia/nvidia-intro/2021/03/ [Accessed April 10, 2023].

Autism Month: Container Analogy

Good Morning from my Robotics Lab! This is Shadow_8472, and I have a very special post this week where I explain what it’s like for me living with Autism and meltdowns. Let’s get started!

Preamble

I struggle with Autistic meltdowns. As early as I can remember, I’ve been asked why I behave certain ways (usually as punishment for misbehavior perceived to be intentional), and just as long, I’ve been coming up with different –sometimes contradictory– explanations of my mental processes. Few were memorable except possibly a school essay circa around 2008-2009 comparing myself to a squishy energy ball with situationaly dynamic properties.

My analogies grew in complexity as I tried to build one unifying theory. It grew so many rules neither I nor anyone else could keep everything straight for a predictable model of my reactions. I could be fine after a loud noise one day and in terrible pain from a quieter one the next. In self-preservation, I would sometimes force myself into the worse reaction to afford others’ understanding when I needed it.

Then one evening in or around 2016 (wild guess), I penned the first draft of my container analogy as a frustrated message to a long-time friend over Discord who had sent me into a bad meltdown. It overflowed the 2,000 character limit, comparatively grew into a Calculus-grade explanation of how the rules change to my previous brute-force, Algebra-like rule sets, and was ultimately never sent after pending review by a trusted family member in case it was too hot a take. Instead, I put it into a document which had my entire Autism support group nodding, impressing our psychologist, who encouraged me into researching how to copyright it.

Since then, I’ve re-imagined it a time or two, and I’m ready to share it as part of Autism Month. If you or someone you know is on or is a caregiver for a member of the Autistic spectrum, it is my hope and prayer that this analogy can be a tool of healing and understanding.

Container

If I were to ever depict the control room of my brain, it would feature a container with an inlet and an outlet – a buffer between all incoming sensory information and my ability to process it. When fluid arrives faster than it can drain, the level rises and will eventually overflow in a chain reaction known as a meltdown, where all the fluid is spilled across the floor of BrainHQ. Higher thought processes –including evaluation of probable consequences– are impeded as base instincts attempt to clean up.

Processing generally happens over time, but a particularly suitable environment can reduce the amount of incoming fluid, freeing up resources for additional processing capacity. A meltdown in progress can go from raging to manageable simply by retreating to a designated space.

The most important difference about this container is its dynamic and invisible volume. Only its relative fullness, processing speed, and state of meltdown are known by its owner at any given time. By mentally tracking how full it’s been over time, its current capacity can be estimated. Involuntary or uncontrolled meltdowns dramatically shrink the container’s capacity to the point where even small stimuli can instantly overflow a post-meltdown container. Similarly, the expectation and execution of a particularly good time or special event can expand the container’s capacity to temporarily cope with volumes a neurotypical brain automatically can filter through.

A trigger is a stimulus that fills this container more than it should – either when compared to similar stimuli or had the same stimulus been experienced by most anyone else. One or two large ones can easily “trigger” a meltdown. Small, normally ignorable triggers in rapid succession can leave fluid sloshing around for subsequent triggers to splash fluid out of the container, causing a meltdown over several otherwise nothings.

In one unpublished telling of this analogy, I visualized the container and fluid as a barrel with apple cider so as to relate to a fictional character of mine I was role playing against an avatar of myself in a story format. In one scene, the cider spoiled, soaked into the wood of the barrel, and leached back into future thought processes at semi-random intervals. These echos are a particularly nasty kind of trigger where each echo comes back as an individual trigger joining its all its previous peers at once for an amplified effect. Individual instances generally fade over time, but re-exposure to memorable triggers has a way of inciting instant recall.

Strategies

Everything brought up so far has been passive. You can’t expect me to scrub toilets and tell me to have a mindset of going on vacation to cope. That doesn’t mean there aren’t things to do to optimize the container’s performance.

The container has some elasticity. When needed, it can be stretched, but extra fluid has to be dealt with as maximum capacity rebounds below normal. This holds true for both big, stimulating event as well as when a meltdown would be obviously and immediately dangerous, like while driving. Overuse of this strategy can damage the container’s maximum capacity long-term.

Opposite the first strategy is to prematurely trip a controlled meltdown-like state where some input is ignored as a triggering stimulus passes by. This can be as mild as mentally blanking out a loud car as it passes to full-on turtle mode, where all input bypasses the container and gets dumped. A sampling of random input can be retained to determine if it’s safe to bounce out, but the better the sample, the less effective the bypass strategy will be.

Sometimes, more fluid is expected than will ever fit or can be bypassed. This is when clumsy base impulses in charge of cleanup seize the controls meant for the higher functions now stepping back into a bunker. Senses –though heightened– aren’t as immediate a concern as the autopilot guides a melted individual to safety. This perceived degree of separation feels similar to controlling a video game character or navigating a choose-your-own-adventure style dream. Consequences are still harder to conceive of, but the higher functions have a veto in this mode if the path of least resistance is reasoned to be more dangerous than wading through the trigger-infested fluid.

The last strategy is a cry for help. Petition another person for aid. Depending on the situation or individual, it may be as simple as explaining the situation verbally with words to as vague as acting “off” for someone to notice and ask. Embellishment may be used sparingly to convey a sense of magnitude or urgency, but over-outlandish comparisons run the risk of rejection.

Extensions

I’ve tried to integrate as much of my analogy into a single narrative as possible, but I’ve found it to be easily extendable. Even so, some details don’t fit in well elsewhere.

Fluid spilled in a meltdown –if not cleaned in a timely manner– will harden and take even longer to recover from.

There is a strategy called masking I personally am not a fan of relying on, but it works for some people: a foreign pattern of behavior is emulated using extra mental resources. Overuse leads to burnout.

Burnout is where the brain unwires potentially needed skills from speech to social skills to computer programs. Burnout may last anywhere from a day or two to long enough to re-learn the skills from scratch.

Another way to look at base instincts/impulses is as an idiot doppelganger at the brain’s controls. One of my notes from the cider version of this analogy visualizes this doppelganger as being made of spilled fluid. But it was competing with imagery of my character’s shadow separating out to wade through the fluid to operate the controls. I loved both illustrations so much, I couldn’t pick a single one, and eventually lost interest in the project. They may work in a fused for thoug.

Misconceptions

There is a distinction between triggers and meltdown vs anger and temper tantrums. The two sets may appear similar and occur concurrently, but one is a type of fight, flight, or freeze sequence, while the other is a basic human emotion driven by perceived injustice allowed to degenerate into bad behavior. This is why I have taken to making a distinction between triggers and Autistic triggers when talking with people outside my inner circle.

Autism is said to be a spectrum: no two people with it are the same. Once you’ve met one person with Autism, you’ve met one person with Autism, and the next one will be different. A stimulus or deprivation thereof may be soothing for one person and a supermassive trigger for another.

Takeaway

Autism is a lifelong challenge, but by the love and grace of God, my family loves each other. It breaks my heart knowing there exist members of the spectrum locked in a state of perpetual meltdown and masking as a matter of survival. The quality of life the Almighty has blessed me with I definitely would wish on those who would make assumptions about me based on their own experiences [particularly those with Autism], make hurtful or degrading judgments, and leave without a second thought. I believe this post has the potential to help.

Further Reading

Instead of a Final Question, I’d invite you to review a couple pieces that have been influential in my journey with Autism.

The first is a book: Managing Meltdowns: Using the S.C.A.R.E.D. Calming Technique with Children and Adults with Autism by Deborah Lipsky and Will Richards. I haven’t read it for myself, but I found even the outline, and chapter summaries to be powerful tools to compliment my understanding of what goes in within my own mind.

The second is a video by YouTuber Mark Rober: The Truth About my Son. In it, he has a vivid demonstration in a park about life without filters. Even in the relatively low-stimulus environment of my own home, I have distractions I have to purposefully ignore. The computer fan beside me is making a constant sound, the sound of the keys as I type, the slight squeaks of my decently lubricated chair – occasional noises from upstairs as a Star Trek episode finishes up, my dog vibrates the room with his snoring if he’s not looking up at me, my cat keeps coming around to visit, there’s a vacuum cleaner sitting by my desk I sometimes rest my foot on. Even the fabric of my shirt is registering.

I look forward to discussing this topic in the comments below or on my Socials.

Nextcloud Dangling in the Works

Good Morning from my Robotics Lab! This is Shadow_8472, with a stubborn-project update. Let’s get started!

Nextcloud as a project comes with a lot of strings and hooks. Every time I sit down to work on it, the feature creep closes in: multiple volumes for speed and capacity, MariaDB container so SQLite doesn’t choke serving clients, a pod for MariaDB to live in alongside Nextcloud, Redis for RAM caching (Out of my scope, but worth a mention), Ansible Vault for password management (automation tool I’d need a month to learn), podman secrets, Philomena image board software – not to mention the volumes I learned about the other week! As noted in previously, the container I’m using from docker.io can take care of itself, but it will work a lot better with even a few of these things.

In my ideal configuration, all my containers’ persistent data lives on GoldenOakLibry so my old, red laptop can take over on critical Podman containers when ButtonMash is booted to Debian for photo scanning duty. The big, hanging question then is if GoldenOakLibry’s internal HDD’s absolutely need to spin up to serve shares hosted on NAS volumes mounted from an external SSD.

HDD: Hard Disk Drive
NAS: Network Attached Storage
SSD: Solid State Drive

My initial tests involved verifying that a drive could be mounted externally, then rebooting the NAS. I was expecting either a 1 or a 50 second wait, but instead I kept hitting “Stale file handle” errors when I tried mounting the external share. My second round of trials a week or two later exhausted search pages worth of results to learn how NFS shares change a few invisible details when restarted. Either something wasn’t ready when needed during boot, or my client just needs a while to refresh those details. It works in the long run, and external shares are not dependent on internal disk spinup. Time to move on.

Having solved the last known problem, I started layering the bits I had solved while frustrated with the USB share. I prepared three Podman volumes: two for Nextcloud prioritizing high-capacity and speed, respectively, and one for an SQL database. A pod housing MariaDB (the SQL database) and Nextcloud containers mounts these volumes (!). Podman secrets safely injects the database password so MariaDB and Nextcloud can work together – not strictly necessary for my application, but a good habit to get in in case I go in the direction of creating images from existing containers. Once the cloud is running, I want to try adding an image board to view the pictures.

(!) NFS –as it turns out– does not appreciate a number of the acrobatics rootless Podman performs with Namespaces. I don’t have the specifics memorized, but when Podman makes a container, the host’s user ID is mapped to root within that container. Podman then assigns variations of the host’s user ID to non-root users within the container as defined by a namespace. The NFS protocol wasn’t designed with namespaces in mind. To NFS, it looks like you’re trying to access another user’s files – possibly without permission. While this reportedly doesn’t stop rootless Podman from working well over NFS over normal circumstances, there are a bunch of search results talking about the snag when working with container images over NFS. Based off my experiences for this post, the same appears to hold true for volumes.

Takeaway

As much as I wanted this to be the last installment, this issue is a post in and of itself, and I’m getting burned out again over trying to come back to it. I’ll try coming back to this in around a month or so.

Final Question

Have you successfully used Podman volumes over NFS? Please, do tell me all about it in the comments below or on my Socials.

My Homelab Report, 2023

Good Morning from my Robotics Lab! This is Shadow_8472 with a snapshot of my different computers as of mid-March, 2023. Let’s get started!

I have felt a need for a page detailing my so-called “homelab” detailing the computers and other equipment I personally maintain. I didn’t finish any big projects this week, so here’s a first draft of that page. It’s listed in roughly the order I took ownership/responsibility for each piece. I’ve tried to gather each computer’s base model/modified configuration plus a list of its presently bootable operating systems. Warning: unexplained technobabble ahead.

Red Laptop

Dell Inspiron N7110
1 TB SSD

Debian 11

As the oldest operational computer in my fleet, this laptop has been with me for almost 12 years, though most every part was replaced while it was under extended warranty. Shortly after I started this blog, I installed Debian 10 on a USB external drive. I nuked its Windows drive one week by formatting the wrong disk, and later replaced it with a 1 TB SSD, cloned Debian inside, and it served as a get-me-online machine until the screen bezel cracked, threatening to shatter the screen the next time I’m not careful. It’s now serving as a backup home server, and it’s desktop environment has proven vital to rebounding from at least one network emergency since.

Upstairs Workstation

Custom Build

Intel Core i7-3770K (3.50GHz)
NVIDIA GeForce GTX 970 (rev a1)
24 GB RAM (2×8+2×4)

Windows 10
Manjaro
EndeavourOS (WIP)

“Upstairs Workstation” also predates when I started naming my computers. I got it for university when laptop turned up as bit underpowered. I went from Windows 7 to Windows 10 with this machine, narrowly avoiding an online tech support scam (10 didn’t support a Wi-Fi cart I was using at the time and later finished burning out when I put it back in after switching to Linux).

Derpy Chips

Custom Build
Intel Core i7-2600K (3.40GHz)
16 GB RAM

PopOS

Derpy was named for its tendency to give power kernel errors during its first service life until its retirement. When I adopted it, I gave it a new hard drive and inadverantly diagnosed the one lowballed part: its 2 TB HDD. I’ve also had issues with a stick of RAM from it, but I’ve had it running smoothly for a few years now as a secondary workstation.

ButtonMash

Dell Optiplex 7010
16 GB RAM
1×60 GB SSD
1×1 TB SSD (external)

Debian 11
Rocky 8

ButtonMash has been my main x86 experiment machine as well as my home server. I bought it from a church member who was upgrading his dental office computers. I My was host to my first Linux install: Ubuntu, but I’ve put it through a parade of distros including MicroCore (where I learned the command line), MineOS, Debian (originally from “red laptop”), and finally Rocky. Today, it serves as my primary home server, where I am setting up several Podman containers including Vaultwarden, PiHole, Nextcloud, and Minetest – each on a separate account for further isolation.

If and when we need to scan pictures, ButtonMash is dual booted with an external SSD I originally used with my Red Laptop.

GoldenOakLibry

Synology NAS

4x7TB HDD RAID 5 share
1 TB SSD share (external)

GoldenOakLibry is our home NAS intended for picture scanning. If nothing else, it’s exposed me to using a computer that’s meant to do nothing but serve files. I have a long way to go before I master it.

Raspberry Pi’s

1xRpi3B+
2xRpi4B
1xRpi400

My collection of super-flexible Raspberry Pi computers has served me well. At the moment, the Pi 4’s are serving as OpenWRT router firmware configured as Wi-Fi-to-Ethernet adapters for my upstairs workstation and my sister’s desktop. My Pi 3B+ has been inactive since its 3D printed PacMan ghost case got smashed, and my Pi 400 shares a monitor at my upstairs workstation.

Other/Misc computers

3D printer

Maker Select Plus
Added braces+feet

I am no master at 3D printing, but I know enough of the basics to scrape together most everything I try. At present, my printer needs a new fan and a printbed that isn’t warped.

Pine Phone

UBPorts Edition

The average smartphone these days spies on you. Its parent company is allowed to by the terms of service you need to accept before use. I resolved to not blindly accept any new EULA’s without knowing what I’m getting into and learning enough to be confident I’ve done something to mitigate the worst of these violations of privacy. As a consequence, I don’t have a usable phone ever since we switched providers a while back.

UPS’s

I have three uninterruptible power supplies directly under my supervision – one serving the network closet, one serving my upstairs workstation, and the other ButtonMash’s area. As of yet, I have not figured out the open source NUT driver.

My Father’s workstation

Dell Optiplex 7020
15 GB RAM

Linux Mint 20.3
Debian 11

15 GB RAM

After I bought ButtonMash, I got another used workstation out of the same dental office, replaced Windows, and gave it both sets of RAM. I later talked my father through installing Debian 11 on ButtonMash’s original hard disk

Ventoy USB (32 GB)

Not technically a computer, but easily one of my most versatile tools. Ventoy makes Linux media creation as simple as dragging and dropping a .ISO. Even better is that I can still put normal files on it!

Takeaway

Each part of my lab serves its function. There’s a certain joy when I get something new working and get to show it off.

Final Question

Which of your projects are you most proud of?