Modding Minecraft Mods: Balance, Bugs, and Textures

Good Morning from my Robotics Lab! This is Shadow_8472, and today, I would like to share a couple bits about how I tweaked my family’s private Minecraft modpack. Let’s get started!

If running a curated modpack were bad for finding help, a custom modpack is even worse. It’s the sort of thing you just don’t do when you don’t get –or keep– working unless you have someone who knows what he or she is doing, or has the patience to figure it out; you won’t know everything — nobody will. That is why why I cannot stress enough the importance of knowing where you can ask for help after you’ve made an effort.

It took me a few Discord servers, but I landed on one for modded Minecraft in general. Minecraft Forge, a popular modding platform, refuses to support anything they’ve made but the couple most recent Minecraft versions, 1.15 and 1.16, but the modding scene has of this writing has not yet moved on from Minecraft 1.12.2 for stability concerns in the base game. This Discord server I found is full of people from this scene. Some of them are even developers of popular mods.

My family’s custom modpack is fairly lightweight because we have a lower-power computer or two to consider. As such, once my sister, Tzarina8472, had all the gameplay elements she wanted, new mods were always carefully considered. One of our mods involved using a rare crafting ingredient from woodland mansions, and we wanted a renewable source of them.

I turned to an old favorite: Soul Shards: Respawn by TheNut (there have been several versions, each by another developer). The basic idea is that you go out, collect mob souls with a shard, then use the shard in a cage. My problem was that the default recipe for a shard was way too cheap. Our seed has four witch huts, and if we are just going to spam a few high tier sould shard cages, then why bother? I’ve done that and ended up losing interest in the world, and I don’t want that this time.

Taz and I went through the config files and rebalanced things for using some more expensive, modded metals from what I like to call the Thermal Expansion suite, while keeping to the general design principles that appeared to have gone into the original mod. We ended up using two alloys: enderium and lumium.

Trouble: the way the mod is coded, those two metals are “block states” of the same base block called thermalfoundation:storage_alloy. I spent hours across multiple days trying everything I could think of to properly configure the mod. Suffice it to say anything I tried either didn’t work at all, or accepted any storage_alloy, even the much cheaper steel.

Special shout out to Watersfall, a mod developer on that Discord server I found. He looked at the publicly available source code on GitHub for Soul Shards and found a bug where it doesn’t accept block states in the config file. He even created a fork with a patch and used a pull request to petition that it be merged back into the main branch. He even talked me through how to clone his branch — and how to make sure I had the correct base version.

Compilation was another matter. Since the patch was written for the Minecraft 1.12.2 version of the mod, I needed to compile it with Java 8, or some equivalent. I don’t remember who, but someone talked me through making a shell script to compile the new version using the proper versions.

The other, smaller story I want to tell started when we noticed we didn’t have a way to remove enchantments. Taz had an expensive drill or saw from Thermal Expansion, and needed a way to remove it. One mod called Futurecraft backports select items from newer game versions, but because we need to use an older version of Forge, we would have needed to use an older version of Futurecraft that didn’t have the grindstone, the block we were after.

We tried using a small, one-block mod to add a disenchanting table, but of all the things it let us disenchant, it refused to allow Taz to remove her one enchantment. Enchanting Plus looked like a good option, except for the fact that it also lets you selectively apply enchantments. Let’s just say I feel strongly against that feature, and Taz doesn’t see a problem and leave it at that. There were miscommunications, I balanced the config to make it free to remove enchantments, but prohibitively expensive to add them so as to not devalue our planned villager trading hall.

I also -could – not – stand- the default texture for the enhanced enchanting table Enchanting Plus adds. I find it to be way too busy, even though a close look shows that it’s the same 16×16 resolution as the rest of the game. Going by the crafting recipe, you’re adding an ender pearl and either some gold foiling or gold chains down the sides. I used Taz’s computer to unzip the .jar file for the mod and find its textures. Taz then used an editor to design replacement textures based more on the original artwork. I put the result in a resource pack, and I had to make sure it was the correct format version.

Final Question: I’ve had to prune several details that didn’t fit with the overall narrative. What are some details you’ve really wanted to include, but didn’t quite fit?

New OS Smell: Manjaro Linux

