Family Photo Chest Part 11: Workflow

Good Morning from my Robotics Lab! This is Shadow_8472, and today, I am conceptualizing a workflow for scanning the family photo trunk. Let’s get started!

I don’t have any hard figures, but I’m fairly sure that half the project is getting to the first definitive scan. It’s been a year now, and I have yet to save a single photo to disk, but at least I have answered most of the questions that need asking and have an idea for the remaining questions I still need to look up.

Dots Per Inch

Probably the single biggest unanswered question is what dpi to scan at. Everyone has a variation on the same answer: it depends. Zoom in close enough to any picture, and you run into the individual grains making up the image. Pictures with a slight blur have a more than fair share of redundant data here, so it’s okay to ease off on the disk space they’ll forever occupy. On the other extreme, it may be preferable to scan negatives near the grain threshold to mine out as much of the original content as possible.

The process of printing can only ever lose detail. The same goes for digital image manipulation. There is research into AI’s that can believably upscale an image, but once original detail is lost, it’s gone, and you’re left with purely guesswork. The worst case scenario is to find that all scans to date are low quality, and work on the payload needs to start over.

I hear good things about 600 dpi for general use. I’ll need to experiment for myself though, but I’ve come to think about it from both ends toward the middle. Start with how much detail you need to end up with and adjust for how big of an item you are scanning. You’ll can calculate the appropriate resolution to scan at from there, barring any of the above limitations cited in the above paragraphs.

File Format

My initial impulse was to go with PNG. It’s familiar, it’s lossless, but apparently it doesn’t come enabled by default. It’s grayed out it Image Scan! for Linux, but most software doesn’t even list it. If I want to continue down that path, I’ll need to either brute force a utility to scan it directly, or I will need a converter.

But PNG may not be the proper tool for the job. Digital archivists have been using the TIFF (interchangeably TIF) standard for longer: almost three and a half decades. Still, PNG has its merits. I do intend to put the archive online. TIFF apparently handles metadata more safely and more uniformly though, and metadata is something I intend to research further and learn to manipulate.

Workstation

Next, I’ll need to ask myself exactly what hardware/software I’ll be using. At present, I am most seriously considering scanning directly into GIMP and using a plugin or script to crop multiple pictures on a page at a time. Lightweight repairs should be possible on the spot, then the extracted photos can be saved to network storage.

I have two scanners at my disposal, I’m planning on driving one with my laptop. For the other, I’m considering experimenting with a Pi 4, though if that’s not powerful enough, I can always move a tower like Button Mash, my home Minecraft server, over to the project workspace to drive the second scanner.

My dream setup is to have one workstation controlling all the scanners using some kind of remote login software (to be researched). All parts should be in the same general area and be connected by hard wires and a switch, since I have the equipment.

Workflow

I’m including this section since it is important, but it’s also something that will get refined even after I start the scanning proper. Using two or more scanners, I can keep one or two people busy, even if the computers being used are a tad on the slow side. An organized directory acknowledging preexisting relationship of similar photos, such as an album or original sleeve, can address any automatic numbering schemes.

Pacing is another element here. Had I dedicated this entire blog to this project until I was done, I would have lost interest long ago. I don’t want to be scanning all alone, so I’ll need to coordinate schedules.

Digital repair is a fact of life in such projects because a microfiber cloth can only remove so much dust. Damaged photos that require special attention will need a way to be flagged or edited on the spot. On the whole, I believe the pictures have been well preserved, though we did find one torn photo to practice on.

Takeaway

I won’t pretend to be the definitive guide for digitizing your photo archive. To do the job properly, you may need to spend on reading materials or membership in a community like Scan Your Entire Life. A lot of my research this week came from what is freely accessible from his site, but key details are behind a pay wall. However: a prominent –but unofficial– theme of this blog is using the open-source model whenever possible, and as good as his stuff looks, I don’t have the funds to invest in a paid community.

Final Question

