Linux Deep Dive Part 3: Stability

Good Morning from my Robotics Lab! This is Shadow_8472, and today, I am just going over the stuff I did this week. Spoiler alert: it’s more of a mix and mash. Let’s get started.

My idea while writing last week’s post was it. I believe my laptop wasn’t booting reliably because GRUB was configured incorrectly. The BIOS went fine and selected the external drive to load from (or the GRUB disk). The bootloader, GRUB, loaded correctly, gave me the option of operating systems to boot, but when it went to load Debian, some of the time the drives respond out of order: when GRUB went to the drive presently known as sda, the internal, Windows drive, and expected to load Debian, it panicked and dropped into BusyBox.

I diagnosed the problem by looking directly at the grub configuration files and sorted out any instances of “sda.” There were a few. After fielding some questions about the suspect config lines, I regenerated the config file after reverting the only change I had previously made without regenerating. When it was done, I scanned for the parts where “sda” had previously shown up, and there was the correct UUID I was looking for.

I wish I had found someone identifying this problem. Ironically, I came within inches of mysteriously solving this issue none the wiser when I tried regenerating the GRUB files to give the drives a full minute to load instead of five seconds. I can see where I might have spent just as long trying to reproduce the bug an failing. I wouldn’t have it any other way than how it happened. I can live with this.

With stability issues out of the way, I have other things to move over. Remember when I used to do 3D printing? Well, I want to make a bookmark, and I want to do it from Linux. I popped my SD card into my laptop, and found the copy of the Cura slicer that originally came with my printer — it’s a .exe file. Linux doesn’t do .exe files.

Side note: I’ve been using aptitude instead of apt-get. They both do the same job, but aptitude tries to put a nicer face on it, like not changing half its name for searching instead of installing.

After teaching myself how to search the apt repository like I did back on MicroCore, I used aptitude search cura and installed the package pertaining to g-code generation. I looked in my program menu and found “Ultimaker Cura.” OK, I suppose this is the generic. I already knew the version I was on before was a fork of some other parent program. Lacking another explanation, Ulitmaker Cura seems to be it.

The first time I opened this newer version of Cura, I was bombarded with a prompt to add my printer. I didn’t see my printer, so I ended up picking a wrong one and continuing from there. And that is where I’m stuck.

I poked around in the menus and did some research, and found the latest version of Cura is on at least version 4.0, but the on in the Debian repositories is 3.3.1. I am starting to get the feeling that this is what they meant when Debian software is chosen for proven stability. I may go around the repository on this one.

Diagnostic procedures involved a bunch of research and plugging in with a USB B connector. I hooked my printer up and told Linux to list my USB devices. I isolated an entry called “QinHeng Electronics HL-340 USB-Serial adapter.” I’m not exactly sure what is going on here, but it looks like my printer is electronically connected to something inside that then talks to the computer outside. Oh, and the menu still works off just USB power.

I am open to using other slicers. The main goal is to demonstrate a workflow, and I don’t have that right now. I also tried Slic3r Prusa and it had even fewer options, but it had a list of questions for configuring other printers.

Looking around, there is a lot more to the world of slicers than the narrow sliver I was looking at before. The IIIP branded Cura is great for someone who is just wants to 3D print or doesn’t want to move away, but there is a whole world to explore out there with different optimizations and features to play with — all locked away behind a learning curve that starts with getting my printer back online.

There are plenty of 3D printing videos out there. Every one I clicked on while trying to get things working on Linux was using Windows. Maybe there was one, but I don’t know. I’m going to have to tackle OS/slicer and slicer/printer issues separately from now on.

Unrelated: I have been getting a lot of use out of my Steam controller. It turns out to be very useful as a mouse on my Widows machine when I want to sit back without a hard surface in easy reach.

Final Question: What was one challenge you faced that left you feeling good for going through it?

Linux Deep Dive Part 2: End of Week 3

Good Morning from my Robotics Lab! This is Shadow_8472, and today, I am continuing my coverage of my deep dive into Linux. Let’s get started!

Last time, I installed Debian Linux on a USB external solid state drive using skills I learned from previous projects.

I am very much still in my trial period for Debian. Most of my time working with it has gone into exploring and diagnosing the system.