Good Morning from my Robotics Lab! This is Shadow_8472, and today, I’m starting my first expedition into another branch of the Linux family. Let’s get started!

Moving away from Windows involved one of the larger culture shocks I’ve ever experienced without leaving home. The concept of software package managers was something I had only seen on phones. The file system left me wondering where my secondary drive was. And the downright alien sense of open-ended desktop environment customization options almost sent me reeling with decision fatigue. But the mindset surrounding Linux lends itself to self-guided study, an element that is sorely absent from a number of other mainstream operating systems.

The switch to Manjaro has brought back some of that sense of culture shock, but the similarities are already surfacing. Of note, I am also finally trying out this fancy KDE desktop environment, now that I’m on something with a discrete graphics card, so I won’t be totally sure what change comes from where all of the time. The file system has some subtle differences, such as /run/.local, a directory I am otherwise used to finding in ~/.local. Software installation comes from either an official repository, or else code can be downloaded and compiled from AUR (Arch User Repository — similar to Ubuntu’s PPA, but it’s supposed to be safer to use). Furthermore, Arch-based distros have a rolling release schedule for their software, delivering the “bleeding edge” experience.

Installation was typical from what I have come to expect from distros meant for a desktop experience. I downloaded an ISO to “restore” to a thumb drive, and installed the intended install drive. I was sure to physically detach any other drives that I wanted intact before booting to a live session with a few essential programs and an installer application. It did offer a choice between a couple Office suites, which was nice.

Of note, I did have to install some proprietary drivers to get my NVIDIA graphics card to run Minecraft, or at least a custom mod pack. I hear it’s a bit of a gamble with KDE and that there are workarounds that tend to break with updates. I was cautioned to enable SSH before flipping the proverbial switch, but fortunately I was lucky and didn’t have to do some extensive repair.

I gave the system a few days to ease in before getting my father to rustle up my old PCI Wi-Fi card from somewhere in the garage. Long ago, we got this card when the machine was relatively new. I was in a dorm setting, and my wireless printer was particular about having only serving computers connected to the same wireless network. When I upgraded from Windows 7 to 10, was having the hardest time getting the upgrade to take. I even reached out to tech support some scammers who showed me to a network log or something and said, “These errors are what is keeping your computer from –what was it your problem was?– upgrading to Windows 10.” (aside paraphrased, the rest is as close as I remember) My parents were ready to pay these guys a reasonable-sounding fee, but the whole thing smelled off, and I backed out. Our own, internal diagnostics pointed to the Wi-Fi card, and I had to give it up.

My Wi-Fi card has had one of its detachable twin antennas smashed and trashed. In the meantime, I had need for my desktop to go wireless again. We bought a USB3 based antenna that served me well until the day I decided to use it with Linux. Since then, I’ve been using my Raspberry Pi 4 as a reverse Wi-Fi hotspot, and I’m quite proud of it.

Today, I decided to install the old card back into its slot and lo and behold, it worked straight away. I tried to run some speed tests to find if the newer Pi 4 was outpacing the older, more direct PCI card. But it was during peak usage in my area, so I’ll need to run something across my local network. Whatever the case, my father had the idea to stick the double-length antenna from the new Wi-Fi adapter onto the vacant attachment point on the old card.

Final Question: Have you ever reinstated anything you thought was hopelessly obsolete?

Family Photo Chest Part 9: NFS

Good Morning from my Robotics Lab! This is Shadow_8472, and today, I am exploring the my preferred method of accessing network drives. Let’s get started!

Storage of any kind is only as good as your ability to access it. On your typical modern, end-user computer, long-term storage is typically limited to a hard drive of some kind, and possibly some sort of cloud storage solution.

On another inbound tangential subject, file transfers within my family’s home network have thus far has been limited to using a USB thumb drive or bouncing it off an online host. But thumb drives are often already laden with data, and size limitations plague e-mail and chat services. SSH and SCP have helped, but they are a bit of a pain to get working smoothly.

File sharing has been around almost as long as computers could communicate. Different protocols have different strengths and weaknesses, and the best one for you can differ depending on your situation. I’m largely dealing with Linux, and NFS speaks Linux/Unix natively, or so I hear. The other easy choice would be SMB, a protocol with more overhead that Microsoft wants its customers to upgrade to Pro or Server to avoid having to use for file sharing. And according to data gathered over at Furhatakgun, I am drawing my own conclusion that SMB has more overhead per file than NFS.

