Minecraft Server, Week 4: Progress Backup

Good Morning from my Robotics Lab! This is Shadow_8472, and today, I’m aiming a digital nuke at my progress on this project thus far. Let’s get started!

By the time this post goes up, I hope to have finished the whole project. As I write this post, it’s a little less than a day before part 2 goes live. I feel like I’ve made the least progress in terms of building a product, but I feel like I’ve made the most in terms of learning.

To recap: Part 1 was about assembling the hardware, Part 2 was about picking and installing Micro Core, and Part 3 was about trying to install Java and some of the things I learned that segment.

My goals for this statement only involved backup and later recovery, possibly in time for a quick transition to a working server. On one trip to Third Workshop, I spent a lot of time pacing and writing things down for what I want to save. I copied those over to a directory in a hard drive and even started on a script to automate their unpacking.

Back home, I found my files were missing. Lesson learned: Don’t trust Micro Core with things you want to keep unless you’ve finished setting it up. They will vanish unless protected.

I’d often have two or three topics I’d bounce around between. While looking for files to save, I went searching through the manual and found a more complete set of boot codes so a few things can live on my hard drive proper. While I’d love to do some possibly destructive testing around with the included file backup tool, I cannot risk it until I’ve finished my backup tools and mitigated the risk for when something breaks hideously.

The exact directory and file you can find your boot codes will vary depending on your bootloader. The Tiny Core Linux wiki has pages on a few of them, and if you ever need to know yours, try using the command “sudo ls -ra / | grep <loaderName>”. Sudo keeps you from getting a bunch of error messages from trying to look in a directory your default user account doesn’t have access to. The ls command forms the core upon which the rest of the command is built on. It means to list the stuff in your present working directory. Options come next with r meaning recursive, or all sub-directories, and a searches everything that’s hidden as well. The pipe symbol, |, acts like a funnel, taking the output of the ls command and feeding it into the next element, grep. Grep sorts long batches of data so it only displays lines containing <loaderName>.

I added a few more boot codes, tying several directories to the SSD. During this time, I learned a lot about what is supposed to go where. If I couldn’t find the answer to a question, I’d reach out to whatever help I could reach without making additional accounts. I almost made one for the Tiny Core forums, but I shied away when it would have involved logging in over an unsecured connection. My guess would have been that the site is so old they never bothered, but I think it’s just the admins not caring.

Progress overall was slow. It took me a day or two to figure out how to properly mount a drive and similarly “umount” it. (The n was left out in favor of a slightly shorter command to type.) It took a live chat session with a knowledgeable person to convince me I was looking at something in /mnt I now believe to be a mountpoint and not the automatically mounted drive.

With an ironically stabilizing system, I once again started development on my script. Each time I went to access it at /mnt/sdc1/restore.sh, I had to use sudo to get through an ownership blockade. Plus, with the geometry of the room, I wasn’t all too sure if one of our dogs was going to march right through the thumb drive. I also kept getting errors involving permission –and later ownership after I discovered the -p option– when trying to copy files there.

My next lesson was about how some disk formats don’t support Linux/Unix style ownership. FAT32 is apparently one of those formats that can, at best, only be faked. Since I was dealing with files owned by both Shadow_8472 and root, I’d need to empty off another thumb drive and research a format for them, or find another way to preserve permissions.

I must have reached out to three, four, maybe even five places for help. Somebody suggested I make a tar archive. I figured, “why not.” After all, I would be dealing with a tarball containing Java anyway.

Tar is an older piece of software with a bit of history. Its name stands for tape archive. Webcomic strip XKCD even ran a strip where they teased it for being so convoluted that sysadmins who have been using it for fifteen years still don’t know it by heart — and those commands were already fifteen years old when said admins started using them!

There are more than a few misconceptions surrounding tar. Just because something is archived, doesn’t mean it’s compressed. Zip files popularized that notion. Compression is basically squishing out repeated bit patterns for convenient transport. Archiving collects several files like papers ready to be bound into a single book. The two processes complement each other nicely, usually giving you a single file that takes up less space than the original files in their entirety.

I have no idea of the full power of tar. I just know that it has loads of features, but most of its users will never use them. I can’t help but wonder how many are totally obsolete, but included for lack of an update, or to maintain backwards compatibility.

Armed with these pieces of knowledge added to my collection, I wrote a pair of scripts to grab an arrangement of files I think I will need when I rebuild. I do have it setup to reinstall Nano and Opencss from the repository, but future versions, if needed, can be migrated to be part of the backup along with files that include things like encrypted passwords, boot codes, the whole Minecraft server directory, and more. It all gets copied into a temporary directory, turned into a tarball, and the temp directory removed.

During development of the backup and restore scripts, I stashed a copy or two on Blinky for safekeeping. I would have used one of my Windows machines, but it was just easier and had the same result to use scp to move the files over ssh between two Linux machines. I also noticed PuTTY having some interesting results when using the cat command to concatenate the contents of a file to the terminal. Normally, it keeps track of who you are logged in as to where and what directory you’re looking at right now. It would seem Raspian keeps track of that for you while Micro Core does not. I also found that using cat to show a binary that isn’t in text form could end up sending a command to PuTTY to change the window title, and even corrupt the header on the command line.

And that about brings things up to date. I changed permissions on the scripts so I have to run them as sudo, but while doing so, I accidentally removed one of them. I just so happened to have a backup courtesy of Nano… somehow. I ended up restoring from the Blinky backup, as it was more recent.