A lot of my MATE explorations into panels happened on at least day two. While I was able to assemble a semi-convincing Start bar look-alike, it still has a way to go.

I discovered the first of two big hitches when I took it in to Third Workshop and booted to Windows to demonstrate Minecraft in its unplayably slow state. I hit restart, booted into Debian, and it was still unplayably slow. I even rebooted several times, only for it to refuse the decent performance I knew I had seen already. We even put a simple clone of Minecraft by the name of Mine Test on there to test the FPS. I got it home, booted straight to Debian and Minecraft unexpectedly worked correctly.

It took me a while, but I finally narrowed the pattern down. The performance drop only happened if and only if I first boot to Windows and restart into Linux without shutting down completely.

Even though I didn’t master the problem by solving it completely, it hasn’t come back, so long as I don’t reproduce it on purpose. I’m fine leaving it alone.

And now for my other problem: Debian only successfully boots about half the time. I still don’t know this one. All I can do is lay out everything I know about it and hope someone knows what the deal is because I’ve yet to find a help topic that matches my problem exactly.

It used to be that Debian would boot every other time, but it did have a spell where it booted and failed about six consecutive times each. A few days ago, it’s gone to not booting at all. Whenever it fails, it drops into BusyBox, displaying an ash shell with the prompt (initramfs). It has some basic commands, and I think the general idea is that when the Linux kernel can’t find the files it needs, a knowledgeable operator can manually mount a drive and boot from there.

Now, I’ve mounted drives by hand before. I met someone going by hyperreal who generously spent over an hour and a half of his time on me. We seemingly tried everything to try and get BusyBox to boot. Nothing. We even peeked at the hard drives’ contents from a GRUB boot menu console (Don’t cite me on terminology here!). Everything looked good until BusyBox showed up again.

A lot of it was repetitive. In short, it looked like /root had the contents of my Windows… I may have it. What if GRUB is looking for sda or sdb specifically and they respond in the wrong order? I’ll check into it.

As I was saying before a flicker of hope interrupted me, The Windows drive was mounted to /root and I was able to umount it, but neither drive would mount there. I kept getting an “Invalid argument” error. Maybe the BusyBox mount command is a little different, but it should have worked each time. We tried mounting it from /dev, where devices are listed by an internal shorthand per system, and from a more out of the way place that listed them by UUID. There were four entries, and I suspect the two that didn’t look like hard drives were my mouse and keyboard.

Moving along, I also tried burning a Super GRUB Disk a total of three times. The first two were on my laptop, but they both flopped. I detoured for a while, doing other stuff mentioned above before making a good disk from my desktop.

I still need to mess around with the disk to know exactly what is going on. The working theory has been an unreliable install of GRUB. I have a new idea since writing this, but for now, I have a way to use my computer when I want.

Final Question: Any ideas on this one? I could really use the input, though I should probably get the comments section working some time.

Family Photo Chest Part 4: PyCharm Migration

Good Morning from my Robotics Lab! This is Shadow_8472, and today, I am moving PyCharm from Windows to Debian. Let’s get started!

The past month didn’t feel all that fast in terms of this project. I reread a few of my paragraphs from last month, and I get the feeling I didn’t have a clue about what I was looking at.

There are at least a couple reasons why I believe IDE’s are only for when you have an expert handy. They are full of stuff beginning programmers don’t need to be using yet and that stuff can be incredibly fragile. The moment something breaks, progress stops and you need someone familiar with the program to sort things out. If you’re engaging in self-study, working from the command line has fewer things to break and most language tutorials provide command by command instructions anyway. If possible, you should seek out one or more groups to join who can answer programming questions when they come up.

PyCharm was a little fussy to migrate to the new operating system. I made the mistake of just importing everything straight from the configuration on the old install. First of all, all the file paths were written in Windows. I tried routing the interpreter to the one that came with Linux, I had to move the link to my project file around, and I went hunting through the venv settings for references to Windows paths.

The easiest thing to do is to just say no to importing anything on first launch and recustomizing everything. I ended up moving looking into individual files in my settings and plucking out the ones with intrinsic ties to the old install. I had a lot of custom colorization going on, so I sifted through my settings files and plucked out anything with file paths starting with C:\.