If I would just follow a tutorial, I could have a much faster time with a lot less understanding. My target project was to backup my laptop’s home directory in preparation for migrating my drive from external to a newly installed internal drive.

I would have to say enabling NFS was easy only in the shallowest of terms. After enabling the protocol overall, I found my way over to the appropriate network share and had to resort to whitelisting my IP to mount that share (as root). And at that, I literally had no permissions to read, write, or execute that share — even as root. chmod!

All I know is that I am on the way to understanding, but I have much to learn before I can properly report back on it. For example, I’ve read that I need to have my NAS account name match my local user name. I’ve also read some about hard vs soft mounting, and how setting it up right can minimize the chance of data corruption.

Final question: Have you ever recognized that you know something, but not well enough to teach it?

Fine Tuning a Hosted Minecraft Server

Good Morning from my Robotics Lab! This is Shadow_8472, and today, I am covering the fine-tuning of my family’s Minecraft server. Let’s get started!

Rounding off the cliffhanger from last week, Apex’s tech support pointed me in the direction of making a contact account so I didn’t have to worry about impersonating someone else while getting support.

The next order of business was adjusting what I know to be Cron jobs, but they just call scheduled tasks. We want restarts twice a day, 6 hours off from our sister server. I set that up as two daily events with corresponding 15 minute warnings. The interface is still unfamiliar, but just now, I optimized it to have one event that reschedules itself every 12 hours (with a similarly arranged warning) instead of two warned tasks each going once a day.

I also set up auto saving. Before, while I controlled all the hardware myself, I was saving twice a day. I was even considering on bumping things up to four times per day on the new server, but they have a limit of two backups. Daily will give us the insulation we need while hopefully giving us enough time to address potential situations.

Next came the big one: a custom domain name. I won’t go sharing the actual URL here, because we are not a public server, but I’m glad we now have one to take with us if we decide to move hosts.

Setting up the domain name wasn’t so simple though. Sure registration felt great, but configuration was where it was all at. The last time I messed with this stuff was three years ago… HAPPY BIRTHDAY, BLOG! Anyway, I learned what I could about different kinds of DNS records. For the server, I used an A record to direct IPV4 traffic to the shared IP the server is on, and I used a CNAME record inappropriately to try and direct traffic to the XXXXXXX.apex.co server URL, thinking it would be handled from there. I actually needed an SRV record to specify more stuff about the kind of traffic to the particular port.

Along the way, I talked to three tech support representatives at NameSilo, my DNS host. I have the deepest respect for legit tech support, and I’m sure they all did their best, even if one or both of us didn’t follow the other at times. I’m just glad we managed to get things working.

Final Question: What uncommonly performed tasks have you learned more about on the second repetition?

First Week of Professional Minecraft Server Hosting

Good Morning from my Robotics Lab! This is Shadow_8472, and today, my family’s Minecraft server is off to external hosting. Let’s get started!

Apex Minecraft Hosting: If I had to give them one thing, it would be that it was easy to get things going first try. On the other hand, I’m having trouble with fine-tuning things. This is the story of how my family’s server, Creepers N Cream, is moving to professional hosting.

A streamer friend by the name of DS9Fireblade speaks highly of Apex’s customer support, particularly their live chat service. I’ve only interacted with them over support tickets, and I will say they get back decently quickly.

I know I said the server was graduating a while a while ago, but there is something to be said about keeping things going with the hardware you have, and I had a hard time accepting the transition. It took a soft merger with DS9’s newer, but larger community before I was willing to budge. With more people possibly coming on, the already overworked CPU would be at even more of a loss to keep things going smoothly. When DS9’s server experienced an anomaly during a version upgrade, I moved to push Creepers up to hosting.

I would say anyone with a decent amount of basic Minecraft server hosting experience should be able to migrate a world with Apex. I prefer the sleek aesthetics of MineOS’s web interface to Apex’s panel, but Apex’s panel has more complete functionality.

Another thing I noticed right away was how Apex is using less RAM than MineOS with just G1GC: at baseline, the server is now at just under 2GB while before, it was at 3GB when it wasn’t starting at 4.