My next step is an irreversible one. I need to drop the nuke and start over with what I’ve saved. With any luck, the next post will be the full rebuild, ending with Minecraft running on Micro Core.

This (half)week’s idea sounded simple enough. Just copy the most important files away from the mess I created when I tried to install Java. One required skill snowballed into another, and before it, I had learned a whole slew of skills needed to slither along in the command line.

Final Question: I’ve been dealing with a lot of old computers lately. How old is the computer or other device you’re using right now?

Minecraft Server, Week 3: Java

Good Morning from my Robotics Lab! This is Shadow_8472, and today, I am once again writing well ahead of the actual publication date. Let’s get started!

As I start this post, I’m still in week 2, and I might even finish this segment in week 2, depending on where a good stopping point is. The following events started early in week 2.

Last week’s post covered installing Micro Core, all the way up to and including a corrupt install of Java. I’m discouraged. I was just one… three… several steps away from finishing this project within my projected timespan of two weeks. I want this server up, but it’s more important to finish correctly. But timetables are near-impossible to stick to when you’re also learning how to use a computer again as if for the first time.

The command line is very different to using a GUI. It’s not toddler friendly, and it requires a ton of memorization. File systems, commands, command flags, file names; during one of my Third Workshop visits, I learned the man command, which brings up a manual for most commands. Micro Core has external documentation, likely for space concerns, so it’s off to the Internet for pretty much anything I don’t get.

Botching the Java install made a big, old mess, and having two copies of the Minecraft jar file made it more awkward when an obsolete backup got involved. I made the decision to nuke the OS and start over. But I didn’t want to just cut it off right there. If I need to start all over, possibly several times, I’m going to want to keep at least some of my progress, after all, I have SSH access from no fewer than three machines, all nicely set up with each one’s public key.

I took it under advisement to start writing a script to rapidly move back in case I need to redo my setup several times. Even if I never use it though, I’ve still learned a lot by dissecting my own work.

For starters, I spent an afternoon and early evening working at a trickle, writing down elements I needed to save. I moved them all to a thumb drive located at /mnt/sdc1, and found I had lost all my progress when I got home and plugged everything in. At least I have a picture of the tiny whiteboard I was taking notes on.

Mastering persistence is one of the greatest and most important challenges to working with the Tiny Core family, alongside finding someone who knows how to do the thing you’re trying to do in a close enough circumstance. With most available documentation aimed at baseline computer-literate GUI users, a GUI native lost in a CLI world has to sift through multiple forums and documents to find relevant answers. If I had to guess, I’d say it feels like a quarter of the Tiny Core help out there talks you through different menus of the default programs while maybe one out of sixteen is a Micro Core specific way of doing things. Note: I think it’s actually closer to one out of eight GUI special tutorials.

Investigating persistence, I learned a lot about the file structure: too much to regurgitate for review here all at once. I’m not even sure it’s even fully digested. The root file directory has a bunch of files, each with an intended purpose. When I reinstall Java, it’s going in /opt, for example. TCL has a special directory called tce where all the packages go for reinstalling everything on bootup. There’s also some network of links I haven’t even begun to explore; I just know they make it possible to pull off running the OS from a couple different files instead of having everything scattered everywhere.

Vanishing files had me for at least a couple days in parallel with other issues. I read that writing files to physical drives makes them persistent by nature. After my work went poof from my USB stick, I toyed with the umount command a bit more. Nothing worked. Eventually, I came across someone on a Discord server who gave me a working example, and made a whole day feel almost worthwhile. I was able to correctly mount my USB drive and edit its actual contents instead of filling a bubble in RAM somewhere to be flushed out when the power goes out.

Sometimes, I don’t even know if something is a general Linux question. My file system has both sda and sda1 as valid directories to look through, even though I have an sdb1 and so on, but no plain sdb, or a plain sdc when I plug a thumb drive in. This one, I don’t know for sure yet, but I think it has something to do with a bad bootcode, where I referenced sda. Now it’s in my fstab (file system table) file and it shows up every time I boot.

Things are all messed up. I just need to nuke it and start over.

Final question: Working with Micro Core has been fun so far, in the same way a video game can be fun, even if it’s super difficult, provided the rules stay the same the whole time. I can constantly feel success in my fingertips, only for the next challenge to pop up over the horizon. Have you ever applied skills you learned while at play in a more serious situation?

Minecraft Server, Week 2: Installing Micro Core Linux

Good Morning from my Robotics Lab! This is Shadow_8472, and today, I’m continuing work on a server that can take a bit better care of itself. Let’s get started!

Installing Micro Core was a whole unexpected challenge. I learned how to use a few of the boot options, but actually installing? The drive needed to be formatted, no doubt. I eventually gave in and turned to Ubuntu to format the drive. Doing my research, I went with ext4. I later found it was one of the top picks for SSD, but one of the worse ones for USB drives. I won’t pretend to fully understand it well enough to explain, but I think it has something to do with SSD having a limited number of read and write cycles per sector of the disk. The wrong format can overuse one part of the disk and wear it out prematurely.

Since I was booting from a USB drive, the installer I downloaded was having trouble finding the files to install — it may also be because the OS boots so fast, it doesn’t have time to wake up again after copying to RAM. I tried several approaches, including putting a separate disk image on the thumb drive and and failing to locate its path until I just told it to download the install files from the (N)et. Small joke was on me when Micro Core wanted to format its destination drive again.

