It's hard to sync more than one machine

I've long seen it reported that the sales of desktop machines is decreasing (although workstations are keeping steady or growing), whilst the sales of laptops, tablets (although almost entirely the iPad) and phones have shot through the roof. Most of the reporting that I've seen has claimed that this is likely due to people not requiring more powerful machines for work or daily tasks - indeed most professions don't require a powerful computer for most work, and with the ubiquity of high performance build servers, even some engineers and programmers don't require the use of a powerful computer.

I think that this is probably part of the reason why, but there's also a bit more to it.

It feels like almost everybody has some form of cloud-based storage these days. From the previous standard-like Dropbox or Google Drive to the pre-installed iCloud or OneDrive, almost every person that I know has or uses some form of cloud storage - I even have three of them! My university provides us OneDrive, which I use for storing university-related documents, I have a Google account, which I use for storing lots of personal documents, and I also use Google Photos for storing photos from my phone (and good luck trying to tell me its the same as Google Drive).

All of this feeds into one of the major gripes I have with any primarily cloud-based solution, such as the storage solutions above - synchronization is really really really hard. I've definitely run out of fingers to count the number of times that I've tried to work locally on a synced document, only to later be told that it had caused a "conflict" with the document because I'd also tried editing it on another machine whilst I was somewhere else. Countless hours have been spent manually figuring out which of the two or three versions was actually the right one and combining them in various ways, only to figure out days later that I'd chosen the wrong document to keep.

My quest (and probably everyone else's quest as well) to try solve this issue has been long and storied. I originally started out with a Dropbox account and a dream, before moving to Google Drive after I found out that it had an additional few gigabytes of free storage space. After moving to Linux (and thus losing access to a native Google Drive client), I began using Syncthing to try to synchronize all my devices. Unfortunately, none of these ever quite felt right to me whilst I was using both a desktop computer and a laptop, as I'd typically find that the synchronization time would be long enough that (if I'd done enough work recently or left a computer unsynchronized for a few weeks) I could make myself a cup of tea or coffee with time to spare.

This eventually pushed me to my current setup, which is to use git for files that I plan on keeping locally on any machines (with separate private repositories in GitHub for each area of my life) in addition to a Google Drive account that is for strictly online content. Even this, I've found hard to maintain.

git is fantastic at version control and making sure that multiple people are able to work on different parts of the same project at the same time, but its strength is certainly not in synchronization of documents. Life using git has been made even more difficult of my own volition, by the fact that a large number of my private repositories automatically deploy to somewhere, such as this blog, or my main site (even my Masters' research and resume are repositories that are automatically built and deployed). This means that I typically want changes to be somewhat atomic, such that anybody else that sees them would be able to see a coherent document at any point on the commit tree. This habit has copied over even into repositories that are entirely private (such as my repository for university), resulting in there usually being uncommitted changes at the end of the day, which I refuse to push simply because I don't want to later have to force push.

This means that it is hard for me to do work across my multiple machines at the same time, and I can almost always guarantee that one of them is out of sync, especially as the number of repositories that I have grows. The major result of this difficulty is that I've spent less and less time on all of my machines, and more and more of it on a single machine that I can do all my work on - my laptop. After all, even if my desktop computer runs much faster, has a high refresh rate monitor attached and a significantly better keyboard, its far easier for me to just sit at a desk with my laptop and do work instead of trying to spend the time making sure that my desktop is entirely up-to-date - even if I am using git and Google Drive. Further, the entire problem of synchronization is entirely masked if I only use one machine, as opposed to the Herculean effort that I'd need to put in otherwise.

Now this leads us back to the my statement at the start of this entry that there's more to the "death" of the desktop than the non-requirement of powerful hardware - why have I picked my laptop to do all my work on, especially considering my desktop is technically superior in every way? The major reason for me is mobility. Perth is largely out of the COVID-19 pandemic (we haven't had a community infection since around May), and university has started up again, which means that I spend a significant proportion of my time at the university campus taking labs and workshops. I simply can't take my entire desktop setup with me (as much as I would love to), so I instead spend the majority of my day doing work on my laptop, and once I get home at the end of the day I don't want to spend additional effort making sure that my desktop is up to date so I can do some work on it - and I imagine there's a significant proportion of people in a similar position. People are often expected to continue doing some form of work out of the office (although I can't necessarily comment on the likelihood of this outside of the programming world, where you're only really called in when something goes horribly wrong in my experience), and as such their single device needs to be portable and thus a laptop, tablet or phone.

So, why is the desktop dying? Because of requirement of mobility and the difficulty of syncing more than one machine.

(This entry also basically lays out the reasoning for why I think that "cloud storage" such as Google Drive is actually closer to an automated backup system than a synchronization system)