How long have you put off scanning your old family photos?

Kerberos: the Three Headed Authenticator

Good Morning from my Robotics Lab! This is Shadow_8472, and today, I believe I finally have the key holding back a number of my projects. I haven’t finished this week’s research as of starting writing, so I have no idea of how it turns out. Let’s get started!

Critical Path

Right now, my immediate long-term goal is getting photo archive pictures scanning, preferably with a custom script to streamline the process. For that, I need a reliable computer for processing photos — my laptop would work, but I’d feel a lot better if I had its long-term memories inside the case instead of hanging out for the world to snag. I would clone them inside with dd, but I’ve been holding out until I can perform a backup to the NAS. And that is where I’ve been stuck for a month or two: authentication to the NAS instead of by individual IP… until recently.

Kerberos

I often work on topics in parallel, switching on the last day if I don’t complete something. Last week, someone brought up Kerberos, an authentication protocol that’s been around since the mid-80’s, and if the Computerfile video, “Taming Kerberos,” is to be believed, it’s resistant to quantum attacks. And here is another video explaining Kerberos while addressing its weak points, something that most explanations overlook.

Named after the three-headed dog of Greek mythology, Cerberus, Kerberos follows a three-part model for authentication: client, host, and a mutually trusted authentication server. In simplified terms, you and the authentication server has two steps, one that uses cryptographic keys so both client and authentication server are sure they know each other, and another that issues tickets, or temporary passes, for desired hosts. Given a ticket, the host then does some final checks before conducting its normal business with the client.

Kerberos has more practical applications than just NAS authentication. It would appear OpenSSH is perfectly happy authenticating with it. I already have around 7 to 9 SSH-enabled devices and I don’t care to manually generate and distribute keys amongst everyone. And then there’s conflicting host keys when not everything is tied down to its own static IP and my Pi 4 I’m now swapping MicroSD cards on. I’ve resolved to just having one machine I SSH into that holds most of the keys I need and then SSH into the appropriate machine from there. In the future, I may even apply this technology for that website I’ve been working towards for almost a year now.

Compiling Kerberos

There are plenty of explanations of how Kerberos works out there. So many to the point where they clogged up my searches for actually finding an implementation of the method to use as a server. I eventually found what I believe to be the preferred download over at MIT. It does, however, come with a warning about exporting cryptographic source code from the US without permission, and that it’s illegal for it to go to a short list of countries or their nationals, though I did see some possible leeway for Canadians.

I intend to set my PackMan ghost-themed Raspberry Pi 3 (Codename: BlinkyPie) up as the host for this authentication server. With a significantly more powerful Pi in the house, it’s no longer my go-to for small scale computing, but since this is a very small scale job, processing speed and Ethernet bandwidth shouldn’t matter so much. I pulled it out of storage in plain sight and set it next to the NAS, near where I’ll need it for another project I’ve been putting off for years now. Of course, I’ll be wanting to lock that thing up tight once I have it going long-term. For now, I’ve set it up with a static IP where such a future system will go — right in there with our other network services.

The source code came in a tar file. I extracted it, but then remembered that it’s good practice to verify the download when possible. MIT provides a PGP signature. I’ve only worked with Shasums before, but it’s a similar idea: protect against corruption and tampering.

The PGP implementation I found to read about is called GPG. I had to look no farther than Blinky’s own Raspian operating system to find it was already included. It’s usually nice when a little tool you learn about is already within arm’s reach. I struggled around with reading the manual, its internal help page, and looking up use-cases online. I found their missing public key, tracked down an instruction set under “documentation” on how to compile from scratch, and was finally able to manually verify the signature for the tarball. Trying to verify the signature in a separate directory failed to produce the key, as expected.

My first attempt at building Kerberos failed. I stepped back to research details in the instruction set I previously glazed over, such as requiring ANSI C compliance.