Project files were a separate but parallel undertaking. With all the errors I kept getting, I ended up grafting my old project files into a new set of project files. Almost everything copied over, but a hidden .idea folder holds a lot of ties that rely on things not moving. I also had to remove a workspace.xml file or something similar over a reference to the old hard drive. Pycharm brought up a dialogue box to fill in the appropriate information and that angle was solved.

Now, about virtual environments. Implementing them is an important gesture toward seasoned programmers collaborating on projects on different computers, but they complicate things a bit much for the average novice on his or her own. On my windows install, I managed to hack it out of my project, but I never told PyCharm that I didn’t want to use them in a way it could understand. This time, however, I had help addressing the issue.

The IDE is a powerful tool. Powerful tools are okay to pick up and use, but the learning curve can be sharp, and reckless newbies can easily damage something while careful newbies just get slowed down by all the things to research. Supervision like what I used to get in my programming classes or what I’m getting now at Third Workshop is a practical must-have. I don’t always get the answer I’m looking for right away, but stray comments tend to provide seeds to plant in a search engine.

Final Question: Have you ever made a major change and had little cracks you didn’t anticipate?

Linux Deep Dive Part 1: Day 1

Good morning from my Robotics Lab! This is Shadow_8472, and today, I am covering a giant step I’m taking into Linux. Let’s get started!

I’ve known for a while that I would be switching to using Linux on my laptop as part of my program to keep it shambling into the future. The final straw for my laptop was a painfully slow Minecraft experience in Windows. It was giving me between 8 and 15 frames per second on average, but the drops to 0 fps were unacceptable. I started shopping.

Some months ago, I installed Kali on an external drive and ran it live. I had some reservations about how you are logged in as root by default, and even watched a video by Cyber Weapons Lab about things you’d want to do when you install Kali. A more recent major update changed some things to be more friendly towards people looking for a new main OS, but a developer blog explicitly said installation on a production computer is “not recommended.”

I spent a few days considering what distro to go with. There are a number of distro pickers out there that ask you different questions like, “How old is the hardware you want to use?” or, “Do you care if you use closed source drivers?” I am after stability and access to community support. Besides, many knowledgeable Linux experts say that distribution is ultimately irrelevant. YouTuber Chris Titus Tech considers each distribution “a starting point.” While there are fundamental differences between major distributions, you can customize pretty much everything with relative ease once you know what you’re doing.

I only have an idea of what I’m doing. I don’t need bleeding edge for anything I’m doing, nor do I want to have an otherwise stable machine develop problems on me. Debian has a reputation for rock solid stability and enough of a community out there for when issues do develop.

Chris Titus Tech may have had some influence on my decision. He has a series of challenge videos where he covers a year of using Debian on his production machine. One of his warnings is that it takes a week to set everything up before it’s fully stable. I would add the caveat that that only applies after you know what you’re doing. Again, I only have an idea of what I’m doing. As such, I am going into this expecting a month or more. Chris Titus Tech provided a much needed boost here with a video about installing Debian, including how to navigate the list of Debian downloads for an easier ISO to work with. I highly recommend you look it up if you intend to install Debian. LINK.

Considering my aging computer and desire for an easier transition, I chose the MATE desktop environment for being relatively lightweight, yet customizable and went with an ISO that includes “non-free” software, like freely available drivers owned by different companies, for greater compatibility.

I had a few false starts when creating my install media. In my travels, I came across a tool called YUMI (Your Universal Multiboot Installer) LINK. It looks like a good tool to build a replacement for your army of install USB’s or CD’s, but I didn’t get far trying to install Debian on there normally. It’s worth looking into later, though.

If you ever decide to judge a distro by its live session, don’t. Running Debian live from USB is about as sluggish as the Windows OS I’m moving out of. It got so bad that I spent a while asking if an internal HDD or an external SSD on a USB 3 is faster. I couldn’t bring myself to install over Windows when I might be missing some paid license file or something, and the notion of internal partitioning made me nervous. I benchmarked my candidate drives and found the SSD was between two and three times faster than my internal HDD. I installed for performance.

