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?

Family Photo Chest Part 6: Beginning the Catalogue

Good Morning from my Robotics Lab! This is Shadow_8472, and today, I am coming back with my monthly photo chest project. Let’s get started!

There’s a reason this project is being given the slow milking treatment. It’s a monumental task, and I don’t even have all the hardware necessary for the full project. While it would be fun to build a small machine from scratch, I need to keep scale in mind. This isn’t some arbitrary task I have infinite focus for decades on.

At present, I am looking into Network Attached Storage (NAS) to host the files. NAS can come in a small variety of few forms, but all the ones I’ve looked at appear to be small computers with lots of hard drive space. On the lower end, you have monolithic units where you can store stuff, while something a little more sophisticated will have anywhere between 2, 4, 8, or even more bays you can plug individual hard drives into. Some come ready to use with drives preinstalled, while others expect you to use your own drives. Often, you will find they have some sort of special software to manage the NAS system as a whole.

Admittedly, I am still specing out the system with my father. We are leaning in the direction of getting four 8TB drives specially designed for NAS applications, specifically from Western Digital’s red line.

The NAS controller is still a bigger unknown. We’ve had one for years, but I’ve always found their controller software a bit annoying to deal with, so I’ve only bothered getting it to work about five times — ever. However, I suspect knowing a bit more about its underlying structure will make it easier to deal with in the future. At the same time, I still want something I can connect to on whatever terms I deem fit. One lowball priced bay was quickly blacklisted over this consideration.

In other news, the photo trunk has been unloaded and we have started building an extensive catalogue of what we have, starting with school photos.

But before the real work could begin, a couple decades can really do a number on the smell in a confined space. It was so bad, I had to use a box fan to pull air out of the chest into the room and another fan to exchange the air room with outside. Needless to say, when my mother needed the room for drying face masks, the procedure was put to a halt. It took a couple days, but it’s down to bearable levels.

The bottom of the trunk felt a lot better organized than the top tray. There were two handbags and a cardboard box we could pull out. The rest was mostly almost empty albums and framed photos. One of the handbags contained a lot of school pictures (mostly) in their original envelopes, so we decided to begin there.

Using my freshly untethered laptop, my father set up a spreadsheet. To help speed up measuring pictures, he laid down some tape and marked off the inches. For my part, I already had a lot of the school pictures sorted into a bucket, and we’ve been going through that bucket, documenting everything we have. The plan is to work on it a little each day.

Final Question: How would you go about bringing order to near chaos?

Minecraft Server, Week 5: MineOS

Good Morning from my Robotics Lab! This is Shadow_8472, and today, I am finishing this project one way or another ™. Let’s get started!

I’m told that when I encounter a problem and a short, easy solution, I tend to keep tunneling on through the mountain until I break out the other side.

Project history: I spent two weeks generating four weeks worth of content, and now I’m back after two weeks of working on other stuff, and I’m ready to make it work. Somehow.

I came back to Micro Core and tarballed my progress and took another look at those Oracle Java install scripts. The more user-friendly looking one looked to be only for Java 7, and I need Java 8+. The other one wasn’t too hard to get working. I got the .tze and some kind of file with legal in the name. Both went in tce/optional, and… nothing. No successful install, no error messages, just nothing. I reached out to my Micro Core contact, but he was busy with other things, so I decided to change directions entirely.

I will say that in my experience with Micro Core, I mined up a lot of valuable knowledge, but it is time to be water and flow around the mountain.

Enter MineOS.

MineOS is toted as so easy, you can have a proper server for yourself on old hardware, even if you don’t know what you’re looking at when facing anything past what you learned by Kindergarten. I’m sure this will work.

I took my target machine into Third Workshop — mostly so I could have a spot to work without the normal household chatter. I also discussed what should be feasible in terms of my next big project. Before I left, I grabbed a nice, Minecraft grass green DVD to burn, as the MineOS site didn’t mention it working with anything else when dealing with physical hardware.

And my problems began. I left my tablet at home when I sometimes pace around the room with it while continuing to research. When I got there and had everything set up, I put the DVD into my laptop drive and spent several minutes trying to figure out how I was going to burn the MineOS ISO. My go-to tool I thought was installed appearently never made it onto my laptop, and my virus scanner was suspicious when I tried downloading a tool to help with the procedure.

I turned to my target machine. As a dual booted system, I can work on one hard drive while keeping the other safe. I booted it to Ubuntu and looked up a Linux tutorial on how to burn a *bootable* disk, as it turns out that not all disk burners can do that. A short tutorial mentioned a tool called Brasero I could use. It should start automatically when trying to burn anything.

