My New Home Setup
Tags: workstations
Published: 2021-08-16 07:24:44

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](https://pop.system76.com/) (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](https://www.wacom.com/en-nl/products/pen-displays/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. 

1. 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.
2. 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.
3. 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. 
4. Visual Studio Code has [really nailed the SSH feature](https://code.visualstudio.com/docs/remote/ssh). 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. 
5. 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.
6. 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. 
7. 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.
8. 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. 
9. Should any of my machines break, I can still be productive enough with the 
other machines in my house.

## Final Remarks

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.