the portable developer

Sep 20, 2020

Imagine for a moment if you will, a developer who can work at any desk, with any computer, with any editor. What would that actually look like? How much time would it take for you to master each and every editor, how about operating systems? I’ve been thinking about this question a lot the last few days. As I transition into a chapter of my life where portability is becoming more of a factor, I’ve been asking these questions. What aspects should I actually nail down before I get hit with potential circumstances of not having my home base?

I think it’s fair to say that the idea of being a “digital nomad” nowadays is easier accomplished given the ever growing black hole that are cloud based platforms. There are all sorts of free things available on the internet for the low low cost of your data and information. I get how it might be displeasing to think about the idea that even free services will profit off of you some way or another. But, I do prefer the inherent reliability of that option to having my laptop stolen and losing everything I’m working on.

If there’s nothing else you take away from this article, at least take this: offsite backups are your best friend, even if they’re an annoying one.

the code itself

Code is an interesting thing when it comes to backups. I’m hyper aware of if my code is complete or not, and I generally try to not push incomplete things into a backup or commit. However there is the sad truth that partial code / implemenation completions still are wanted. For this reason I tend to play with multiple git remotes. There’s always the public facing remote, which I use as the sort of psuedo-release candidate for commits. Then the backup remote where the code can be stashed without judgement, generally this is a private repository. In terms of hosting I tend to just use a self hosted Forgejoexternal link instance at the time being, I’ve used GitLab and other personal Gitea instances before.

Outside of Git, every few days I go thru and make a zip file of the barebones (no builds, output files, etc) repository labeled REPO-MMDDYYYY.zip. For these zip files I host them in my personal Google Drive as well as place them on my backup external hard drive. This sort of covers all the bases of if I have a stable internet connection or not, most of the time.

physical

Physical security can be a relatively sensitive subject. I generally operate under the assumption that I’m not some ultimate badass that’s going to defend myself from the vast majority of mankind itself. For this reason I think the alternate of software / hardware aided security sort of steps in. For my laptop, if it’s windows it’s BitLocker, if it’s Linux it’s LUKS.

On top of this, a few years ago I invested in a YubiKey and set it up with all of my machines for unlock/decryption usage. If you wanted to take this a step further, having a self destruct or “kill switch” would be a good idea.

software

I remember very clearly when I had discovered portable software. I was in the 7th grade and playing around with running things that weren’t allowed, on my Middle School’s computers. I’m sorry to my technology teacher, but it was me, that got that one program running that you hated. It wasn’t anything malicious, I hadn’t discovered malware/virus creation yet. But this transitions nicely into the idea of having a portable OS on a flash drive. It’s by far not the most elegant of solutions, but having a portable distro on a flash drive with your persistent memory is perhaps one of the more reliable alternatives to downloading software you absolutely need every time. It comes with the caveat of being able to make the computer boot from USB, if a machine is properly secured, you shouldn’t be able to get into the BIOS.

conclusion

This is just a write up of what I’ve been thinking about the last few weeks. It’s a contingency plan that has sort of spinning the background these last few months. If you have any ideas / questions, definitely let me know!