A quick search told me Brasero was not installed, so I had my computer apt-get update. Twelve minutes later, it said there were a number of errors. The repositories must have been having issues or something. For some reason, I tried updating again, to similar results. I moved to my laptop and started writing this blog post, introducing the subject. Might as well use the time I have. When that was done, I told it to install Brasero, and the installer spat back an error, saying it was already installed.

I used a microfiber cloth to clean the DVD, as it looked like years on the spindle weren’t exactly the best for it. I burned it and it booted nicely to an option to install or run a live CD. I told it to install, and was given a command line error code I hardly recognized. The thing didn’t even act like it had the CD drive mounted after boot. That or it didn’t want to give it’s boot media up.

A new external hard drive came to my rescue. I moved the files that came with it into a folder on my laptop labeled as bloatware and used a utility I did have on my laptop already to write the installer to my device. It seemed to work just as poorly.

After I got home, I went to continue working on it, and I forgot to move the keyboard and mouse back to the active tower. As a result, I ended up booting correctly to the setup screen. It was only at this point that I recognized the installer as a fancy terminal program that only looks like it’s in something resembling a window. The clue was from a few strange-looking characters on the ASCII table that looked like some sort of boarder.

I wend back and forth over the machine, formatting and reformatting its poor, old 60 GB SSD. I had trouble with GRUB (GRand Unified Boot loader) not installing, so I had a stint of trying to tie into the one on the Ubuntu drive, but it took reformatting while both drives were connected before it accepted the install, but at that, it said it was unclean or something. I figured I could just go on ahead, as the installer wasn’t very imaginative if you did anything other than what it wanted to do.

During the first-boot config, I entered passwords for both the root and mc users. I ran into trouble with getting the network set up, and that’s about where I am now.

I know I didn’t finish like I said I would. It’s been way too long since I started this project that was supposed to take just two weeks. I’ve learned a ton, but right now, a lot of it feels like it’s going to waste.

Final Question: What are you looking forward to giving for Christmas?

Programming a Pi to Deter Cats: Part 9.4

Good Morning from my Robotics Lab! This is Shadow_8472, and today, I am glad to say I have finally learned how to beat SSH keys into submission. Let’s get Started!

Computer security is important to get right. The moment you connect to the Internet, you potentially have a near infinite number of burgles trying to break into your device. That is why we have virus scanners and firewalls. SSH is an important and powerful tool for working with headless computers, but if mishandled, it can open a hole in your network security. That is why I always make sure I know what I’m doing and that someone else knows what I’m doing. Because if I don’t get things right, I may be looking at a dozen or so weeks learning about removing malware. If you are trying to learn any skills that can likely compromise your computer security, please seek supervision from someone who already knows how to do it safely.

I spent a lot of time in the workshop this week because I wanted to be sure I was being safe. Like my pile of sand a week or two ago, I had to learn a lot before the final pieces clicked.

SSH (Secure Shell) is a secure way of logging into another computer over a connection that can be assumed to have anyone may be listening in. When set up with SSH keys, a client program first asks the server for its host key. If the host key looks familiar, it’s probably the server the client thinks it’s connecting to. If not, the second layer of protection, host keys, let the client and host negotiate a way to scramble their conversation without eavesdroppers understanding.

Setting SSH up correctly is a bit more tricky to understand. I’ve heard there are lots of tutorials to disable the host key check because it’s annoying. Seat belts are annoying, but if they protect you even just once, they save you a lot of hurt in the long run. I don’t understand the differences between each host key, but from what I can tell, each computer, or at least each server, has one for each type of encryption. Blinky, my Raspberry Pi, came with at least six host keys.

Final Question: one of the challenges I had setting things up was being sure I was connecting to the server I was connecting to. Granted, it would have been safe in that instant to just click through. When was the last time you spent a lot of time figuring out why something works instead of just accepting it works for now and moving on?

Programming a Pi to Deter Cats: Part 8

Good Morning from my Robotics Lab! This is Shadow_8472, and today, I am droning on with my Raspberry Pi Cat Camera project.

Any sufficiently unguarded water cup is indistinguishable from a cat bowl. I had the unfortunate experience of going through that today. I gave it to the dogs. A completed sentry would not have helped in this case, but it serves as a little reminder. Of course, as soon as I get this thing working, I’d say its expected life expectancy is about a week or two. However long it takes before my cat stops the unwanted behavior.

I had a little bit of a tangent this week. It turns out it is very easy to get distracted when you have a special effects setup. The background I had last week, a constantly updating weighted average, was very entertaining in its own right. I could jump in front of the camera and fade in as if I were a ghost. I jump away, and my image fades out. If I held still, the picture would get sharper.