Learning a new interface can be overwhelming. My MineOS experience helped a lot, but I came up wtih a list of things I wanted to talk with customer support about. I gave it a night or two, but when I got back into panel, I found the answers to some of my questions, though not all.

At present, I still have a few concerns for tech support. Apex’s account information appears to be directly linked to billing information, and that includes e-mail. So far, I am the one maintaining the back end, but I am not the one financing things. I’d also like to see about getting all those UTC times moved to something I’m a little more familiar with; I couldn’t find that setting anywhere. And then, maybe I can see about addressing the scheduling for bi-daily restarts and backups.

Final Question: When was the last time you have asked someone something, but got a bad answer because of a slightly different working definition of a word?

Emergency Teardown

Good Morning from my Robotics Lab! This is Shadow_8472 and today, I am not the hero of this week’s story. Let’s get started!

My laptop has had no business continuing to run for a few years now. It’s working on 10 years old, hardly ran Windows before I formatted over the wrong drive, and now it has suffered through a little more than a sprinkling from a water cup.

The first few seconds, everything was “normal” as I was panicking to turn the thing off, but capillary action won out, and everything shut off.

There was a minute of shock and confusion before I regained my composure enough to realise the possible danger of leaving a wet appliance plugged in. While liberating my laptop from its various plugs, I realized there might be hope if it could be dried out.

I can not thank my father enough for his help on this project! He literally dropped what he was doing to take care of my emergency while I was in no shape to handle it myself. I just shoved it into his hands wet side down and ran off and he did the rest.

I don’t know much about the actual teardown, but I hear the dust and critter fur at the bottom of the unit was dry. Parts were left to dry for around a day and a half. I wanted to do a rice bath, but my father told me that those are usually just for phones and then you gotta deal with any rice dust afterwards.

Before reassembling, there was an upgrade to make. I have a 1TB SSD intended for my desktop, but running Linux from a USB 3 drive with a small cable is kind of the opposite of portable, and with that sad excuse for a proper power port evicted, I’ve been able to take the laptop on Sabbath afternoon drives with my father, where we listened to a seminar by AWR. Two talks a week for roughly 45 minutes each, I had to mind OS’s umbilical.

Installing the internal SSD was straightforward. The original drive is the same length and width, but is noticeably thinner and much lighter. Most importantly, it fits the provided bracket so I don’t need some improvised block to hold things in place. Personally, I think the new drive is so lightweight that friction with the SATA connection alone would be enough to keep it from moving, barring impact from the wrong side.

Reassembly was delayed a few hours because my father wanted to try an epoxy to fix some plastic studs that have broken off over time. I always remember three of them rattling about, but one post’s superglue job was still holding and a small post with a fin was unfamiliar and didn’t fit any of the three holes. I surmised the later was from under the motherboard, a component that requires removing the whole screen assembly (not fun), but I actually identified the wrong screw hole. The remaining peg was located and all were affixed to their rightful positions once again.

I was not privy to most of the reassembly, but I did catch that going by pure memory has its drawbacks when you don’t have the teardown guide memorized. Also, the F9 key popped off, and we are waiting on a magnifying glass to aid in the particularly delicate work.

I brought a battery to the testing bench and arranged for the laptop to be booted to a live USB instead of my usual OS. I wasn’t there for the smoke test, as it’s called. My father reported, “The patient lives!”

Further operations are believable. There is a power status LED that’s broken off a tiny circuit board that I’d like replaced some time. We also have a faster CPU I might like to try, if neither are soldered in, the sockets are compatible, and my cooling system is up to it. For now, I’m just glad my old friend is still around.

Final Question: I have been trying to look into Firewalld for weeks now for my “supercomputer” project. Any ideas where to find a tutorial with some theory and isn’t just someone demonstrating a list of tasks?

A Pesky Game to Run in WINE

Good Morning from my Robotics Lab! This is Shadow_8472, and today, I am revisiting a very old topic from a few days short of two years ago. Spoiler alert: I don’t have a full solution for running SimCoaster (aka Theme Park Inc.), but I might have a clue or two. With that depressing ending out of the way, let’s get started!