Installation was nerve-wracking. If only I had studied the video I had already had found where someone installed that exact same operating system, I would have known I when the settings were locked in and ready to destroy whatever partition they landed on. I would have known the hard drive selection was almost at the end, and I would have known not to say no when it offered to install GRUB to my master boot record.

I adjusted the BIOS to prefer external USB drives over internal hard disks. Boot continued to a simplistic screen and stayed there indefinitely. I looked into making a Super GRUB disk, but I stopped after two attempts and went with the nuke option and reinstalled, this time following the instructions.

For the record, by the time I hit the ugly mug of the ISO’s login screen, I had a thumb drive for install media and an external SSD with Debian on it.

The following days were a different kind of challenge. The MATE desktop offers enough customizability to almost put Windows to shame. The details would fill up their own post, and there already enough tutorials out there. The only word you need for massively improved searches is panels. You start with one at the top and one at the bottom, but I moved mine around to make like a Start bar across two screens. I’m still working on it, though.

Minecraft was a little tricky to install. I grabbed the .deb file and it wanted a couple dependencies before installing, programs most distros normally come with. Minecraft wanted me to log in again, even after mounting my HDD and copying over my .minecraft folder/directory. Whatever comes next, the improvement in performance is worth it. At the end of my first day on Debian, I was managing between 25 and 40 fps during normal play.

Overall, I think Debian will work out for me in the end. I still have to finish patching it together, but my previous work with Ubuntu and especially Micro Core has prepared me for this overall challenge.

Final Question: What projects have you embarked on that naturally feel like direct sequels to earlier projects?

Minecraft Server Optimization Part 1: G1GC

Good Morning from my Robotics Lab! This is Shadow_8472, and today, I am working on my Minecraft server. Let’s get started!

A few months back, my sister put together a server idea she called Creepers ‘n’ Cream. It runs on Vanilla Minecraft, but has a few datapacks that offer us little gameplay changes, like mob and player heads, Elytra drop on a rematch with the dragon, and a tool for rotating some blocks in place. All I know is that she got the idea from Hermitcraft, a well known Minecraft server for YouTubers and streamers. We don’t run all of their packs.

I covered my process to get the server machine ready to host Creepers. it provided me with about six weeks of content, and in the end, I accepted MineOS as a much easier alternative to a practically custom-built Linux distro.

Once I got MineOS behaving with 16 GB of RAM open to it, I set it aside for a while. At one point, it had been running more or less stably for about two weeks without a reset when a couple players showed up unannounced. We had them contained in a house in adventure mode, so they were more or less contained. The server crashed unceremonially by a game tick (normally 1/20 of a second) lasting for a full minute. After a peek into the accounts’ history, it looked like they were hackers.

I don’t remember the second big crash all that well, but a couple weeks ago, it crashed the same way for a third time. I started doing some research, and found several places talking about garbage collection.

For the non-programmer, there’s a part of a program’s memory called the heap. If the heap ever overflows, the program crashes. As the program runs, objects are put into the heap when needed, and when they aren’t useful anymore, the program marks them as garbage. Every so often, a garbage collector comes by and tidies the heap up so it has more room for new objects. This takes time away from the program you want to be running. By default, Java collects all the garbage when the heap is full. Unfortunately for Minecraft, this causes a noticeable lag spike when garbage collection (GC) happens, and the bigger the heap, the longer it has to wait.

A number of posts I found in my research sung the praises of G1GC (Generation 1 Garbage Collection) for use with Minecraft. From what I gathered, G1GC focuses on making sure unused objects don’t clutter your heap for any longer than necessary. By having the collector come by frequently, it can collect in several short bursts too fast to notice at the trade off of taking a little longer overall.

Somewhere, I read a G1GC guide or two that suggested allocating all your RAM to Java when you start the program. Bad advice for default GC. The server was running a lot worse for a week before I reigned the minimum from 15 GB back to 4 GB.

Farther research into this theory led me to a programming Discord. Someone there informed me I almost certainly had a memory leak. On a trip to Third Workshop, I learned that even though two or more programs may be free from memory leaks their collaboration may introduce them.

I eventually switched over to basic G1GC. Where default GC would require daily restarts to remain in peak performance, G1GC kept the server stable for three days until planned maintenance took it offline.

In conclusion, I recommend all Minecraft server operators consider trying G1GC.