While I was doing that, I took another look at just how much space I’d actually need, and an archive of several past servers was only 7GB. I removed the HDD with Ubuntu from any plans for this server and possibly onto another future project I’m not ready to announce.

Trying to learn Micro Core is like trying to learn Linux all over again. Imagine visiting a colony, be it a historic colony in the Americas or a futuristic colony on another planet. Each distro would be like a different family. Some distros are closely related so as to be in the same extended family, while others barely ever see each other in town hall meetings. Tiny Core, and by extension, Micro Core Linux feel like they’re across the town from members of the Debian and Ubuntu family I’ve previously met. While the file system feels similar, the shell and default text editor paint a completely unfamiliar face to look at. (Later edit: the Tiny Core family is a fork of a distro known as DSL, which is a fork of Debian, so the more I get to know the distro, the more familiar things show up.)

To date, I’m only familiar with the Bash shell and Nano text editor. Both provide a relatively open and friendly user experience for anyone not afraid of the command line. The Tiny Core family did not build its command line for people afraid of a text interface. With size and speed as priorities, ease of use isn’t given as much priority. The Ash shell is faster and slimmer, while Vim text editor provides a lot more customization opportunities.

Vim scares me. I had to spend hours just trying to figure out how to move around, and now, the only thing making me even consider keeping it around is the difficulty of adding Nano in.

Apt is the usual way you download programs in Linux setups I’m familiar with. Tce is its less well-known counterpart I have to work with. I’m having trouble learning it, likely because I’m looking first online and only looking through the PDF that came with that documents Tiny Core. It also doesn’t help that most TCL documentation seems to assume you’re working with a GUI.

Insuring Nano was properly installed was tough. I spent a whole evening trying to problem solve, thinking my install was corrupt. The best I could figure out was that I had installed Nano while booted to a thumb drive, but it saved to a different place. When I tried to fix it, tce told me Nano was already downloaded and installed while it was unavailable on the command line. A total of three drives were involved, including my first Linux project running Ubuntu MATE.

I tried bailing, but my attempt to wipe Micro Core failed due to the drive being mounted. I wasn’t able to “umount” it (note the lack of the expected first n in umount; that alone took me between half and a full hour to get). And here lies one of IT’s more haunting nightmares: things working when they reasonably shouldn’t. I came down before bed for a last shot at solving a possibly corrupted path somewhere, and Nano decided to work without either the Ubuntu HDD or the installation thumb drive. Nano has since been stable.

SSH is the next step, but I took a little cut in line for Java. I learned a lot during this period. Working with Micro Core, and I’d assume Tiny Core too, is all about managing persistent files. The OS is small enough to get away with basically reinstalling each time, so unless you protect your data, everything is effectively a temporary file. With that said, I doubt I’ll fully understand what all is where until I finish a second or third project. For all I know, this was just a case of Micro Core repairing itself.

From what I can tell, MCL is one of the few distros to ship without a SSH client. I’ll be using OpenSSH. After a full day of slow learning, I followed a list of directions, somewhat following what was supposed to be going on, only to mess up on the last one and have to start all over again. It went a bit faster this time, and I understood even more of what I was looking at.

Moving along into the final stretch of this week’s planned scheduled progress, I’ve downloaded the Minecraft 1.14.4 server file. Let me tell you: the world is not friendly to CLI denizens (denizen: person living in a place they are not a citizen). I had to search hard for how to download anything, and when I found a couple old blog pages pointing me to a little program called wget. They each provided an old URL that no longer works, even if you update the MC version numbers. The official server download page includes a 40 digit number in hexidecimal.

And here, I admit to cheating a tiny, little bit. After failing to manually copy the URL, I turned to my work on bringing SSH online. A quick paste, which for some reason works with a secondary mouse click to a PuTTY window, and the correct URL was woven into the command.

I realized I had only downloaded the Java installer. I spent the day trying to unpack the HTML for the download page as if it were the actual compressed Java tarball. The shell script I found directed me to a URL, and I thought that was the actual URL to plug into wget. The -O option I used robbed me of a vital clue by overwriting the file name and extension. Something worked, and I didn’t realize it was the wrong thing until I used Nano and read the code for myself.

I wasn’t too sure where to stash Java to make it go, so I put it in with the extensions so it wouldn’t disappear while rebooting. I don’t know what happened after that. I ended up with too many symbolic links between files, likely from recursion somewhere. A reboot broke Java. Things are just a little too messy now. I don’t know what’s what anymore. This job isn’t over.

Final Question: Have you ever gone out looking for instructions while the answer was there in front of you all along in manual form?

New Priority: Minecraft Server

Good Morning from my Robotics Lab! This is Shadow_8472, and today, I’m setting up another Minecraft server, but this time, I’m setting goals a bit higher than usual. Let’s get started!

I am after an automated, headless, dedicated Minecraft server. That means I want a machine that only runs Minecraft, and nothing else. The machine itself will live in a network closet or somewhere where it can have a power cord and Ethernet while I use SSH to get in to change things. I don’t want to have to babysit it, so I want to write a script or two to manage the whole server. The whole idea is to get the maximum amount of performance for Minecraft while spending as little as possible on the OS and other supporting software.

The main bottleneck is RAM. I have 8 GB to work with for now, and that’s fine for running a survival world and a creative world at the same time in Ubuntu, plus a couple tabs in a browser. Both this machine and Derpy have historically been used to host Minecraft servers, but I want to consolidate any running servers into a single machine. To that end, I’d like to see if I can comfortably run three or four servers at once.