Sim Coaster is a special game to me for the nostalgia factor. Read any write up by a well-read reviewer, and he’ll say it was a meh sequel when there was a better competing game on the market. Love for this game is so rare, I’ve even been referred to myself while researching how to get it to work, see hyperlink in opening paragraph.

Wine is not an emulator, nor is it a toxic beverage in this context; it is a compatibility layer. It looks at Windows executables’ logic, makes its best guess at what the equivalent logic in the local Linux or Mac operating system, and runs those instructions. Windows’ long legacy means it has an almost unfathomable library of software, so there are a mind boggling amount of settings to ensure maximum compatibility with as much of it as possible.

Lutris is a tool primarily used for playing games on Linux. It provides a nice graphical interface that configures and launches a number of “runners,” weather they be compatibility layers like Wine, or emulators like MAME, DOSBOX, or Dolphin. I don’t even recognize most of them, but I doubt anyone uses everything on a regular basis outside development — if that. The community can contribute installers for other people to use, but if your game doesn’t have one, you can still configure it manually.

From what I can tell, the Sim Coaster (sometimes spelled without the space: SimCoaster) installer for Windows has always been very stable in Wine; I’ve never had a problem with the installer. The WineHQ page on the game says the full game should be stable as of Wine 2.5. (For reference, I would have to go out of my way to find a version older than Wine 4.0.) I have it on credible authority that once a program gets full compatibility status, it usually doesn’t get worse.

Yet that’s where I have been for years here. I’ll update my progress, but I feel like I’ve been poking at a wall for loose bricks here, only to find one with the next wall behind it.

My biggest development was getting into the Lutris community’s Discord server. Linux is expansive to the point no one person can know everything, and the more focused of a community you can find for help, the more effective any help you find will generally be.

My second development was learning about the inner workings of Wine. Windows programs expect a certain file structure, so Wine creates a directory at ~/.wine called a Wine prefix –sometimes called a “Wine bottle”– to contain this file structure. In this Wine bottle, it provides free and open source equivalents to libraries Windows programs commonly expect, among other things to fool its programs into believing they’re running on an actual Microsoft Windows operating system.

I eventually made some tangible progress when I successfully created a 32 bit Wine bottle. While most programs can be made to work in 64 bit bottles, a few like Sim Coaster, just crash without much interesting to say to the debug log accessed by launching Lutris with lutris -d (Not just the one launched from the GUI). For all my trouble, I ended up with a text box titled A debugger has been detected saying Unload the debugger and try again.

And here are some miscellaneous clues I hope people like me might find useful:
1. 64 bit Wine bottles can only go back as far as XP, while 32 bit go back to Windows 2.
2. Sim Coaster only gives me its debugger error box when it’s trying to run in Win98 or ME, but not 2000 or XP.
3. It’s been suggested I may be bumping into DRM here. I have the CD, and Wine has that mapped to drive I (as in indigo).

Future things to try are getting the development version of Wine and making a bug report based on that. By the time I try this project again, I’m likely going to be trying on a distro friendlier to gaming. I’ve been interested in learning Arch, and I hear Manjaro is a good trade off for my needs. I’d just like to finish a project or two before learning another major Linux branch.

Final Question: What game from your past do you wish you could play again?

Family Photo Chest Part 8: NAS Software

Good Morning from my Robotics Lab! This is Shadow_8472, and today, I only noticed last minute that it’s time for this month’s edition of Family Photo Chest, so I’ll probably be on the short and wordy side. Let’s get started!

While I explored around a little in the Network Attached Storage (NAS) documentation last time, I rightly came to the conclusion that this system has more features than I will ever need. I knew I would need time –days perhaps– to scout the documentation.

Fortunately, I found a YouTube channel, mydoodads, with an awesome overview of Synology’s NAS operating system, Disk Station Manager. I highly recommend his series I’ve been watching for today’s post: How to Setup and Configure a Synology NAS. Topics are broken into 6 to 12 minute videos, and more importantly to me, his audio is clean and understandable. My one complaint is that he doesn’t always act like Linux is a thing. If you’re here to follow along, just go check his videos. He’s more set up for actual instruction than I am.