Final Question: Have you ever broke something by following poorly understood advice?

Minecraft Server Optimization Part 0: A brief history

Good Morning from my Robotics Lab! This is Shadow_8472, and today, I am turning my attention back to the Minecraft server I’m trying to hold together. Let’s get started!

Quick Recap: I delved deep into MicroCore Linux, learned a ton about Linux’s underbelly, then moved on to MineOS to host my server on a computer I’ve named ButtonMash.

I have run Minecraft server software for years — almost as long as I’ve been playing Minecraft. Ever since I saw the Last Airbender plugin for Bukkit back in 1.6. All you had to do back then was download the Bukkit server jar, put your plugins in the right folder, and copy some text in a batch file you run. If you want to invite friends over for a visit, you need to open a port on the router, or ask your admin to do so.

Depending on the plugin or plugins, configuration could be a challenge. I already knew a thing or two about in-game command lines from playing a Sonic fan game I played previously, so it wasn’t that new of a concept at the time.

My entry-level skill set for Minecraft servers was rounded out when I learned to update. Modded servers need time to update after the official release, so I learned how to fix my launcher settings to the correct version early on. I learned how to edit the startup file so it actually works, and that was enough to get me going for a while.

Even back then, knowing what went into making a simple wold made me appreciate how more elaborate servers were set up. I spent a while on someone else’s server, where things didn’t go completely smoothly. There was a childish griefer who possibly had his real name for his account, and an overagressive profanity filter was blocking perfectly innocent words that come up on a daily basis both in-game and on a university campus.

A world or two and a couple family members with accounts later, I furthered my craft some more. I remember running a family server on quad witch hut seed in a then-new amplified terrain world. We dropped the Airbender plugin for this one over an infestation of cactus blocks spawning at the same spot in every chunk just above sea level. We kept the seed, but when an update expanded witch huts’ bounding box, I got in there and manually updated the NBT data on our old huts.

At some point, I got my father playing as well. One family server I think he was on, I learned a painful lesson about backing up. We had a nice, little cove we were all building in. I made a note to backup the whole server in the morning. Someone found our IP in the night. He followed our nether tunnel from spawn to our cove, then raided our stash of gunpowder and sand. The damage from his TNT spree was too much to bounce back from, even with creative mode to speed repairs. The next server, we started using spectator mode to contain new players until an OP can let them out.

Another tool I learned as a more journeyman server sysadmin was Spigot. After Bukkit was shut down, Spigot became the go-to unofficial server provider. The only catch: You needed to follow some more dark, spooky instructions to get your .jar file by compiling it. The hard part is setting it up the first time. There are a lot of steps, and a brand new server operator won’t know if anything is working until they get their working .jar file out the other end. Updating? Good luck remembering where to start in that textbook of an instruction list, because most of them only need to happen once!

This server is getting me to push my Minecraft server sysadmin skills to the next level. Somewhere in my history, I learned how to allocate more RAM to improve server performance, but with more friends frequenting than just immediate family members, I want to make this experience the best I can offer. One of the biggest possible improvements a sysadmin can do is to leave the host machine alone. At that point, you need to start thinking about hardware and operating system, and up to this point, it should be fairly easy for an aspiring sysadmin to grow their trade without crossing their skills over with related fields. Tutorials abound for focused subjects, and one can look up a subject and gain knowledge. Not so, for me anymore.

It feels like I’m crossing some kind of invisible line — or a spread out boundary — where I have been following the footsteps of well-known trails so far, but I have come to a path less followed. People can only write tutorials about their experiences, and as you advance in a field of study, you pass up many of the people you’ve learned from.

While I am not blazing entirely new trails here, I am feeling a little starved for variety of people to choose instruction from. My only guess is that most people who make it this far have either moved on to other pursuits, or are tending their own servers, some of which are monetized through dues or donations. All I want right now is to run my server as smoothly as possible, and I’m going to need to learn a lot more to succeed.

Final Question: What are some stories you’ve gotten over the years while honing your trade?

Family Photo Chest Part 3: Tools of the Trade

Good Morning from my Robotics Lab! This is Shadow_8472, and today, I am taking all my progress so far and discarding it. A lot has happened, yet not much at all. Let’s get started!