At this point, I started to get some direct answers from members on the EngineerMan discord server. EngineerMan himself personally explained how ANSI C is just a longer name for the C language, but mostly older standards. He named c89, but said, “you won’t hear people call c18 ansi c though.”

My understanding of the situation is so: Imagine I have a big program I intend to maintain for 50+ years. I can write it to the standards present here in 2020. But if a new standard comes out in the meantime, I can either go through the bother of updating EVERYTHING each time –leaving myself open to any bugs that might crop up as a result– or I can just keep using the 2020 standards. If someone needs to compile it, the newer compiler can always be manually configured to run the older standard. Now just backdate the situation to 1989 or so and October 2020.

I tried recompiling a few times without changes, trying to sift through the overabundant console output. I think it was my third attempt where I stretched my terminal across two screens and beyond that I noticed several messages referencing missing files.

One iteration, I redirected the first phase’s output to a log file using the > operator, but two warnings about missing files went to the console anyway. One was for something called Tcl, and the other for OpenSSL. OpenSSL showed up when I looked for it, but Discord user jeffz popped in and talked me through getting the developer version. Additional packages had to be added, preferring development versions when available.

Eventually, I stabilized the configuration script (I think), at which point I copied the whole build directory to a backup. With help, I worked on brute forcing the actual compilation. Every time, a huge error log would plague me, sometimes with lines so long, it would take four screens to show the full line in tiny text. User yemou on the Nixhub Discord server spotted a tiny typo in the command fragment make CFLAGS=-std=c89. Most, but not all log activity went away after that. Oh, and jeffz pointed out some MIT Kerberos compilation instructions tailored for Debian-based distros.

Installing Kerberos From a Repository

I got close —real close– to successfully compiling. I learned a lot to file away, but when I explored that link jeffz gave me about MIT Kerberos installation on Debian, it went straight to the apt repository. I installed it and promptly messed up the admin-server package configuration.

Initial MIT Kerberos 5 configuration is unforgiving. I tried removing the packages and putting them back, but they found some other remnants to lock on to. I used the page linked above to track down and remove more mentions, but each time I plucked something out, it broke even worse. I saw someone in a similar situation asking for help. I quickly figured out how to purge when dealing with the repository, and was soon greeted with the configuration screen, though it still must have found something because it didn’t ask everything again. I read farther, and found where they were suggesting a clean install. Not what I wanted to hear, but it’s probably for the best.

This is where I sprouted off to work on last week’s topic, where I arranged for a personal master image of Raspberry Pi OS. On taking another look at the install script for Kerberos, I feel like I’m trying to install an engine to a horse and buggy — in theory it could work, but I’m getting asked questions about where the intake manifold or the gas tank are going to go. I’m spending more effort dodging the work of setting up static IP’s than I am just doing the original work.

Kerberos needs to go wait out in the dog house for a while. Who knows? Maybe I’ll revisit it in five years or so and play ball then.

Final Question

While exploring available Kerberos downloads, I happened across a development branch. They warned multiple times against the wrong people using it with decreasingly relevant warnings. They finally skill gated it by giving a set of instructions to keep the hopeless beginners out of trouble. Have you ever run across any skill gates?

My First Online Scam

Good Morning from my Robotics Lab! This is Shadow_8472, and today, I am telling the story of my first experience with a 419 scam. Let’s get started.

I’m writing this during a time of many projects, and if this post appears randomly, it probably means I need a week off, or I’m stuck and need extra time with next week’s project. Even now, it’s been a few weeks, so parts are already slipping away.

It all started when I received a computer related Discord message announcing a giveaway to help with the hard times of the pandemic going around. I had won .81 bitcoin! Huzza! How much was a bitcoin worth? I looked it up, and it was floating around the $9200 mark. I was staring down about $7000 if I could go claim it. The message gave me a code and a link to a cryptocurrency exchange where I could redeem it.