In the meantime, my vision for this system was to just have a simple external hard drive I can see from whatever file browser I like, sort of like the “K drive” at my university. My first impression upon seeing the login over a browser and seeing a full desktop was that that was the only way to use it. Watching mydoodads’ tutorial, I learned about the Server Message Block (SMB) protocol, which looks very much like my memories from the K drive.

There are other ways to access the device, and I’m still deciding how I’m going to get everyone using it. Right now, it’s connected to my personal subnet that won’t let anyone outside look at it, and I’ve given it a static IP of 10.0.1.2. I’ll need to see if it will automatically adjust to the different netmask (I hope I’m using that word correctly).

The one thing I haven’t come across in this video series is setting up RAID, which I already did before. He did go over shared folders, but I still need to set up other basic stuff, like user accounts and groups. Part of why I was getting lost was because I found and started messing with storage pools, which appear to be for when you’re dealing with multiple logical NAS setups on the same network. I still have so much to learn.

Final Question: Have you ever used a network storage? If so, did you understand at the time?

Minecraft NoVillage Datapack

Good Morning from my Robotics Lab! This is Shadow_8472, and today, I was going to cover work on my cluster, but I needed an easier week, so I worked on sysadmin stuff for my family’s Minecraft server. Let’s get started!

Minecraft is a constantly changing game. I don’t always like change. My ideal creative world is a clean superflat world with a normal Nether and End, but while working on a resetting End city with a friend, we found my creative server wasn’t just generating a clean overworld, but the End and Nether were also devoid of structures.

Structure generation in Minecraft is controlled by a single flag in the initial config file. Historically, it only affected the overworld, but more recently, as I found recently, it now has power over other dimensions as well. I wasn’t happy.

Plains villages are the only possible structure that can spawn that I don’t want. My plan was simple: create an empty structure file, and replace the contents of all unwanted structure files with it while preserving the names.

I started with a working datapack that fires off a series of fireworks in the shape of an American flag. I unpacked the server jar file and cringed at possibly having to do 50 or so of these structure file swaps. Fortunately, I’ve recently been working with the find command in Linux, so I had an idea of the sort of things it could do, and such a massively parallel operation is second nature to it. I had to look up a little syntax to target all files but matches, the -not command to negate the next option, but I got the feeling I was over the initial learning curve.

In practice, this project was almost self-assembling. The biggest hitch was when NBTExplore was required to edit level.dat when structures failed to generate, even after telling them to do so in the config options. I had to install mono, a compatibility layer for .NET framework applications. I had previously had issues with getting it to work while following the programmer’s instructions, but sudo apt-get install mono-complete was suggested on an old forum post from around 2011-2013, followed by a dead link. I also had to look up how to extract a .exe file from the given .msi folder using a version of 7zip that I’m pretty sure came with Debian.

It felt like a small miracle when NBTExplore showed up properly. I have no clue if I can zoom in, but I was able to get in there and do what I needed to.

In short: I pulled off something satisfying using mostly skills I already had.

Of note: Structure packs use something called a domain or something that can be turned on or off. In order to override default anything, you must place your assets in a domain called minecraft and in an appropriately titled sub-directory. It does not matter what your datapack itself is called. Voiding structures will only work with structures that aren’t hard coded into the game, like nether fortresses strongholds, or desert and jungle temples.

Final Question: If I submit this datapack for publication, what should I name it?

Recovery

Good Morning from my Robotics Lab! This is Shadow_8472, and today, I am trying to recover my Laptop’s Windows drive. Let’s get started!

This project… this project I never wanted to need… has bullied around other stuff, and I’ll be glad when the equipment I’m using for it is freed up.

What felt like ages ago, I was formatting a drive so I could install MineOS on a 1 TB drive and move my family’s Minecraft server over from a smaller drive. The tutorial I was following said to format sdb, and I formatted sdb, but sdc was the one I really wanted to format. I missed the warning signs, and by the time I noticed, the deed was done. Normal procedure would dictate that I immediately shut down and remove the affected drive, but it’s screwed in and the computer is presently functioning as my primary workstation. Aside from mounting it once or twice right away to verify the damage, I’ve mostly left it alone.

Ideally, I would have backed anything up right away and only worked on a copy. For that, we ordered an eSATA to SATA cable (with power included) and it came on a slow boat from Taiwan. In the meantime, doflagie, a friend from my family’s server who has a few decades in IT, told me how handy USB to SATA cords are and “[wished] you were next door, I’d throw you one!”