Distribution choice is a little more important now. I’m after something as light weight as possible. Unlike the past several months, I’m actually doing progress reports as I go, so I don’t actually know what I’ll have when I’m done. I’m seriously looking at about six distros ranging from Ubuntu Server to Lubuntu to Puppy Linux.

A family Minecraft friend who will likely be playing on the server brought up Linux From Scratch. It’s a resource for compiling your very own distro. It looks fun; it looks educational. I looked up a couple video reviews of it and decided it looks one or two years down the line for me. My goal is two weeks here, and hardware challenges are starting to make me think I may already need to double that.

It turns out there are a bunch of tools for people who want a little more involvement with what’s in their operating system without wanting to go into source code level of detail. All the ones I looked at either have their domains up for grabs or are otherwise obsolete.

There was one more distro this friend brought up: Tiny Core Linux. It aims to provide you with only what you need to get started with a wide variety of projects. To paraphrase their stated goal: add what you need, not demolish what you didn’t ask for. After poking around a bit more, I found another version on their site that nixes the GUI. It’s not like I even wanted one for this project anyway. Micro Core it is until further notice.

I remembered how Derpy used to have this SSD it supposedly used to improve make things go faster. It’s not like it was being used, so I thought maybe I could use it as part of my little project. So I opened Derpy up and pulled it out.

Different computers with open architecture have different schemes of making sure everything stays where it’s supposed to. When I installed Derpy’s present SSD, I didn’t have the correct part to mount it on, so I just put it on what I had and let it be. With the HDD to SSD bracket being freed up, I went ahead and swapped things around. It just took a while to figure out how to get the bracket off.

With the brackets finally swapped, I moved Derpy’s old 60 GB drive to my project computer case and connected it with a SATA cable I had laying around. I think it may even be the one it originally came with. Power was similarly available within the case, but I had to remount the SSD to another position within its bracket so it could reach.

Trying to mount Derpy’s SSD with Puppy Linux

Backing up a little, before I started seriously considering Micro Core, I burned a Puppy Linux live CD. Puppy Linux is another one of those small distros that comfortably loads into RAM.

It’s funny how the sound of a CD drive made me smile. It used to be the sound occupying the boring period between when I started computer time, and when I started actually playing.

I rejected Puppy Linux after I saw office software as well as other stuff I didn’t need included, like a whole GUI environment. Nevertheless, I still used it to verify that I had everything hooked up correctly. It took a while, but I happened across a utility within Puppy that left no doubt. I spent a while trying to see if there’s anything on the drive before I eventually asked my father and he went ahead and told me to just format it.

I know I said I was going to do a more update-style post, but this is running into a longer entry, so I want to split this one. It provides a natural-ish breaking point about here. While I thought I was going to need about two weeks, as of this writing, I’m thinking either three or four weeks total work may be in order. If I break things up like this, I may end up with even more parts. That, or I just spend some of those weeks not doing much but learning what to do next.

Final Question: Have you ever messed around with otherwise junk to turn it into treasure?

Two Small Projects

Good Morning from my Robotics Lab! This is Shadow_8472, and today, I did a couple housekeeping projects. Let’s get started!

Things are still settling from the fire. I did a followup to last week’s post on FimFiction, but I was able to come up with separate content for the two this week. Check it out if you’re interested: Post Evacuation Shakes.

Also of note: the workshop I’ve mentioned every so often is now officially open. They’re called The Third Workshop. I’ve been going there regularly for quite a while, working on whatever project I want.

Finally to the topic for today. I went to Third Workshop today while some strong-smelling chemicals were being used as part of the smoke cleanup. My stated goals: write a Bash script to setup Blinkie for testing code related to my OrbitCam project, and to get Blinkie to connect to any familiar WiFi network while headless.

My first project was almost trivial to write. I’d include it here, but I still haven’t figured out how to do a block of code.

The first line told the OS what interpreter to use. The second and third lines prepare the virtual environment, and since I was feeling adventurous, a fourth line changes directory to the folder I’m working in.

I added execute permissions to my script and went to test my script at the command line with “./OrbitCV”. It ran for a few seconds, then spat me back out to the exact same place I was in before.

My first thought was that it didn’t work for some reason. I tried renaming it to include the .sh name extension, but changed it back when I read the “hashbang” comment at the beginning already took care of that.

A relevant article had a couple typos, one involving a snip of code. The article was aimed at beginners. I sent some feedback.

My eventual theory was that stuff was actually happening, but it was being thrown away afterword, giving me a net of zero progress. Further reading and a couple tests confirmed that Bash scripts start new “shells” within one another like Russian nesting dolls. Reading a little further, I read about sourcing a script with “. ./OrbitCV” so it would run in the same shell.

My conclusion for now is that shells can be pictured as a computer streams of thought as managed by sets of parentheses. Likely not ideal, but I’m working with it for now.

My other mini project promised to be more difficult, but was similarly simple in the end. Blinkie, or at least Blinkie’s SD card the operating system is running off of, travels back and forth, but I’ve had difficulty getting it to automatically connect to a single WiFi network at once.

One of the great things about Third Workshop is that you aren’t often alone alone in your projects. If you are doing something new to the workshop, certain toys tend to appear. One such toy was a counterpart body for my BlinkiePie computer. Skill sets of those around you tend to expand to help you as well.