The past several weeks have been covered by me getting so far ahead on my Minecraft server, now called Button Mash. I managed to maintain a backlog of completed posts, but for reasons I will get into, I’ve run out, so here I am, “live” again.

This project has undergone a major overhaul in concept. Instead of a ready built solution, I will be facing material in a class I was unable to complete due to incompatibilities with the physical classroom environment; I will be building my site from scratch.

So far, it doesn’t look like it will be as bad as I thought it would be at first. I am going through the Flask Megatutorial by Miguel Grinburg [Link to first lesson]. As of this writing, I am on part 4 of 23. Yeah, I’m going to be at this for a while as I build up my skill set. Unfortunately, I doubt anyone would have fun reading half a dozen blog posts about following tutorials week after week, and I would get bored trying to keep them interesting. So, without much else I can do to keep things interesting, I think this project will be more of a monthly feature until I finish the tutorial. Don’t worry, there will be plenty of other aspects of the project to cover.

My main focus this week is covering the tutorial. I really do need to take it slowly, one lesson at a time until I finish the little “Microblog” project being built and I probably won’t ever deploy anywhere. The process of copying everything reminds me of when I learned Lua. One of the best ways to learn a language is to transcribe a complex, known working program.

The tutorial assumes you are using the command line, but I am using the Pro version of Pycharm. Incidentally, whenever the tutorial gives me step by step instructions for working with the command line, I need to stop and evaluate it for the IDE (Integrated Development Environment).

One of my earliest problems involved trying to get Microblog to work with Flask. That task was trivial, as there’s an option for it in the new project window.

Another, more difficult task was getting Microblog to run when I went to test it for one of the first times. It had two hard-coded URL’s to use, but only one was in seemingly in use. I ended up deleting a default “Hello World” file that was giving the false success. With the decoy out of the way, everything stopped working. The proper files under development were moved to where they actually belonged.

One of the things I did to make it work was a mistake. I don’t know why it worked or why it broke, but whatever I did, I addressed it properly later on, and only just recently cleaned up the mess I made when trying to revert a very early change.

All of my stubborn problems so far have been with the terminal/API differences. At one point, I misunderstood how things were supposed to be arranged. At another, I was unable to read the filesystem correctly, so I actually moved a few files where they should have been. Naturally, Microblog lost track of where they were.

Final Question: What is your favorite or most effective way to learn a programming language?

Family Photo Chest Part 2: First Milestone

Good Morning from my Robotics Lab! This is Shadow_8472, and I am coming right off writing last week’s post because I have more to report, and it made a nice stopping point where I left off. Let’s get started!

I started work on my first prototype during my Third Workshop visit mentioned last time. It’s pretty chill there, so I have time to absorb what I’ve read as I read it slowly.

Philomena is on a Git repository, so I did some reading up on it the week before by going over some basic tutorials. I don’t actually remember much, but I will recognize stuff faster when reexposed to it.

As a side note, something seems to be failing on my laptop. I don’t know what, but it isn’t always booting on the first try. It took up several minutes of my visit to the workshop as it went through its battery of tests. Interestingly enough, the charger passed, even though I know for a fact that it won’t charge the battery due to a failure with the power port.

Git repositories have a special file that displays when you visit their web page. The first several times I looked through the one for Philomena, I had no clue what to do. This time, I recognized a number of commands to run, but require something called docker and docker-compose, neither of which come preinstalled on Raspian, apparently.

In the meantime, Git offers two ways to “clone” or download software contained in repositories. Recommended is over https, which almost all websites use by default now, and the other was over SSH.

Fun diversion, I had a really hard time with PuTTY when it kept complaining about Blinkie’s RSA host key whenever the IP changed. In the end, I hear most SSH clients don’t care about the IP as long as its host key is on a list of known hosts. PuTTY, however, saves host keys to each hostname unless unavailable, as in my case, then it uses the IP.

In light of the sideshow PuTTY put on for me to play through, I wanted to try downloading Philomena over SSH. When I first connected from Blinkie, I got a warning about an unknown host. The key was actually pretty easy to look up and verify. I put Blinkie’s SSH public key up there, but ran into a permission wall. I used wget instead. I later confirmed my heavy suspicion that wget operated on HTTPS and found it also supports a number of similar applications.