With the cord in hand, I hooked it up and quickly learned to treat it more like an internal SATA connection and less like an external USB drive. I HAVE A QUESTION OUT ABOUT USB TO eSATA. I had to rearrange the BIOS again to prefer USB over eSATA, but that wasn’t anything new to me.

I learned my way around the dd command. There’s a reason it’s called Disk Destroyer, and I’m thankful I haven’t learned that lesson for myself yet, and I hope this lesson I’m going through now is close enough. Data Duplicator, the actual name, is a rather odd command when you look at it. Where most commands would have you order your parameters, dd makes you explicitly state the input and output files.

I eventually dumped the formatted disk straight onto a waiting 1 TB SSD and took it to my tower upstairs. I don’t want any chance of wiping another important drive, so I grabbed the original HDD from ButtonMash, the drive with my first Linux install, and put it in my personal desktop instead of another Windows drive. I tried installing TestDisk from a package, but I was missing dependencies, and Ubuntu didn’t like my USB Wi-Fi dongle (What is it with that machine and OS changes needing different Wi-Fi? I mean, first Win10 hates my internal Wi-Fi card and now this?).

This is where the project lingered while I worked on my Pi 4 Wi-Fi to Ethernet router. I broke down and finished that the easy way shortly after posting about it last, and due to fatigue and a photo chest week, I bumped this post a couple weeks and used something I had in reserve about a scam. I had another one, by the way. This time it was only about half a Bitcoin, but I reported it right away.

With a working Internet solution, I installed TestDisk and let it run. All I know about this utility is that if you’re doing free and open source data recovery, you’re dealing with TestDisk. I didn’t really see another option. I used it to find missing partitions, and I didn’t understand a lick of what I was doing. I ended up giving up and making an ISO file of the original drive over the copy I had made.

ISO copies don’t appear to be readily editable, it seems. I’ve since been working with the main drive. Most of my work toward this project has been the slog through the hard drive, looking for partitions, multiple times over.

I tried burning Win10 recovery CD. which needed a few megabytes more than a single layer, single sided DVD. A new, low-end USB drive has joined the fold, and it’s the biggest thumb drive I now have, weighing in at 16 GB. The ISO Microsoft gave me didn’t work: “operation [sic] not found”. I tried booting to it from my GRUB CD, but was told something or rather was invalid. I also tried some small distro called Trinity Recovery Kit, but again, it’s the right tools in inexperienced hands.

I’m getting tired of this. I want to move on, and doflagie even told me I could be on this for months. I just want to run a general recovery program and see what I can grab from the mess of things I have now, then try again after putting the ISO back for another pass. After that, this project needs to go rest in peace.

Addendum: I was going to make this post a two parter, but in all reality, I’m done with this project. I don’t have enough content for a second half.

I carved out what I could with some program I forget the name of. It combed through the remains of my hard disk and spat out a bunch of files. At least it had the courtesy to separate them by file type, because when I opened the PNG and JPG folders to sift through the ashes with a GUI viewer, my laptop chugged at tens of thousands of tiny, little files.

I had to learn the find command to weed out the smaller ones. I figure in the hands of someone who knows what they’re doing, it can fully replace all functions you would expect from a GUI file viewer except actually generating a preview. One little adventure here was when I had around 22,000 or so PNG’s larger than one kilobyte , roughly 50,000 PNG’s total, yet 0 of those were smaller that 1k. The difference were exactly at 1k.

Another small adventure was when I moved the 1k files into their folder, but then it tried moving each file over and over again in an infinite loop. I immediately knew I was dealing with a recursive directory error.

When I finally went and combed through the reasonably sized PNG’s it was mostly stuff I probably had lying around in a cache or swap at some time. Other bits were system icons like for forward or back. The JPG folder looks more promising, so I hope to recover more memories from there.

I’m done with this project. As with a few of my other projects, I need to release this one before all progress possible is made. Data recovery is expensive for a reason. I’ve done what it’s worth it to salvage things. Any additional data the professionals might glean from my drive isn’t worth it.

Final Question: What projects have you had to lay to rest with no intent to ever finish?