I ended up researching how to VNC into my Pi from my desktop so I don’t have to keep switching out the HDMI cord plugged into the back of my main monitor. It has actually been fairly uneventful so far. My password manager takes a while to register a new password, so I paused work on that angle of the project before I could set up a virtual desktop. The reason I want that is because the Pi checks if it is “headless” or without any video outputs when it boots. If there aren’t any, it goes into minimum resolution mode, presumably to conserve on CPU power. I have sense been careful to plug it in only after a monitor is connected.

I also went to the workshop again this week and promptly learned why I should always clean up after experiments; I had tried commenting out the line to convert to grayscale, and forgot to correct it. I also learned that the differing lighting conditions defeated the semi-fine tuned settings I had for my rudimentary motion spotter, and the ghost trails were back. We also did a big one on the old code while trying to simplify the code. One major change later, and I find things going half nuclear. I was given homework: Git Hub and code cleanup.

And by code cleanup, I mean extract the bits of code still in use after this great restructure and make it work again. I just need to be sure to chmod my new file. I’ll also be using native cv2 functions for finding the background and whatnot.

By next week, I hope to be able to remote into my Pi with full screen resolution, and get back to where I was but with native cv2 functions.

Final Question: How long will it take before the cat learns, and will I ever need to redeploy?

Operation: Remote Desktop

Good Morning from my Robotics Lab! This is Shadow_8472, and today, I am setting my main desktop up so I can use its full power from my laptop. Let’s get started!

While I have remoted into a computer before, this time, I have a deadline for personal reasons. I needed a stable setup that could withstand a reboot or update with minimal intervention. Since the target computer is running Windows 10 Pro, a built-in tool called Remote Desktop Connection looked like the best choice. Oh, I was in for an baaaaad time setting it up.

Things seemed like they were going almost too well at first. For one thing, it looked like the two computers had already played like this in their past, the laptop remembered the name and retained an old password for my specific tower. One problem: Where was the tower?

I must have spent the better part of a day churning over web pages looking for why my laptop couldn’t see my desktop. At one point, it I was convinced the only way to remote in was if you were already at the remote computer. It turns out, (And I’m not fully sure this is how it is, but I’m pretty sure.) the computers behind the router are seemingly not immediately part of a network. Either that or they were both treating it like a public network. My father and I worked on it for about half an hour, while I spent quite a bit of that time telling him what I tried and didn’t work.

We eventually got the two computers to see each other, but things were still not playing nicely together. We ended up checking out the firewall settings based on some of my research earlier in the day. We started flipping switches in Norton’s firewall settings until something worked. After that, we reactivated as much as possible, narrowing it down to the “Norton Smart Firewall” and I even got into some more finely tuned settings to where the smart firewall would let in remote control and, but leave on everything else. Settings (Upper right) > Firewall > General Settings > Smart Firewall > Public Network Exceptions. I enabled “Network Discovery” and “Remote Desktop Connection.”

Sure, at one point, my father had done something to where my laptop could try signing in, and we went down the wrong solution path and I ended up making a new account for my laptop. I was instantly reminded of how much I don’t like how Windows these days is built around the idea that all or most of its users are mostly computer illiterate touch screen users. I know I’m interested in social robotics, but it’s a little uncanny when it comes from an operating system I’ve grown up with.

Things became a lot easier after I managed to get a successful connection, but they weren’t perfect. First of all, my desktop immediately logged out. I was expecting something more along the lines of mirroring screens, but I can live with it this way. Secondly, I wanted to test a restart. The start menu only has a disconnect button now. I had to go back over to the tower and restart it myself. I use a lefty mouse, and both computers knew that. the result, both my computers flipped my mouse buttons, canceling each other out. I’ve unswapped the buttons on my tower.

After some basics were sorted out, I moved my monitors away from my desk and to my temporary setup, where I have my laptop and a more powerful WiFi antenna. I spent a while trying to set both my monitors up and use my laptop as a 3rd monitor, but it doesn’t look like it’s happy with that arrangement. I set my bit monitor to my primary display, and when I say to extend my desktop to my other monitor, it deactivates the laptop screen.

I still need a reinforced mouse pad, but I’m otherwise all set up. Sure, I elevated my laptop body so the screen would line up with the desktop monitors (The whole reason behind the desk is because of the whole battery drama I’ve written about in previous posts), and I would still like to get it working exactly how I want, but that doesn’t seem to be available right now

Final Question: When was the last time you used a driver CD?

Review and planning session