I was suspicious, as I should have been. Red Flag 1: I never entered any giveaway. Red Flag 2: The account giving away this freebee had only just now joined the only server we had in common. I decided to check out the link, but not as myself just yet. I decided to install TOR browser to make it look like I was somewhere else. One problem: Debian’s repositories only allow old, proven software. That’s when I learned about backports.

According to the Backports page on the Debian Wiki, “Backports are recompiled packages from testing (mostly) and unstable (in a few cases only, e.g. security updates), so they will run without new libraries (wherever it is possible) on a stable Debian distribution.” It goes on to say you should only use what you need without using every backport in the whole of Creation, at which point, I’d think you’re better off using the testing version of Debian Sid, the “unstable” version.

TOR went on without too many additional problems. I followed the link, and the site looked professional enough. I revisited it with regular, old Firefox and made myself an account using a unique password, as you should. Red flag 3: I didn’t get a notification e-mail. I noted it, but chose to ignore it for the time being. The site also went out of its way to point out that it was using https for encrypted login.

Redeeming the code went smoothly as you’d expect. I figured there’s no point in spending the money until I had gotten something tangible off this exchange. I mean, $7500 or so is enough for a very nice desktop computer — maybe even a couple just nice ones, even after paying a 10% tithe to my church. I even contacted their online giving section and was a little sad they didn’t accept Bitcoin. The most impressive part of the exchange was how it was already Friday afternoon, and they still got back within about four minutes.

I decided to try making a small purchase, but there was a small matter of the exchange saying there would be an equivalent of a flat, $5 charge for every transaction. Yellow Flag: While this business model is entirely reasonable, it discourages testing them out with small payments. It’s easier to ignore $1000 +$5 than it is to ignore $1 +$5. Switching things around, I found a way to purchase from NewEgg using a service that accepts Bitcoin and decided it would be good to pick out some hard disks for a future project.

In parallel with that project, I learned a bit more about the mechanics of Bitcoin payments. I tried making an anonymous account on a more reputable cryptocurrency exchange, but they wanted personally identifiable information. Red Flag 4: This other site I was working with was only 3 days old, according to domain name records, yet it had articles dated before that.

Another tidbit I learned from a third party was that there are laws forbidding cryptocurrency exchanges from making cash payments until the account has already received payment from a verified bank account, and then it can only pay to that bank account. Turns out that’s to prevent money laundering.

I continued on with trying to buy the hard disks by moving the Bitcoin off the exchange and onto my phone. I generated a code, moved it over to the exchange, and… Error: new account, please deposit about $200 to unlock your account. Bummer! I had been warned about this, but I chose to go learn about it anyway.

A sliver of faint hope was finally dismantled when I talked with one of the mods on the Discord I was on. Turns out multiple people had gotten targeted, but I was the first to report this particular individual. After a screenshot of the PM he sent, he was banned from the server.

Final Question: Have you ever been targeted by a 419 scam and come out the other side with an interesting story?

Beowulf Cluster: Part 1: Sum of Its Parts

Good Morning from my Robotics Lab! This is Shadow_8472 and today, I am planning a model supercomputer. Let’s get started!

I feel swamped with projects right now. They end up stacking up and with different priorities, so I’m glad I can finally do something with this lockdown care package I recieved from Third Workshop several weeks ago.

The package contained five Minus Forum Fanless Mini PC’s, model N40. After carefully removing and discarding the wrapper, I pulled one out and hooked it up. It booted to Windows 10 setup. Nice that they included something, but for a number of reasons, I will be installing some version of Linux on these tiny machines. What annoyed me was that the screen where Windows wants me to accept the EULA did not have a reject button.

What annoyed me more was how I never received an answer from support about a partial refund per the Windows EULA. Honestly, I did that more on principle, and I don’t know how it would work. I am not the original purchaser, and they were already on sale. Token effort. Their support website didn’t have a security certificate for protecting login details, so I didn’t prioritize pursuing a couple dollars per machine any further. In the meantime, I turned my attention to booting Linux from my Debian install stick. Let me tell you: the BIOS on these things is about as user friendly as their tech support.

