My Problem with Multiple Machines
Since having my first notebook I always hated the issue of not having the exact same setup on both my workstation and notebook. Over about 10 years I tried most of the solutions available out there never being satisfied with the result:
- Sharing the home directory using sshfs or NFS. This requires me to have the notebook running when using my workstation. Also performance is simply not as good. Didn’t work for me.
- Syncronization between both. Requires me to synchronize them before going out with my notebook for example or when coming back home. I even wrote my own wrapper around rsync to reliably do so, but in the end this was simply inconvenient.
- Only managing the config files in a git repository that is checked out on both machines. This helps with simple configs, but doesn’t help with most graphical tools. Also it gets really annoying to always add new or modified configs. Also making sure to not accidentally push credentials somewhere is important, which also means you have to have separate SSH keys for both machines.
- Only have a ‘thin’ notebook which you use to connect to everything via SSH. This excludes all useful graphical tools from productively using them. Now my daily usage of graphical tools is mostly limited to mails, web and some others. Still this is a huge pain. Also the requirement to always have an internet connection and a 24/7 running workstation is annoying. I also had remote controllable power outlets to circumvent this issue, but that just adds to the overhead of this or similar solutions like the one above.
- Have a notebook that is both, your workstation and notebook. Plugging in an external monitor and a USB hub and you are ready to go. This was my solution for the last ~3 years and it works very well. Unfortunately a notebook simply doesn’t have the performance required to compile, edit photos with a useful speed, play occasional games etc. With modern websites you can even feel a difference between browsing on a workstation and a notebook. Not to mention if you want to upgrade to a 4k monitor your notebook will suffer.
Not to mention, most of these ‘solutions’ simply fall apart once you are having different software versions on both machines. As soon as there is a non-reversable software change it will break everything.
My New Solution
As I wanted to upgrade to a 4k monitor, I had to find a useful solution. My two options were getting a new notebook this year or getting back to my workstation with the annoying synchronization problems.
By accident I stumbled across USB NVMe enclosures. It seems the first of them arrived about 2 years ago and they are a new technology. There are only a few chips available that adapt NVMe interfaces to USB-3 in that way. As far as I know there are three chip manufacturers that produce something like that and all of them seem to have their own set of issues.
Most reviews of them are very mixed. Some say they overheat, others complain about regular disconnects etc. Still I ordered one from amazon with a chipset I thought would be good. I also ordered a high quality USB-A to USB-C cable that was specifically designed to work for USB 3.1 gen 2 with up to 10Gbit/s. As I know USB can be quite fragile with a wrong cable I also chose the shortest option available, which is 30cm.
With this enclosure and a brand new 1TB NVMe, I installed my complete operating system on that drive. I first synchronized my home onto the NVMe and wanted to try whether it is practical or not. Actually I never went back.
I am running this setup now for 2 weeks without any issues so far. No disconnects, no overheating in normal use. Though initially synchronizing everything onto that NVMe made it quite toasty. I measured the temperature of the NVMe and enclosure. The NVMe controller got up to ~70C and the enclosure reached about ~45C. Yes, it was really hot but that was the only time it happened (transferring 400GB data is a lot more than what a normal running system does).
The performance and latency so far is really good. I even play games off that device (Portal 2 was probably the most demanding in terms of IO). And once I want to go somewhere with my notebook, I simply shutdown the workstation, unplug my external NVMe and am ready to go.
So far this is the best solution I have ever had and I hope this will never break down. Also I ordered a backup USB NVMe enclosure just in case I have trouble with the chipset at some point in the future or the enclosure breaks. The best thing is that I don’t even have to buy a new notebook as it is fine when not using it daily.
So at the end, I can recommend experimenting with these enclosures if you have similar problems.