Good Morning from my Robotics Lab! This is Shadow_8472, and today, I am laying out my plans for the near future. Let’s get started!

I’m still figuring out the new setup with Derpy. The VNC client I set up on my main desktop isn’t sending keyboard shortcuts when remoting into Derpy, but my laptop does and I cannot find the setting to change it. It also seemed to prefer opening up programs for a local login (if present) if the remote server requested anything be open. I upgraded it to Ubuntu 18.04.1 LTS after trying to get some tech support over Discord.

In my last post, I believe I said I was now using GNOME 3. That was wrong. I’m on the Xfce desktop environment and I couldn’t tell the difference, especially while trying to elicit help. I’m willing to work with this desktop environment, as I hear it is supposed to be pretty stable, and it’s the only one I have to work with at the moment. Yes, I don’t have a way to switch desktop environments remotely. I tried logging out remotely, and the VNC session became unusable with that complex black and white “gray” pattern, replacing the desktop picture as I dragged lingering windows around. A reboot fixed the symptoms, but I still want to see about getting the root cause addressed sometime.

I have a few things I want to finish before going on with programming the Pi to detect and deter cats. Mostly the more intermediate Linux literacy skills, like getting WINE to run things reliably, or forcing a piece of hardware to work when it shouldn’t.

During my miscellaneous research this week, I found Rasbian is only a 32 bit operating system and the Raspberry Pi 3 family is all 64 bit based. I would like to explore benefits and drawbacks to finding a lightweight version of Linux to run on the Pi and running that for my cat program instead of just programming it for the board’s default OS.

Final Question: It’s hard to know what version of an otherwise identical product to go with, especially if you’ve never needed it before, especially software. I find a good word from someone I know goes a long way. How do you decide what version to use?


Remote Access 1

Good Morning from my Robotics Lab! This is Shadow_8472, and today, I have a lot of progress to report on remote accessing my computers from each other. Let’s get started!

I spent most of my time for the blog this week in that workshop I joined a few months ago. A lot happened, but I am not the main mind who put everything together, and I don’t fully understand everything that’s going on.

This week, I gained the ability to log into Derpy, my secondary Minecraft server/Linux testing platform, from another computer using TightVNC (Virtual Network Computer). TightVNC is one of many desktop viewing applications; most others cost while I’m working with a free version.

The first step was to set up a server on Derpy and get another computer to try and connect. We eventually ended up with a “gray” error screen with a black x pointer if we had everything working as best as was possible (it was actually a complex pattern of black and white pixels).

Part of the wonkeyness of remoting in involves screen parameters, like size and this one I know nothing much about called color depth. Something along the way likes a color depth of 24.

While we tried a few possible fixes, multiple places said to put GNOME on for the graphical interface. While I find the Cinnamon nice and convenient, I am more than willing to explore something new to find something that works… GNOME surprised me with that pesky zoom in thing I abandon Unity over.

I did a bit of research, and the popular Unity environment is built on GNOME. I hypothesized that Unity had changed something Cinnamon couldn’t care less about. None of the normal zoom in fixes worked, and the text had their smooth, vector based look, even though they were huge, so we knew the picture was at the correct resolution.

Over an hour of pointless guesswork later, I had outsourced the problem to a Linux support Discord server. After no response and someone else’s problem getting solved, I reuploaded along with a photo of the screen this time. Over the next three minutes or so, a couple users by the names of MotherM and ~> yay -s Superuser went back and forth trying to figure it out until a user by the name of PlasmaPower offered a command to restore the correct interface scale factor to 1 where Superuser had identified it as at a factor of 2.

gsettings set org.gnome.desktop.interface scaling-factor 1

With GNOME functioning properly, I was able to make a connection and even managed to open the Minecraft server remotely. However, any new graphical programs, including terminals, opened up in the host machine. It turns out, using TightVNC server hosts an extra login session, at least the way it was set up. Before I left the workshop, we got a script set up to automatically start the VNC server whenever the computer restarts.

Later, I figured out that if I logged out from the host machine, newly opened programs work as expected. I also eliminated one of my dual hypotheses. New programs prefer to open locally before yielding to remote sessions when dealing with multiple logins from the same username, not the first session started.

As it stands, the connection is stable. Future improvements may include sizing the resolution to fit my secondary monitor and getting a version of GNOME installed I can relate to a little better. I should also be able to set it up for CLI mode only for the host terminal.

Final Question: Linux is apparently the hardest OS to get set up for remoting into. When was the last time you reached the finish line, only to find out you were doing it the hard way, even if the easy way wouldn’t have worked for you anyway?