This time, I ended up on a small bit of a chase. I looked into solutions involving prioritizing what network to connect to. Two or three possible solutions later, I took a look at /etc/wpa_supplicant/wpa_supplicant.conf. What I saw reminded me of NBT data from Minecraft.

I saw each WiFi network Blinkie had ever connected to represented with a name, plaintext password, and another line I don’t know much about. The fourth line on most of them was what interested me the most: disabled:1.

Based on my own observations in the past, events in the present were not making sense. If what I was seeing was what I thought I was seeing, I should just be able to comment out the lines and have it work. I tried just that, and set Blinkie up at home, sans head (the glue didn’t hold the head) and without tightening the screws holding the board in place. Would you believe it just worked like I wanted for once?

Final Question: Have you ever taken on a tiny project you knew you could finish just because it would help with self-esteem?

My Week as a Fire Evacuee

Good Morning from my Robotics Lab! This is Shadow_8472, and today, I’m covering something a little different. This post is cross posted on my Fimfiction writing blog. Let’s get started.

Fuel. Air. Spark. Master any one of these elements during a combustion process, and you have one of man’s most important tools. Neglect them together, and you have a recipe for a destructive force of nature.

Last time we went through a nearby fire, we spent a week under evacuation warning. Our two cars and van were loaded with our most irreplaceable positions: pictures from growing up, souvenirs from trips we’ve been on, computers we’re basically paralyzed without nowadays.

Day 1

It was Sabbath morning. I was getting ready for a special church service to celebrate a major anniversary with a speaker from the North American Division and planned activities all afternoon. I was looking forwars to helping on sound.

I was still at home when I got an Emergency Alert System warning on my phone. At first, I thought it was a sick joke. Wilefire had come nearby a couple years ago, so I sort of had an untouchable mentality. Another alert came through. I was desperately hoping it was basically a “never mind” type thing. No luck. Spanish translation of same alert.

Needless to say, the church service was canceled. I mentally shut down, scared, while others around me hurried to pack for who knows how long. After asking for prayers from different Christian groups online, I was able to help with some things, but not others. After wrangling the computers, I started collecting sentimental items as impulse grabs, ignoring restrictions on bringing both Derpy and my other Linux server.

The idea that I may be coming home to a pile of charcoal and ash felt unreal. With only two operational vehicles, the massive photo trunk from my grandparents’ house had to stay behind. People, critters, and basic necessities tend to trump things like that when faced with a knapsack problem like this.

With our payload set, we set off down south toward San Francisco in heavy traffic as literally everyone fled along with us. It took hours longer than usual to reach the city.

We heard from a friend to save any and all reciepts. Insurance may cover “loss of use,” basically anything extra we spend because of being evacuated, we can get reimbursed, but only if we have the reciepts. We missed one tank of gas, but after that, if we got a paper documenting a purchase, it got stuffed away for later.

Saturday night, we crashed at our grandparents’ house (not the ones with the chest) with four cats and three dogs, two of whom are service dogs. We spent the night safe in relative discomfort.

Day 2

I normally sleep until 10 AM. My grandpa likes to get up early for a walk. I like spending time with Grandpa when I can. I got up earlier than usual, setting a pattern for the next several days.

Sunday evening, we spent looking for a place to sleep that accommodated all our special needs: three beds with at least one in another room. There weren’t any available; everywhere was already filled up with fire evacuees. We even shared a couple sodas with a fellow evacuee family with small kids.

One place said no vacancy, but they were converting to more of an appartment model. They might have worked, but we would have shared a wall with someone who’s scared of dogs, and we have two service dogs.

We eventually crashed into this “newly refurbished” motel. It was clean. If first impressions were everything, they would have had my stamp of approval.

We ate out for most meals on the road, and supper was actually a pretty tasty potato-based lasagna from a Greek restaurant, at least for me.

Night 2

This one gets its own section. Remember that motel? While we were first evaluating it, my sister had a few concerns. Even the tail end of my first impression before supper was a bit sketchy when one of the comforters had a little oil on it from when it fell on the parking lot, or so said Rose, the lady working the place (name changed to protect her identity and because I honestly don’t remember).

also gave us a hard time about an extra $10 for having dogs in the room. “That charge is illegal,” we told her.

We went back and forth a few times. From her point of view, Rose had a boss who would be ticked if she dropped the charge, and as my sister put it, she “took the moral high ground” saying we should be grateful they were accepting our dogs for just a low cleaning fee.

I looked it up while this was going on, and I found something I was not expecting. According to the document I found on ada.gov, service dogs MUST be accepted and MUST be exempted from any animal fee, but a cleaning fee is permissible, so long as a non-disabled person would be charged the same fee. I was not expecting that one.

NOTE: later in our trip, I took a closer look at that document, and found it was replaced by legislation that exempts service dogs from normal cleaning charges as well.

We had to book two rooms, but the more time we spent there, the less sure we felt. The kitchenette refrigerators made a horrendous noise. The outside doors felt as light as an interior door, and had half a key and chain lock system between the two rooms.

Things only got worse after lights out. For reference, I was in the single bed room alone. I found my bathroom door wouldn’t close for getting stuck on the tile floor. Back in the main room, the front door was warped, letting in a ribbon of light. I lost count at five times checking to make sure it was actually latched.

With everything adding up, I didn’t feel safe enough to even get undressed for a shower. I didn’t really want to trust the sheets either, so I planned on just wrapping up in my polar fleece space quilt. Comet, my service dog, had his mat from home, and I moved it closer to the door.