With the file downloaded from Git, I started building the tools I need to use it. I found a nice, command-by-command article on how to install both docker and docker-compose aimed at people who are not familiar with the command line. I followed the instructions, but not to the letter: I used Nano instead of vi when I needed a .txt editor, and I chose to use sudo instead of messing round with permissions and possibly introducing a security risk I don’t fully understand.

Docker went on fairly smoothly. They even have a program to verify that everything is working. Docker-compose gave me a little trouble though when I forgot to keep adding sudo.

Situation update: I got something to work. I’m operating blind right now. All I know is that I issued a command and was able to use a browser to navigate to Blinkie’s local IP with a port mentioned a few times during setup. I found what looked like a representation of Blinkie’s file system, but I’d need to double check. One thing I do know: whatever I was looking at went offline when I stopped it from the SSH terminal.

Update 2: I’m not sure where this style of updates came into happening, but I’ll go with it. I’ve done a little more research into Docker, and it looks like a sort of virtual machine –but not quite– and I think I logged into that VM earlier. I still have much to learn.

I’ve found several video series on YouTube documenting Docker and Docker-compose. With enough luck, going through some of those will let me understand what I’m at least looking at.

Update 3: Things have developed in the month or so since I went back to my other projects. I just need to call this a section and get back next week.

Final Question: How do you usually feel when returning to a project after a lengthy hiatus?

Family Photo Chest Part 1: Project Outline

Good Morning from my Robotics Lab! This is Shadow_8472, and today, I am beginning a new project I hopefully won’t burn out on. Let’s get started!

Twenty years ago, my father was tasked with scanning and distributing the contents of an old sea chest that used to belong to his father. Fast forward to the present day, and the project hasn’t even started. I’ve been building my skills the last couple years, and I think I can do one or two better than was originally planned.

Timeline: I’m burned out after three intense weeks on my last project. I’m two weeks ahead, and I plan on keeping that lead for now. After two weeks of this project, I want to go back and try getting the official Java on Micro Core. With any luck, this post will come out when that’s already happened.

I’ve been planning this project for a while now. Nothing to make a whole post about, but important nonetheless.

My intended finished product is as follows: Family members will be able to go to an IP address in a browser, search by a system of tags, and navigate to a specific scan’s page. Groups of pages will make scans of books easier to find, and comments on each picture will only make identifying people in each picture easier.

During my initial investigations, an acquaintance recommended Philomena, a Booru-style image board that fits the description almost perfectly. Their code is free and open source, and the license is compatible with what I want to do.

On the hardware side of things, I have a few prototypes milestones planned out.

The first milestone will be declared when I can manually upload an image and view it on the site from a separate connection. I am planning on prototyping on Blinkie, though almost any computer should do.

The second hardware milestone will be when I have the pictures stored on a RAID array for redundancy. During a visit to Third Workshop, I heard that these can be tricky to do myself, and there are cheap, reliable, preassembled units I can use.

The third hardware milestone will move the software off Blinkie and onto a new machine I want to build myself. I want to remove the innards of whatever RAID setup I end up getting and arrange them into a custom case with a different Raspberry Pi serving as the motherboard.

The main event of the project is actually scanning pictures for safe storage. I know for a fact that disorganized files are discouraging to sift through, so I want to write a script to handle scanning and uploading files. It will have functionality to define groups of pictures as they are scanned, as well as handle bulk tagging.

Skills I expect to learn in the near future: composite 3D printing with ABS, a new programming language, and a better understanding of Git and any other software I need to get Philomena running effectively. As of writing, I have already started work on next week’s post, so I may be cheating a little on that last detail.

Final Question: Do you have any decades old projects that just never seem to get any attention?

Product Review: Off Brand Joystick (PXN-2113 Thunder Pro)

Good Morning from my Robotics Lab! This is Shadow_8472, and today, I am doing another technology review: this time a joystick. Let’s get started!

Kerbal Space Program is a rocket simulator that’s been out for the best part of this past decade. It tackles the the otherwise daunting subject of rocket science and provides a sandbox to explore the subject on an intuitive level, often leading you headlong into thinking about real-life contingencies. As with many other similar games, it provides a highly customizable control scheme, including joysticks.

