Reducing dependence on a single device platform

Reducing dependence on a single device platform

For many months now, I have had a desire to make my computing setup device-agnostic. In practice, this is not completely possible, as a lot of software is either proprietary, only available for certain architectures, and in the case of Windows, I would have to have a completely separate script (since Windows cannot run the same script that would run on Linux distributions and macOS). It has been an interesting journey, and I am slowly getting to the point where the device I use no longer matters.

Where did all my files go?

With all of the different projects I have worked on over the years, I have a lot of files on my computer and in cloud storage, and it is a huge mess to try to find anything, let alone having multiple copies of everything. To solve this, taking the strategies I have in place for my software-based projects, I created Git repositories to store my files from projects regardless of the amount of code they contain. If you are unfamiliar with Git repositories, they are a useful way of storing files and tracking changes to those files, and are often used by developers as a form of version control. A developer can “commit” the changes that they want to save, discard any they don’t like, and the changes can be synchronized across multiple machines. More information about Git can be found here. Using Git for file management has the following benefits:

  • Files can be kept in cloud storage when they are not needed
  • The files in cloud storage can be pulled down from a remote server when they are needed in a much more granular way (instead of your OneDrive folder, which is twice as large as your computer's hard drive and slow to synchronize any changes between Microsoft's servers and your computer)

Theoretically, the only projects with files not under version control are the files that are not important enough to be stored and tracked for changes. What this means is that any computer I carry around will eventually act as a machine to access resources, and the kind of computer I carry around will no longer matter. Any computer I walk up to can quickly become useful to me, and this is the primary goal that I have for this project.

What about purchased software?

It would be reasonable to think that this project would be useless because any software specific to a particular platform, such as macOS or Windows, would not be allowed to move to other platforms without significant challenges (think about trying to install Microsoft OneNote on a Debian-based Linux distribution). This does make it difficult to fully understand which device will be the most useful going forward, and I cannot fully break free from any single platform as a result without incurring a loss from discontinuing use of that software. However, as I go through this experiment over time, one platform is likely to emerge as more useful than the others, and since my current computer allows me to run multiple operating systems, I can just stay in one operating system for most of my work and switch as needed.

Increasing Device Mobility

The previous sections of this article have focused largely on the ability to work from any platform, and while that may be true for desktop operating systems, such as macOS, Windows, and Linux distributions, the same can be said of mobile operating systems. I have an application on my mobile devices that allows me to pull a Git repository down, putting those files into the Files app on iOS/iPadOS, make changes to those files as needed in any application on that device, and commit/push those changes to the server I originally pulled them down from. This means that the device I use no longer matters as far as desktop/mobile, as they all work and will provide me with a way to access my files. Additionally, I am able to browse these files in the remote server no matter what device I am on, increasing productivity and preventing massive file downloads if I am simply referencing or downloading a single file.

Closing Thoughts

As a result of this project, I have found myself increasingly excited to think about a future where I can save money on computer purchases, limit the liability caused by having many important files on one computer, use almost any computer at my disposal, and most importantly, continue to detach from technology. This is a very complex solution to a desire to break free from technology, and while it is a massive effort to migrate all of my files by hand over to this new system and build out the scripts necessary to make this device-agnostic future possible, I am eager to see what life will be like after the initial setup is complete. Additionally, with all of the files stored in Git repositories, I have the ability to move from one storage provider to another at will, and it can all be done programmatically instead of spending hours doing the migration by hand. It will take a long time for this project's benefits to be fully realized, but I am looking forward to seeing what comes from this new method of organizing files and reducing dependence on a single device to get work done.