Doctacosa

tools

Let's review how I handle my backups and how I save my data. I'm primarily a Windows user, so most of these tools are designed to be used in a Windows environment, but some are also cross-platform.

A basic tool in place to cover my documents, images, music and similar is Microsoft's OneDrive. It's cross-platform, runs quietly in the background and keeps a copy of everything in the cloud. It works nicely enough and lets me access many of my files remotely on demand, which has proven useful multiple times. But, and this is a big but, OneDrive is not a backup system. It's local + cloud storage, which can replicate your content on multiple devices, but it synchronizes automatically – if you accidentally delete or overwrite something, it's going to do the same on the cloud copy. You need something else to accompany it.

That's where FreeFileSync steps in. This piece of software is designed to sync content from one source to the other, and I trigger it manually once in a while. One major benefit of using it instead of copying entire folders manually is that it only adds, updates and deletes what needs to be, so it's much faster. You can save a set of rules to apply, so you can save individual sources with their own parameters. One of these rules copies the content of my OneDrive folder in a separate directory so I have a version that doesn't risk blowing up if the platform fails or I make an error.

Another one in the toolbox is Duplicati. It's set to make daily backups of some folders, notably the metadata of my Plex server. It can do incremental backups along with keeping set periods (like, say, the last 3 days, a week ago and a month ago), giving me the opportunity to roll back at various points in time in case something gets corrupted.

Finally, there's StableBit DrivePool. I have a storage array in a few hard drives outside of my main computer where the heavier content gets stored (videos, backups, endless Minecraft world saves...). I have it set to automatically store all the content on at least two different drives of the array. This way, if one hard drive fails, I have a good copy on a second one. I picked this option instead of a traditional RAID array as the files can be directly accessed on each drive as needed – no need to wait for the array to rebuild itself when adding or removing drives, it can be instantly accessed.

How effective is all this? You never really know until you need it, of course. Coincidentally, the secondary hard drive on my desktop computer died some weeks ago and I haven't lost anything important, nor have felt the urge to replace it. So far, so good!

#tools #backups

– Doctacosa

This blog

Its author

Many of you will know that I tend to have multiple projects going in parallel. Some time back, I explained how I keep track of the tasks I have planned. One thing I feel like I'm still missing is a way to keep an eye on the overall vision.

There are only so many hours in a day, so I tend to rotate between projects, either taking care of what's needed first, or whatever strikes my fancy at the moment. For example, a Minecraft game update will definitely need some work and takes priority. Last month, I had to update my Android apps to stay compliant with Google's store policies, so that had a deadline attached. Beyond that, it's whatever I feel would be the most useful and/or the most interesting at the moment.

To try to stay on track, I'd just check the main TODO list and the various items inside. That grew to be too much, though. Since most items now have several targets and ideas listed under them, the display gets too busy just to glance at everything at once.

Something I played with was using post-it notes on the side of my desk to only list the main ongoing projects, as a sort of main TODO: add a note when planning something, remove it when done, so it would be a constantly changing board. It worked for a bit, then reality set in where some projets move slower than I want to while other get put on hold, so the display is more static than I wanted.

I'm planning to try something new, by drafting a document that only lists the big picture instead of drilling down into the details. I'll check in later to tell you how this went!

#tools #projects #planning

– Doctacosa

Back in 2019, I covered the hardware I work with most of the time. My lineup has remained the same since, with the addition of a second tablet as the first one developed a problem with its touch screen. The weak point of the ensemble by now is the laptop, since it's getting closer to being 8 years old, so I started casually looking at my options. I wanted something maybe a bit smaller, ideally (but probably not) with a numpad, multiple ports and upgradeable hardware. I like the ThinkPad line, so this seemed like a good starting point.

Then I got an idea and went in the complete opposite direction with a locked down device with only two USB ports and no possible upgrades.

Oh, and it's a Macbook.

Macbook on a table

This is definitely something different for me, as I usually run Windows on all my devices and I'm comfortable in that environment. What I tend to work on is either web-related technologies, or Java-based software, which can run on about any platform, so being on a Macbook isn't really a limitation.

Still, this explanation is missing a detail: why a Mac?

The answer is fairly simple: I need a MacOS-based device if I want to develop anything for MacOS, iOS or iPadOS. As a starting point, I'd like to get a version of the Creeper's Lab Companion available on Apple's App Store in the coming weeks. This will be followed by something else I've been working on, aiming to cast a net as wide as possible.

If I need a Windows device on the move, my Surface Go is surprisingly capable as long as I don't push it too much. This will be my alternative as the older ThinkPad goes into semi-retirement.

#tools #hardware

– Doctacosa

Once in a while, I'll mention my TODO list. It's where I list what I want to do, note possible ideas, keep track of the status of my ongoing projects, and more. Where does this beast actually live, though?