By default, it priorities internal boot devices over removal media, and it only gives a tiny window of opportunity to enter the boot menu, or it’s off to Win10. it’s almost like the original manufacturer didn’t want people looking at the BIOS at it’s almost like the original manufacturer didn’t want people looking at the BIOS at; I had to look up what key to press, and it was either F2 or DELETE, and when I got to the BIOS menu, it was the ugliest one I’ve ever seen. The aesthetics were on the low end for terminal style menus, but the real kicker was how they handled moving the boot order around. I wasn’t able to figure it out except that it felt like swapping items in an array instead of moving things up and down a list. Despite the challenges, I was able to boot the way I wanted to.

Assembling a supercomputer though, that is a whole other story. There are two kinds of supercomputers: distributed, like what Fold@Home is using to combat the CCP Virus Pandemic (which I intend to add these goodies to), and clusters, like what I’m trying to build. At present, I am pursuing the term Beowulf Cluster in my searches.

I just wanted to touch on another reason not to go with Windows for this project, besides me transitioning to Linux whenever possible. Windows charges per instance of their OS. Supercomputers need one OS per node, and practical supercomputers will often have at least five or six nodes working in parallel. Couple that with the already sparse number of applications for supercomputers, and you end up with virtually no supporting software to use Windows for a Cluster computer.

The biggest challenge I faced in this part of the work was knowing what to order. I had to ask someone on my family’s Minecraft server before I knew for sure that a switch would serve just fine. Then came the rest of the support system.

These little computers support Gigabit Ethernet, so that’s what I’m aiming for all along the system, primarily the network cabling. There’s a lot to know about wiring. Modern data transmission builds on the twisted pair technique originally invented by Alaxander Gram Bell. Since then, we’ve found ways to reduce noise, such as insulating the wires from each other, shielding them from each other with foil, shielding the whole set of wires from their environment with more foil, and so on and so forth. There are specs on fire safety if the cable is installed horizontally, vertically, or even in the ventilation system.

More relevant to my project is how the cable’s wires are made. One kind is made with lots of strands, making it easy to bend around and is often used between computers and the wall. The one I want uses solid wires; the wires won’t be moving around much after installation.

Rounding the computation side of things off, I have a Raspberry Pi 4B on order. That was a small adventure. Turns out the B in Pi XB just means it has an Ethernet port, and a model A doesn’t have it. Since they aren’t making Pi 4’s without Ethernet at present, all cases made for plain “Pi 4” should work for my purposes. I went for one that doubles as a large heat sink. Neither have arrives as of writing.

The final hardware challenge is power. While I’d like to just slap a strong enough power supply on the mounting board, different parts of my system will be running three unique voltages. The only ones I’d have any chance of combining are the original minicomputers, and their power supplies are matched pretty well with what they need. They also take up too much real estate on the power strip. I researched over and out of my price range, landing on the conclusion that more research would be needed to combine transformers. The plan now is to grab a couple angled three-way splitters and use the original transformers.

I haven’t even gotten to assembling the system, and it’s already a formidable challenge. Nevertheless, there is one more good reason for combining all these machines in one “casing:” I believe my family is near capacity with the number of computers our router can physically address at once, and that this project would otherwise put it over. The way it’s planned out, as the controller. the Pi 4 will be the only node to talk to the outside.

Final Question: What would you use a supercomputer for?

Loss

Good Morning from my Robotics Lab! This is Shadow_8472, and today, I am working on upgrading ButtonMash to a decently sized hard drive. Let’s get started!

I am humbled to know that Creepers_n_Cream has been a well-loved server. I’m actually impressed at how well God has blessed my efforts given I put it together on a budget of nothing but what I had laying around. We’ve had somewhere between twenty and thirty unique accounts stop by, and we have about ten regulars in our community.