As with the Steam Controller, I am only familiar with one previous joystick from when I was younger. Any comparisons will be against that one unless where otherwise stated.

Now that it’s been a while since I wrote the last three paragraphs, and the replacement has arrived, I need to actually write the actual review.

Joysticks these days have almost zero competition. If you want a particular shape, your selection will be very narrow. Mine was between the $50 junker I got, and the $30 Logitech 3D Pro. You can find pictures online of both. I didn’t like Logitech’s high-contrast asthetics or its throttle shape, so I went with the more expensive off brand model.

My first in-person impression was the box. Chinese branding covers it. If there’s both English and Chinese, English is given secondary treatment. While I may be a little off put by seeing another language getting preferential treatment, it just means I am not part of the primary target audience, and I have a more understanding attitude if it’s not being sold of a local store shelf.

If boxes could speak as you opened them, this one would say, “Here, I got it here. Be glad it’s in one piece,” whereas the Steam Controller box would have said, “Here, let me be a treasure chest to keep your new friend safe.” (note: I do not consider the Steam Controller a friend. The quote is just what I imagine its box saying).

Safety insert written after the fact: while I was packing this thing back up for a return, I noticed one place where English was, in fact first: the suffocation warning on an internal bag. What was concerning was that it was in five or six languages, all of them using Roman characters, like English, Spanish, German, French, etc.

The overall form factor of my old joystick and this new one is basically the same: A three axis stick with buttons and a hat switch on top, with some extra buttons and a throttle down below. This new one has a fifth button besides the trigger up top and a total of six down below, which are sure to come in handy with the many, many shortcuts I’m bound to want handy while playing KSP. The new one has some kind of vibration feedback, but I haven’t felt it go off when blowing up rockets. The grip felt like it might be made for smaller hands. One final note that you can’t see form the pictures: there are four suction cups on the bottom instead of those pads that eventually come off.

I started up KSP and started configuring my controls. If the kerbals were whimsical before, now I would describe them as hilarious if I were not the one playing the game. All three main axes were just a little off center, resulting in my rockets listing, toppling, and finally spinning out of control when the reaction wheels only had a single command pod to worry about.

One of the things I remember from playing with a joystick was going into the driver and “playing a small game” to fix it in my “big game.” I now know the words calibration. Included with the PXN Thunder was a small CD containing the driver. I stuck it in my disk drive, made a face at the Chinglish phrase “soulmate to players,” and could not load it because of unsupported characters in the file path.

Undeterred, I pulled the driver file into my downloads folder and removed the offending Chinese characters. Launching the installer, I was presented with a window without an English word in it. Useless to me.

With no way to calibrate, I went back to KSP. My one complaint about the controls menu is that I have to back out all the way to the main menu to access it. Nevertheless, I was only able to keep using my new control scheme by increasing the deadzone. It took a couple days to get the bulk of my controls ready for use. Even then, I decided to wait on setting everything up until I got the new joystick.

I’ve been using the joystick for a couple weeks tops now, and it’s already showing wear. The accessible portion of the throttle has been dying from the middle out. As of writing, I think I can access about the bottom quarter and the top sixth. Additionally, one of the buttons on the base isn’t coming out all the way anymore. I might also point out that that extra button on the top, labeled 2, also doesn’t have anywhere near the click that any of the other buttons have. If anything, it’s been moved to a spot on the base right below one end of the throttle. Is it supposed to do that? I have no clue, but there aren’t any buttons there.

In conclusion: Do not buy this product if you can’t read Chinese. Even if you do, consider getting something that will last longer. You’ll end up saving money in the long run because you aren’t buying as many replacements. Neither the vibration feature, nor the otherwise circular throttle was worth an extra $20. The case is entirely plastic, in some parts it feels extra cheap. If I were given the Steam Controller and this thing and a list of their respective prices, I would have guessed this was the $5 one and the Steam Controller was the $50 one. My only guess is that this product was hit hard by American tariffs on Chinese goods. It is going back.

I would give this a one star out of a possible five.

Final Question: Have you ever bought something with a higher price tag expecting more quality, only to be let down?