A while ago I switched my home setup for development and it’s been such a success that I decided writing a short blogpost about it.
The setup involves three machines.
- I own an Intel NUC. This machine runs popOS (a variant of ubuntu) and is meant to run heavyweight code related things. It typically runs docker, databases and machine learning scripts that take a while. It also serves as a data server where all of the larger datasets that I use are stored.
- I also bought the cheapest M1 mac mini that has 16GB of RAM. This machine runs all of my creative software. It works with my Wacom One drawing screen as well as all of my microphones and screen-recording software. This machine is also a user-interface of sorts for my NUC. I mainly run visual studio code via ssh, the code itself runs on my NUC but I can still use my big screen on my Mac as well as all of the snippet tools that I am used to.
- I also own a laptop from my employer. This is an Intel Mac (the one with the terrible keyboard). It is able to run all of the aforementioned software when I’m on the road but it is also able to SSH into my NUC. This laptop is also the only machine that runs social media and slack. The idea is that this laptop is my distraction machine that I can physically turn off by shutting down the lid.
Things that work out very well
There’s so many benefits to this approach.
- I can run a heavy machine learning algorithm while recording. Since the machine that is running the recording software isn’t the same machine that is running the machine learning script I suddenly don’t need to worry about any lag when I’m making educational content.
- In general, the NUC is a much better deal in terms of hardware. This is especially true for the disk, especially when you compare it with the apple hardware. It’s much cheaper to invest in a second lightweight linux machine than it is to upgrade the specs on an apple device.
- Upgrading an apple device is near impossible (boo apple!). But upgrading the NUC is a breeze. I got 32Gb of RAM but nothing prevents me from upgrading it to 64GB in the future.
- Visual Studio Code has really nailed the SSH feature. It’s a native experience, really. But the killer feature here is that all the things that currently don’t run on the M1 chip (tensorflow, docker) all run extremely well on an Intel machine running linux.
- I certainly need to use slack and I also need to check into social media from time to time. But the nice thing about limiting that to just my laptop is that I’m literally able to “shut the lid on distractions”. It’s proven to be a huge reducer of stress.
- I could have chosen not to go with the Intel NUC in favor of something that’s heavier. But, with 12 threads, the NUC is pretty darn good for the small form factor. It’s also pretty light on energy consumption since the hardware is more like a laptop than a server. I also think it’d be a bad idea to go for heavier hardware. If I had bought a big machine with GPUs then I’d have huge fans spinning on my desk and I’d be writing my software on a machine that doesn’t represent the average persons availability for compute.
- If I wanted to, I could totally bring the M1 Mac and the NUC with me! Sure, there’d be some fumbling with cables involved but both totally fit inside of my backpack. It’d be very easy for me to move my entire setup for a few days if I wanted to work from my parents house for a week.
- Theoretically, you could also replace my intel NUC with a VM in the cloud. My setup however, doesn’t require the internet. It only needs the network in my home.
- Should any of my machines break, I can still be productive enough with the other machines in my house.
Especially with the advent of home work, a lot of us lucky developers can rethink what our ideal setup might be like. I don’t like the idea of investing in big apple machines that aren’t upgrade-able and this NUC setup really strikes a balance. I imagine at some point in the future, when laptop manufacturers finally get their keyboards in order, this setup might also work for windows machines. The laptop can be become much more of a user interface, where an upgrade-able linux machine can run all development software you’ll need.
Citation
For attribution, please cite this work as
Warmerdam (2021, Aug. 15). koaning.io: My New Home Setup. Retrieved from https://koaning.io/posts/mac-nuc-ssh/
BibTeX citation
@misc{warmerdam2021my,
author = {Warmerdam, Vincent},
title = {koaning.io: My New Home Setup},
url = {https://koaning.io/posts/mac-nuc-ssh/},
year = {2021}
}