Comet, is usually a good boy. He must have noticed I was feeling scared, so he about insisted on doing a “Jump on” to the bed as I was working on last week’s robotics blog post. And no, he wasn’t going to settle for anything less than full body cuddle when I normally have to insist. Normlly, I’d correct barks at strange noises, such as someone else checking in, but that night, I didn’t. I actually found it a bit comforting.

Day 3

A car alarm woke everyone up around 5:00 am. I made it back to sleep for a couple hours. I found out later that I was the only one.

Comet had stayed cuddled the whole night. Even though the place looked warm and inviting again with the morning light, I would not be caught re-entering my room after leaving it. I rejoined my family to regroup while things were packed after our one night there.

I would not consider staying there again. Eventually, the fridge got to me or something, and I left that room as well, opting to study some of the succulent hedge plants they had growing. Different buds of even the same plant were at different spots in a cycle of growth. I found the fractals interesting to look at.

We ate out for breakfast, and traveled for a place to stay the next night. Most of our travel time, I was riding in the car with my father. I had recently gotten this exponential numbers game on my tablet, and I have a really weak spot for those. Normally, it would have been a bad thing for me, but a simple game that’s remarkably battery friendly was just what I needed.

That night, we found a two bedroom suite in a hotel chain we like. For some reason, we only booked one night there and made reservations in a similar place nearby.

We heard on the way to the first proper hotel that one of the pools was out of service. We were a little relieved when our one-night place didn’t have its pool open. Wouldn’t want those three swimsuits I ended up with to go to waste! Impulse grabs.

Supper, we went to a Siam/Thai place just as they were finishing for the night. Minutes remained until the cook was going to leave, and I made a recommendation we all have my favorite dish from when I went on mission trip to Thailand: pad thai. I didn’t get too good of a look at the menus, but I think I would have gone for an option other than orange sauce. But that food sure tasted authentic!

One of the other patrons had a problem with dogs, and the owner asked us if we could move outside making for another ADA surprise. I decided to take that closer look later. It didn’t come to anything, but the owner was much more diplomatic than Rose.

NOTE: While I later found that when someone with a service dog and someone with dog problems must be in the same area, such as for a work setting or an evacuation center, they should be placed in separate rooms or opposet ends of the same area if possible.

Day 4

I got myself up for the hotel breakfast in the lobby full of stuff I rarely get at home. Personally, I had a big waffle on one plate, and two English muffins with scrambled eggs, cheese, and salsa on my other.

Travel details get a little fuzzy as to which day what happened, but I think this day was the day we went shopping. I stayed in the van, and a backup alarm really messed with me to the point I had to get out of there. I had planty of time to dash away from there so I wouldn’t have to keep getting overloaded by that painful noise.

My sister kept me safe, pointing out that the vehicle backing into the spot next to us could possibly have stepped on the gas instead of the break. She convinced the driver to park in a nearby spot. I don’t remember much else, except that the driver didn’t seem to understand and I was playing my game, like usual.

We got to the hotel we were planning on staying at for the foreseeable future. I made myself at home as best I could. My room had a small desk, but that didn’t keep me from squeezing my dual monitor computer setup onto it. I didn’t ever get a good mouse pad, so I was always fighting it. I set my moon lamp I got last year as a birthday gift on a bedatand. My quilt really brought everything together.

The pool was closs here as well, but there was a weekly grill by the courtyard firepit. It was quiet, not too many people were there at once, and the lady grilling enjoyed her job at the hotel where she could meet people.

As a vegetarian, I didn’t gorge myself on the grilled chicken, but the potatoe salad and barbecue chips were tasty. I had a good time.

Supper was a homemade soup. The bowls that came with the room were tiny, but it was all good.

Day 5

This was a much needed down day. We still weren’t sure if we’d be coming home to a pile of ashes, but I still got myself up for a similar breakfast with four small waffles. My sister and I took food up to our mother since she wasn’t feeling the best.

This day was very much needed. With the decor I imported, I could easily see us living there for anywhere up to a week, as some estimates were landing us.

I pretty much spent the day watching YouTube I could use for trivia fodder later. I also caught up with the protests Hong Kong is having over the premature erosion of their democracy. Eventually, I even managed to write a sentence or two toward my next FimFiction story about Cheerilee.

For once, I don’t remember supper! Probably because it was a disorganized jumble involving cheese, crackers, and leftovers.

Day 6

Halloween. Breakfast was the same fare as before. They had a skeleton in a scrub working the front desk. I was informed “Slim” wouldn’t be working there for too much longer because didn’t meet the dress code.

It was also the day we returned home, as insurance wouldn’t likely cover anything that wasn’t part of the mandatory evacuation. I was supposed to ride shotgun with my mother as she was feeling a little better, but not so well as to not want a backup driver.

Remember when I said I usually sleep in? Well, at the university, Ilearned that I can get up early for breakfast, but doing so for long periods tends to make me fall almost asleep for an hour or two; I was useless for packing, especially when a stereo on wheels parked itself outside our window.

We split up for fetching our critters. While I really wanted to help with our cats, I ended up with the car, picking up our pet dog. She came back all nice and groomed and her sitter gave us the nnews that our little diva held out for the raw beef the other dogs were having. So much for kibble ever again.

Smoke. We got home hours before the van. The firefighters saved the vast majority of the town, but the smoke was terrible, and I didn’t know which N95 mask was mine, nor did I know where an unused one was.