With abundant use comes abundant taxation on the hardware. Even though the RAM situation has been stable since I implemented G1GC not all the bottlenecks are fully addressed yet. The CPU gets pegged if more than a couple people are on at a time, and 60 gigabytes of hard drive space only goes so far when you aren’t deleting old weekly backups.

A few weeks ago, I woke up to the server crashing royally. It had finally finished topping off the tiny hard drive I gave it to start with. My family discussed it, and we eventually ordered a one terabyte solid state drive to install.

The first step is to get the operating system installed. Unsure where my original MineOS installation media went, I located a thumb drive and it mounted as sdd. It had a bunch of old Minecraft servers I could offload.

With the drive void of contents, I pulled up a tutorial on burning .iso disk images to thumb drives from the command line in Linux. As soon as I saw the dd command, I remembered a warning that it might as well stand for “disk destroyer.” Its actual name is Data Duplicator. Aside from working in the command line, there was nothing new about this situation.

Following the tutorial, I wrote a vFAT file system to sdb. Oops, I spelled it “sufo” instead of “sudo.” Correcting my typo, I tried again…

sdb…

I used the lsblk (list block) command to bring up all partitions of any disks connected to the drive. I felt the color drain from my face as I inspected the table.

I had heard the warnings. I had double checked. Years worth of memories –gone– in only a minute. This is why you always isolate potentially destructive work by using a computer you can easily rebuild; always minimize the chance of damages with an air gap! Always!

I had goofed. At least I hear this is the mistake you only ever make once. In the fallout, I checked around for a backup, and I found something from last December. It doesn’t have much, but at this point, I just have to trust my past self that I got the stuff that’s most important. As luck would have it, of my three most important personal drives, that was the only one I actually have any sort of backup for, and it’s the only one that wasn’t still in daily use.

I continued with putting MineOS on the terabyte SSD. I used my main tower, but its external Wi-Fi card didn’t register, so I put the project down for now while I focus on recovering my hard drive.

As of writing, I still don’t fully understand the damage, but I’ll try explaining it as best I can. Most of the data is still there. All that really happened was that I shredded the hard drive’s internal map and laid out a fresh one, marking everything ready for redevelopment. If I can somehow survey the abandoned data, I should be able to rebuild the original map.

Fortunately, there are recovery tools I can try. The one I’m trying to work with right now is called TestDisk. I believe it should be able to achieve a full recovery, if used correctly.

But that’s the thing. I don’t know how to use it correctly. I’m terrified that I’ve only got one shot, and if I miss, it’s possible the failed recovery process will cause farther damage, and I won’t be able to try again.

I’m hardly the first person to nuke a hard drive by accident. There are other options around, but I’m still scared that I won’t get a second chance once I try any one of them. The best case for me would be if I found someone else who had written a vFAT filesystem over an NTFS filesystem and replacing two visible partitions, but the creation of such a tutorial would be pointless, as there are way more possible combinations to the point that there isn’t enough demand to justify the supply.

I need to put this project down for a while. I’ve reached out to the Third Workshop, but with the pandemic on, “after school” STEM programs are online only. Otherwise, I have a couple topics I can develop for the next couple weeks. I really want my drive back.

Final Question: What was the biggest computer blunder you’ve ever made?

Family Photo Chest Part 5: Opening the Vault

Good Morning from my Robotics Lab! This is Shadow_8472, and today, I started organizing the chestful of pictures. Let’s get started!

But first, I have a new area in the house to call my lab — for now at least. We have a spare bedroom we call our art room and it has been recently made available for use. I’m working off the same folding table as before, but with the extra space –and the ability to close off the area from our four legged friends– there was enough room for my father and me to move the old sea chest from our garage to the art room.

The goal in this phase of this branch of the project is to get a general census of what we have so we know how much storage to buy. Color photos take three times the space as their Black and White or Sepia counterparts, and many pictures have their original negatives stored in there as well. The general guidelines I received was to sort everything into large, medium, and small piles, with separate piles for color images.