The truth is, it's not regrouped in a single location. As things stand right now, I'm using three main tools to keep track of all these elements. But why three?

The main one that I've mentioned before is OneNote. It's designed to do just that: write down notes and sort them out as you go. The way the application is structured works well for me: you have several notebooks (I have a Development one), broken down into sections (Interordi, IOBoard, Creeper's Lab, ...), which are in turn broken down into pages (Priorities, Future updates, Ideas, History, etc.). Each page is a freeform text page, with formatting support, so I can write things however I want. I usually make generous use of bullet points that get divided into subsections. Having text pages lets me see a lot of items at once, and I like having a global overview. Bonus, OneNote is available for basically every platform ever and synchronizes easily, so I'm not tied to any device.

Another one that I've been relying on is Visual Studio Code with a few additional plugins. My main coding software also happens to make an interesting note keeping system. The way things are displayed ends up somewhat similar to OneNote, but there's a reason why I use this: to easily share with others. My development notes for the Creeper's Lab are there, in Markdown format, which I can then easily copy and send elsewhere. I use this method to share the information with the staff, so they have an idea what I'm working on. The pages are pushed online, where a simple viewer allows casual browsing. Fun fact: this Markdown viewer is open source and available on my GitHub account!

Part of this family of tools is Microsoft To Do, another app that's available on multiple platforms. While I've tried using it as a replacement to OneNote, it didn't quite work for me: like others, you can choose to sort your notes across multiple projects and sections, but the individual tasks have to be entered one-by-one in their own fields. This means I can't see as many elements at a glance and I can't easily move an entire section somewhere else like I would with a text document. However, I found a use for it: tasks with a deadline. I have self-repeating tasks with notifications for the daily servers list voting, the monthly Kenorland rotation, the newsletter preparation, and more. This way, I don't need to remember when something is due. Likewise, I had a note today to remind me to write this post!

While this set has been working well enough for me for quite a while now, I'm never 100% happy with what I have, as there are always small details I wished worked differently. Who knows, maybe I'll find something more to my liking in the future!

#tools #software

– Doctacosa

I took a day trip yesterday which involved about four hours total of train travel. Not one to let a good time block like this go to waste, I decided to work some more on an upcoming project of mine. A catch is that I often need to look up extra information online, while I would be cut-off from most everything there. While, yes, there is on-board wifi, it's best not to rely on that. Having a limited mobile plan, I didn't want to use my phone as a hotspot. So, offline it was!

I made sure I had all the files I would need pre-downloaded before starting, then configured my tablet with my usual development tools. The smaller device (plus attached keyboard) is light enough to carry around all day, yet has the ability to do everything I need it to.

Surface Go tablet

Since I wouldn't have a live connection, I decided to focus my work on making the system more reliable. This specific project needs to read data from external sources once in a while, but what happens if these sources are temporarily offline? This was a perfect opportunity to test it for real! I found several weird behaviors and outright bugs that I was able to correct, so that by the time this goes live, unusual scenarios like bad connections will already be handled properly.

One small problem: I ran out of battery before going home! I'm not sure what happened, since it's supposed to last longer than this, but maybe I didn't configure something right. That will be something to review... or bring the charger along!

#tools #hardware

– Doctacosa

You might know that I updated the Creeper's Lab network to Minecraft 1.19 right around the start of the month. What you probably don't know, however, is that I wasn't even home at the time! So, how did that go?

A few years ago, I described my hardware setup. From that selection, I do the vast majority of my work on my desktop computer. Rebuilt back in 2019, it still offers a very solid performance and allows me to run multiple programs at once. When I do Minecraft updates, I'll frequently run one or two servers and two clients of the game, plus my dev tools, plus the usual suspects like email, browser and so on. Having the raw power to handle all this together definitely helps.

I knew I was going to be away for a few days, so I prepared myself by packing the best alternative. I brought my laptop along, plus two Surface Go tablets as I've since acquired a second one, used. The laptop is rather old now, getting close to seven years of use, so it's not as fast as it could be. That's where the tablets come in: I use them as extra screens, with keyboard and mouse being shared among them. Since they're their own computers, though, I run some non-critical programs on them: notes, Discord, browser for references, etc. This frees up the laptop to run the game server and client, giving it a chance at keeping up with the testing I throw at it!

Laptop and two tablets

While this doesn't beat my home setup, it definitely does what I need it to. I've also spent a few actual work days using this very setup, and it went better than I expected. Here's to mobility!

#tools #hardware

– Doctacosa

Last month, I covered the hardware I use to work on my ongoing projects. Even more important is the software itself. Quite a few of them have become critical to my workflow, and here's a tour of the main items.

Git

I explained working on three different computers. I'll often be editing the same project across multiple devices, and it's important that I keep my code up to date on each. How should I do that? Copy files back and forth? There's a huge risk of errors by accidentally overwriting more recent additions with older versions. Place everything on a USB key? Not bad, but if you lose it, you're toast. Been there, done that. (I found backups... eventually).

Enter Git. This software's main goal is version control. Basically, each change I do is logged separately, with an explanation message and the date. This creates a list of all modifications ever done, going back to the beginning of a project. More importantly, these changes can be pushed to a central server, then pulled on multiple computers. In my case, I use the same dedicated hardware that runs the game servers as a storage location. This way, as long as I've got an Internet connection, I can send or obtain my latest changes with a single click! I've also started putting some of my code on GitHub, which is something I'm planning to revisit in a later post.

OneDrive

Besides code, there are other things I want to store: reference images, graphic libraries, documentation, draft files and more. In this case, I use Microsoft's OneDrive to store it all. Similar to Google Drive, Dropbox and other services, OneDrive lets you put your files in a special folder that gets stored on remote servers. You can then access them from other computers at will, and any changes are automatically kept in sync. I had my doubts at first on how well it could handle potential conflicts, or accidentally overwrite content, but it's proven over time to be very sturdy. As a bonus, all the files can also be accessed in any web browser in case I want to reference something in a pinch.

OneNote

I'll frequently mention taking a note of something, say something about checking through my notes, or refer to the mighty TODO list. That's something that I keep in OneNote. It's a note taking application that lets you organize everything in Notebooks, then in Sections, then furthermore in Pages. That way, you can break down and organize your thoughts without them becoming a huge, messy pile. I used to keep everything in separate, plain text files, but this adds a key feature to the mix: the ability to access my notes everywhere and keep them in sync. This means I can do what I want on any computer at home, on my phone, or even from work when I get a sudden idea.

Visual Studio Code

Last but not least, my favorite code editor: Visual Studio Code. This project is still young as it was first released only a bit over 4 years ago. It shares its name with his bigger brother Visual Studio, but that's where the relation ends as it's handled by another team on a different engine. There are two key points that made me adopt it:

1- Its speed: the thing is FAST, no matter what computer you try to run it on. The always responsive interface makes it a pleasure to work on.

2- The range of plugins available. While it can do quite nicely on its own, it can be extended to support a lot of programming languages and features, from the obvious to the more obscure.

The Git usage I mentioned as my first point? Built-in and ready to go, so I can compare my changes right as I make them.

While I use multiple other tools, these really form the backbone of my current flow. All have proven to work well, are modern and pretty much frustration free, to the point where I see my current setup as the best I've ever had.

#tools #software

– Doctacosa

There are quite a few tools I use to complete my tasks. Either hardware or software, these can be critical to getting good results and make the development process smooth. Here's a look through my current hardware setup!

The desktop

Desktop computer

My desktop computer, Dominion, is the latest addition to the line-up. Newly built at the beginning of summer, I assembled this to offer high performance so it'd be able to take on any task I throw at it. One of my critical choices went to the RAM, which I now have 32 GB of. When I develop and test new features for the Minecraft servers, I'll sometimes have my full lineup of development software loaded, plus a Bungee instance, plus two or three servers, plus two clients all running at the same time. That's a lot of memory used up, as Minecraft can get very hungry! This computer can thankfully take it like a champ. This is also what I use to create image renders of the various player builds.

The laptop

ThinkPad laptop computer

My trusty ThinkPad laptop, nicknamed Wagon, has been with me for several years now. While not a speed demon, it's a sturdy piece of hardware with a long lasting battery life and a decent performance. For the longest time, this was my main development machine, and I can take it with me to work from almost anywhere.

As some of you might have heard, my previous desktop died early last year. I ended up using the laptop as my main computer, connecting it to external monitors, keyboard and mouse for a more comfortable setup, and it proved to work so well that I delayed replacing the desktop by over a year.

The tablet

Surface Go tablet

The tablet I call Signal, while not my latest addition, is one that I've only recently started experimenting with as a work tool. This Microsoft Surface Go tablet has limited capacity but it surprised me with decent performance results after running some tests, so I installed my development environment to see how that'd perform. While I won't run any Minecraft servers on this, it's working great for lighter tasks, such as working on a website or web tool. Use its touchscreen, add in a Bluetooth keyboard, maybe a wireless mouse, and it's a capable enough setup! As a bonus, it's extremely small and light to carry. This allows me to indulge sudden ideas, as pictured here where I made improvements to the forums while riding a train.

That's it for the hardware aspect! In a later update, I'll cover the software mainstays that allow me to make the above work.

#tools #software

– Doctacosa