Inside the house was about twice as smoky as outside, so we aired it out. Seemingly long stretches of time are reduced to two single words: unpleasant, and smoke.

Our next objective for the evening was to obtain air improvement devices. While I would have rather personally joined in on the search, I stayed home in case the utility company came by to turn our gas back on.

I ended up orchestrating some smoke-quality furnace filters and a few HEPA filters for in-room use. Coudos to the store manager who ordered extra furnace filters in anticipation of the sudden spike in demand. We got six. When they arrived, I decided to layer one with a lower quality filter so the good one could do its job of catching finer particles better.

Supper for my mother and me was a nicely sized pizza. I called no fewer than three or four places before I found an open one, and when I did get one, it was a 45 minute wait. Turns out they had the orders of three locations being forwarded to their place, and a bunch of hungry evacuees were returning.

We did get one ser of trick-or-treaters. After I had to turn them away, –the porch light was on for the utility guys– I made a sign explaining things.

The gas did not appear that night, so I was double glad I had a shower that morning.

Aftermath

We spent the night with filters going on max in our bedrooms. When we got up, the smoke was pretty bad in the rest of the house. Ever since then, I’ve been scared of smoke damage seeping from the walls and ruining our lungs. I can’t wait until a professional comes through and tells us what needs to happen of if we are all good. I doubt I’ll be able to rest fully until then.

Throught the whole week, I don’t think anything really felt real. Not until I saw a map of the burn zone reaching within walking distance. The evacuation gave the firefighters the room they needed to save everything they did. Maybe it still isn’t real to me even now. All I know now is that since getting home, I haven’t been able to get the initiative to get fully set up again in case we have to leave for any reason.

Just because there’s a disaster going on doesn’t mean your whole life just takes a pause. Sure, I wasn’t able to meet up with a friend who otherwise would have come through on Sunday, but I still made contact with people I normally do online, just not as frequently. I’d like to thank everyone who prayed for us and the first responders. God really took care of us this week. As of noon the following Monday (daylight savings time is over, by the way), the evacuation warning is over, but not all the fires are out.

Lessons we’ve learned this past week: first, keep all receipts during an evacuation if you even think you have loss of use, and second, call your insurance adjuster on your way out. They can help you find space for you and boarding for any critters.

Final question: have you ever lived through a natural disaster? Ever been evacuated for one?

Haystack of Activity

Good Morning from my Robotics Lab! This is Shadow_8472, and today, I seemed to do a little bit of a lot of stuff related to working on with a Raspberry Pi. Let’s get started!

Stated project goal: Develop a tool so I can code with my laptop, but execute on Blinkie.

I went into the workshop relatively early today (Sunday) with my stated objective. In light of my fragile case being fragile, I elected to just take my SD card “solid state drive” in to see how my setup reacts to different hardware running things would act. There were some interesting results. The following sub-projects happened concurrently.

The first project was setting up the new Raspberry Pi 3 B+ the workshop has to mirror my setup. It came with a metal case —titanium if I remember correctly— and I got to assemble the ting. There’s just something about a proper case that just feels right. As soon as I slid the board in, so satisfying with it fitting perfectly.

The case doubles as a heat sink, complete with thermal paste. While I want to do that eventually, I decided to wait a while until I’m ready to seal the case for good. I have two ports I intend to use within the foreseeable future: the camera port and the GPIO port. Both have slots in the case to accommodate the relevant cables.

The GPIO port was the first to go on. Since I really didn’t want to mess anything up, I didn’t use enough force to seat the ribbon cable connector correctly, and couldn’t close the case. I tried looking for a way to test for an electrical connection, but ended up probing the female connector with another part and verifying it could take the whole length of the pins. I pushed a bit harder and managed to get it in there.

The camera port was more straightforward. Same as before, I just lifted the little plastic piece, inserted the comparatively narrow ribbon cable, and pushed down to have the port bite down. On the other end, I sat a Pi camera for testing purposes.

In the best case scenario, the cables would barely poke out of the case with maybe an inch or two to spare, and I could just connect to external ports like they were on the board itself. No such luck here. In testing, the camera failed to take a picture because it wasn’t detected.

My second project was backing up my SD card. I found a utility to make an image of my card. It wasn’t the best coded piece of software; it refused to make a new file to save to, but I renamed a new .txt file and got it to work. It took half an hour, during which I worked on the other projects. I did not have a spare SD card to test the image on, but there was a warning about similarly sized cards being slightly different sizes when they’re from different companies, and not to try applying a larger image onto a smaller card.

My third project was testing how the workshop’s Pi handled running my SD. I expected the MAC address to be different, but otherwise nothing else. I was close: PuTTY warned me about a different host key, and had me log in with the password the first time, but otherwise didn’t have any other software problems. I had to let it to connect to my phone, but that gave me an idea for my next mini-project.

My fourth pseudo-project was just some general knowledge base maintenance. I had a few questions, and not all were answered. I connected both Blinkie and my laptop to my phone, where I would expect them to work similarly to a local area network. I used traceroute from Blinkie to my laptop, but ended up with over 30 hops. Yikes! Honestly, I have no clue what’s going on with this one just yet. I still need to look up the difference between a hotspot and a more conventional router. For all I know, it could just be no discovery turned on or that it acts more like a gateway to a larger router. Possibly both.

Final Question: What do you do while code is compiling or otherwise waiting on a computer to finish?

Blinkie Pie Case Repair: Stage 1, Part 2 (of 1.5)