We opened the chest and started pulling out various prints. I about have no words for the level of entropy I found. Collections of photos were haphazardly strewn about inside, while other prints were floating free in the photo paper soup. As I excavated, I found where at least a few photo envelopes had lost at least partial containment while in at least one case, a small photo of a motorcycle frame found its way inside a package of my father’s school photos. If it were any more organized, sorting would have been trivial. If it were not at all organized, I could be a lot more mechanical. As it stands, I am choosing to preserve obvious collections and incorporate them into my eventual file system.

Not all collections are bound the same. The most secure collection is a cardboard box stuffed full of envelopes. I all but left that one alone, moving it into a plastic bin along with several other obvious sets. I also had a special place in that bin for less organized sets of photos, such as one series that only had a rubber band. Several loose sets of pictures were obviously taken together, especially if they were together in a stack. Those ended up in yet another folder.

I still ended up with a few surprises. I had to make a pile for non-picture documents and envelopes with their contents lost to the soup. A lot of old mail ended up in there. I even found a lock of hair, presumably from someone’s first haircut. There must be no fewer than four or five languages represented in there.

Eventually, I ended up taking a bunch of sandwich bags and stuffing the loose groups in. I actually found a small picture within a minute while writing this post — in part because of this very tactic.

I owe a big thank you to my father for sorting out ambiguous sets. A lot of the memories in the trunk are his or are from people I never overlapped with. I can see this project taking quite a while. Hopefully, things can get moving sooner rather than later.

Final Question: How do you bring order to semi-chaos?

Minecraft Server, Week 6: Press Start

Good Morning from my Robotics Lab! This is Shadow_8472, and today, I almost posted one of my backlogged posts, but I managed to pull together something to continue this project one more week. Let’s get started!

I don’t know where to begin on this one. Last week, I left off with reinstall after reinstall, trying to fix some error I kept seeming to get. I gave up after wrecking my bootloader during one last attempt to fix everything, forcing the machine to depend on booting to live media, such as my Puppy Linux CD. I stuck around to determine that Ubuntu wasn’t accidentally nuked alongside Micro Core, so I was at least partially appeased on that front.

Sunday came and I thought I would try one more time. I had done some research on GRUB 2 (GRand Universal Boot Loader). Boot loaders are programs that take charge after the BIOS select a drive to boot to. They are in charge of starting the operating system. GRUB is designed for environments with more than one OS, like the one I seem to have ended up with. It is worth noting that GRUB and GRUB 2 are two different boot loaders that serve the same purpose, they both refer to themselves as GRUB, but some places say you can get in trouble if you use support for one on the other. From what I can tell Arch Linux is one of the few distros that use the first one.

I started up Puppy Linux and suffered while trying to find the terminal. That little distro does not follow many of the conventions I’m used to as is! Bad dog! I researched how to repair GRUB and when I looked in my MineOS drive, I found… what looked like a fully functional boot loader.

Annoyed, I told the BIOS to boot to the old SSD before the HDD with the bricked GRUB install. It worded. I was able to boot to MineOS, but I still got a corrupt terminal pseudo-window interface: the configuration console. Sometime after I seemingly bricked my machine, I had the thought that I might not have really had an error to fix all along. I was hoping everything was just one unknown away, and that was it.

MineOS is fairly minimal on the host machine. It really shines in its Web Interface. You connect to its IP with https at port 8443 and sign in using the account you set up during your first boot. I tried that and got a page that got stuck loading. Different computers didn’t help either. I gave up and resolved to put the finishing touches on a stand-alone post I have written after pinging my contact with a picture of the error message and corrupt-looking screen I was having trouble with.

Hours passed, and I eventually got a celebratory reply of all things. I decided to humor him with one last attempt on connecting to the previously tried IP and port. It worked. I seemingly didn’t do anything differently, but it worked on me. I went over to the other towers I had previously tried it on, and it worked on those. It did not, however, like Android Firefox on my tablet, but the browser built into LastPass was accepted.

