Aaron Ellington


Attempt Number 1

I wanted to just use one machine. I could use a laptop and dock it into my home desk or work desk but this had some major issues. I didn’t want to be stuck with macOS as my only option. My Linux laptop was not great (battery life/wifi issues/etc.), Windows didn’t have WSL 2 yet. Here were some of my bigger issues with this method and using a MacBook Pro:

Attempt Number 2

Have 3 machines that I use: home desktop (Windows), work desktop (Linux), and laptop (macOS). Being able to sit down and work at any one of them and pick up where I left off at a different one is a bit annoying. Here are some of the problems I’ve had:

Attempt Number 3 (Current)

I was dealing with Attempt Number 2 for some time and then something wonderful happened… VS Code Remote Development was released!

I’ve been using VS Code as my primary editor for a while now and this extension has solved most of my problems! I use it to connect my local instance of VS Code to a remote machine over SSH.

This allowed me to have just one development server that I can connect to from any of my machines. I used a headless install of Ubuntu 18.04 Server as my development server. Then I could work and be productive from any machine that met these requirements:

That’s it.

Choosing a Server

You can be creative about what you use as your development environment. Here are some ideas:

There are some things to consider before choosing a server:

I use a VM on a hypervisor running on my desk at work for the following reasons:

Choosing a Client

At this point our requirements for our client are pretty low:

VS Code runs on all major operating systems (Windows/Linux/macOS) and since it’s open-source, others have complied it for most environments (FreeBSD/Chrome OS/Raspberry Pi/etc.)

This has made me much less picky about my desktop. I’ve previously wanted to stick to Debian based Linux distros because I’m primarily deploying on Ubunutu servers. But now I’m okay with running anything. I’ve even started to seriously consider choosing Windows because I’d only be using it for the window management. Then I wouldn’t have to worry about a desktop application not supporting Linux.

I no longer need a powerful desktop or laptop for development. My client can be pretty much anything. Here are some of the things I’m considering trying:


I’m sure I’ll be experimenting with different clients for a while, but that is okay. The whole point of this is I can quickly get up and running on a new client. All I need to do is install VS Code and gain SSH access to my development server.

I can only find 2 real downsides to this method:

I’m really happy with this setup. I feel like it’s exactly what I’ve been waiting for. I love the client/server model in general and I feel this is an excellent use of it.