Good Morning from my Robotics Lab! This is Shadow 8472, and I am never using Stage/Part sections again. Let’s get started!

Last week, I tried super gluing Blinky Pie’s base back together with unpromising observations. After two successful runs gluing segments of an interrupted print to its own raft that I somehow still had around, I went on to the main event, but it failed hard with the broken tab springing away from its base.

I hardly touched my project all week.

Sunday came and I forced myself to work on it. I was expecting to clean it off with some acetone and start over again, this time with the baking soda method that gives the super glue something to latch onto.

I pulled my project out and took inventory. I was surprised to find that not only had the broken piece returned to its proper seat, but it was holding up to a semi-reasonable amount of pressure. No way am I stress testing it, but I’m hopeful this case will continue to serve me for a long time to come as will be.

I set the base aside, then had help from my father tending to the top half. I took the camera out last week, so it wasn’t attached to any electronics or anything. As it stands as of writing, the glue is not quite to the 24 hour mark needed for full strength.

Next week, I expect to do a little sanding and painting on Blinkie’s dome head, but only if there’s glue oozing out the back.

I’ve also had a vague thought that I’ll need to get into soldering some day. It’s no time soon, but I really hope it’s not too much of a challenge.

Final Question: If you were a real-life spacecraft, what would you be, and why?

Blinkie Pie Case Repair: Stage 0, Part 2

Good Morning from My Robotics Lab! This is Shadow_8472, and today, I have another less-than-full speed progress ahead story. Let’s get Started!

The story so far: I crushed my Blinkie Pie case while it was in my backpack. The damage isn’t terrible, it’s just inconvenient enough it needs to be addressed. One long tab is 99% broken off, and part of the top is peeling away from the rest.

I researched a bit more with my father. It looks like some super glues work well for this kind of thing while the cheaper kinds usually don’t. Another tip was to use baking soda or some other kind of powder to use it as a filler material.

The experimental stage went surprisingly well. I have an aborted print and its original raft I can test glue techniques on. We tried the baking soda method, but the bottle was starting to thicken up. It didn’t mix well with the baking soda and didn’t hold. I went into the workshop and made a bead of some high quality stuff with a fine application tip, and did two test pieces; both were without baking soda, one pressing down the whole time — the other only pressed down after, and both turned out strong.

I went to repair the original in the same way and discovered that super glue can be disagreeable.

I tried multiple times, but the bond wouldn’t hold. I’d think that parts broken from each other would naturally be the perfect surface for each other, but my test failed. The plan now is to try using acetone to remove the residue. After that, I’ll want to test out a number of procedures on my dwindling test supplies.

One drastic method would involve heating the base material with a soldering gun or something and melting some new filament in there. I’ve heard there is such a thing as a 3D printer pen that –while cool and useful– will probably turn out to be something niche.

Another real possibility is to try the baking soda again with a thinner super glue. I’ll need to make sure it actually soaks in this time.

Sanding the parts’ faces and applying super glue to the resultant faces is another option. I’d be nervous of it not being perfect, but if I was really after that, I’d just reprint the whole thing.

Whatever the case, the crack in the case head will be more challenging to approach with how tight it is. I’ve given up the notion that I can get away without a paint touch up, but I’ll still hold out a modest bit of hope.

Final Question: random edition: pronunciation: dAta or da-ta?

Blinkie Pie Case Repair: Stage 0, Part 1

Good Morning from my Robotics Lab! This is Shadow_8472, and today, I can’t find my underscore key! I must have tried at least ten touch type attempts trying to find that stickler before I hit it. Today, I am actually planning out a new project: repairing my Pi case. Let’s get started!

Update on the bot: Project Canceled. Everything –and I mean everything– I saw said Discord audit logs would be available until 90 days after the incident. They vanished, and a screenshot I had of the logs the day of was only 55 days old. I contacted their support, but they eventually told me, “The team has confirmed that it is an intended behavior with audit logs. And we can’t offer troubleshooting steps to fix it,” and to “Please update us here [Discord feedback] if you have further inquiries.”

I really need to pay closer attention before I say something to the effect that they are doing a terrible job. The support was friendly, and usually got back to me within a day. It was only after I replied to that last one and expected a reply that my opinion tanked. I might be coming back to it yet.

Moving on to the subject I actually did my research for today:

I crushed my Pac-Man Ghost case while transporting it a month or so ago. I want to repair it. I went into the workshop to brainstorm. I learned a about techniques for joining PLA pieces, but I can tell this will take a lot longer than I had hoped.

Both the top and bottom are damaged. The head piece only has a crack going even through the paint, while the bottom has a broken tab piece hanging by a few lines of filament.

The quick and obvious solution is super glue. I’ve been warned against it, but I think that may be the way to go for the head piece because it’s otherwise mostly structurally sound. The bottom piece will require a little more creativity.

I read about two other repair techniques, one of which I was already speculating about. Friction welding, would be if I heat it up with a small motor and quickly press it back together. Soldering would also work, and hopefully not lose any material, but will require additional dexterity.

Worst case scenario: I botch a repair of the bottom and end up printing a new bottom. If that were the case, I’d want to get in there with Blender and adjust the inside to actually match my Pi 3B+ model instead of the Pi 2 it’s designed for. I’m expecting this project to last at least until Christmas, even if it’s not interrupted by something more worthy, like picking up on that bot project again.

Final Question: What PLA repair techniques should I research?