Development on a remote machine.. But Why?
Since I started working with other team members, sometimes I wanted help of a team member, on a part of the project and usually that was a small task, like a couple hours worth of work, but there was a little annoyance – I had to get that team member set up with the project and in my experience sometimes, developers took the entire day to get set up with their development environment (that’s why I prefer using docker for development).
I wanted something where I could just get them up and running without worrying about having them setup on a project which they might never work on again.
Found out about VS code remote development plugin and it seemed cut out for what I was looking for. Quickly got setup using this article and within a few hours of use I was just loving it.
Setup different SSH users for each project, with all of the required tools needed (docker, nginx is what you need at most though) and I was ready to roll.
As a side effect of development on a remote machine I got the following benefits:
Truly work from anywhere
As long as you have access to the internet and you have a computer that can run VScode, you are good to go. Now I no longer have to carry my bulkier development laptop and I can take in my sleeker and lighter laptop with me when going out.
Just in case I need to work from a café, I can just connect to the internet, login into my remote working environment and I’m good to go, I have all the tools there, I don’t need to install anything on my personal machine.
Show WIP to client
Now I can show my “work-in-progress” directly to the client. Since this development machine is now on the internet, I can just give them a URL, there they can access what I’m working on right now.
This allows for a faster feedback loop and the clients don’t have to wait for me to deploy the code somewhere before they can actually see and give some comments.
Bye Bye ngrok
Every now and then when I had to work with some sort of a webhook (payment gateways etc.) or apps that don’t support locally hosted(on localhost) web apps, I had to resort to ngrok. Ngrok though is pretty cool but unless I bought a paid plan I had to run it again whenever I restarted my computer and the URL was new :(.
With remote development setup, I can just supply the URL that reaches my development code, as the webhook endpoint and that’s it
Worry less about system crashes
While I had this setup going on for a few months, I had a battery problem with my work laptop so I had to give it for repairs and they suggested that it might take them up to 5 days(working) to get my laptop ready. Now I couldn’t have gone without the work for 5 days, luckily this setup helped out here again.
I simply used the spare laptop and continued my work, fortunately my laptop was ready with 2 days and I was back in the usual action.
Give power to slow machines
I was able to even to get decent performance with an i3/4GB machine, thanks to the fact that all the heavy duty(server, node watches etc.) processes were running on the server, leading to distribution of processor load.
Chrome still choked the computer, but it was still better than if I had all the software and tools running locally
Share your work with teammates
The main reason I set all of this up. Now I don’t have worry about getting people setup with the projects locally and can bring in people for rapid help on the project.
Multiple Devs on the same machine
I even took it up a notch just to see how it goes and was able to get 3 people working parallelly on decent sized projects on a 4core/8GB remote server.
Multilple PHP projects do fine but as soon as you through multiple JS projects into the mix, the various npm watches and builds started bringing the system to a halt.
Overall a great experience with remote development, does just what I needed it for and then some more.