About this time, I investigated one of the features of MineOS inherits from its parent distribution, Turnkey Linux: Let’s Encrypt. Let’s Encrypt seems to be a free SSL certificate authority, if I got my terms all correct. If you already know what you’re doing or are following a set of instructions and don’t care about learning, you can reportedly have one within ten minutes. The only issue for me was that the application script gave me a bit of a head scratcher. It wanted a domain, and I didn’t know what to put. In the end, I figured I wouldn’t be exposing the login port to the Internet anyway, so I can wait on setting that up.

The web interface itself is well polished. I still don’t know what all I am looking at, but it is a whole lot easier to behold than a command line. Exploration is also much easier. I set up a test server, trying to get something going on a port other than 25565, the default Minecraft port, but some diagnostics and research later, and it looks like part of the Web Interface’s design principals exclude it from being able to open additional ports, mainly that not all operating systems it can possibly be installed on keep track of open ports the same way. I suppose that keeps the dabblers contained in a field of relative protection, leaving advanced use to more seasoned computer users.

I moved my test server to the default port and had a volunteer try again. It worked, and this time when I expected it to work.

MineOS has an import feature that’s supposed to be fairly smart when it comes to importing archived servers. .ZIP files were confirmed, but I wanted to feed it a tarball and see what would happen.

I took the server of interest offline and –very important– made a copy separate to any backups I may have had. I then started weeding out things that wouldn’t make it over to MineOS, such as the WorldBackups folder, the start script and its backup, and copies of the datapacks we are running. The tarball came out to 1.9GB.

Transportation was a hassle. I didn’t have the patience to set up SSH correctly, so it gave me a warning if I tried to copy. The old host machine, my father’s computer running Linux Mint, didn’t have an SSH server on by default, so I couldn’t grab it from the new server. I tried my 1TB external drive, but when I finally got it mounted, it was read only, likely because of the way it was formatted. Two additional USB sticks were too small, but I could get it onto an external hard disk drive we have around with plenty of room.

Issues persisted. The MineOS terminal did not want to mount my storage device, and when it did, it wasn’t polite about where it put it. I still don’t know where it was hidden, but one search did turn something up I know for a fact was on the external HDD. For a few actions, like mounting/umounting or listing the contents of some directories, I required root access, but sudo doesn’t look to be a thing here. I used the su (substitute user) command to switch to root, something that should never be done lightly. I even tried booting to Ubuntu and manually copying the .tar.gz file over, but I had some kind of error I have no clue how to address.

In a frustrated fit of doubt, I suggested I may just move the hard drive over to my father’s machine and copy it over to the import directory manually. It actually sounded worth a shot, so I did it. It worked.

I booted the server machine and found a file all ready to import. I set it up, and had a volunteer log in to a brand new world– It was supposed to be the preexisting world. I ended up moving the drive back over to my father’s computer only to discover that it had basically unpacked my improperly compressed tarball and stuck a new server at the root.

I was not pleased. I manually moved the different elements over to the new hard drive and saved each piece. Not all parts had counterparts. I kept the MineOS exclusive files intact, while grafting in the original server’s files. The World file was spelled world (lower case w), but the hardest element was the properties file. For that one, I actually had to evaluate it line-by-line.

Finally, after six weeks worth of work, I had the server on its own dedicated server. I started it back up, and had my volunteers examine the world. So far, all systems appear normal. I plan on keeping on its original Minecraft version for at least a day and I want to make a restore point or backup or whatever they call it. I just need to learn the MineOS Web Interface.

I learned a lot in this project. If it weren’t for this blog, I would likely have given up long ago and just hosted it from my own machine. If it weren’t for my time in MicroOS, the last push I made could have easily have taken two or three more weeks. I’m glad it’s over in time for New Year. And now, I present the newest member of my little computer family: ButtonMash!

Final Question: There are a few details left to polish, but I do not plan on covering them. Do you want me to change my mind?

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?