It seems inevitable that remote dev environments will become ubiquitous.
With increased distribution of systems, increased use of cloud proprietary infra software that you can't run locally and now these custom SOCs. Companies are just going to give up on local dev environments and force everyone to write code in a browser.
My primary workflow on side projects right now is VS Code with an ssh connection to a GCP instance. It's very quick, and I can run it across both my desktop and laptop, so if I want to go work in the living room I can get up and get to work immediately on whatever was open in the workspace.
The only downside is that the difference between extensions installed on the remote and locally is a little confusing, but the extension ecosystem in VS Code has satisfied all of my use cases. I've also run into some occasional ssh hangups on weak connections, but I haven't experienced that isuse in a few months.
For years I was a linux guy, and now I see no reason to go back, because I can just remotely access a linux environment from whatever system I'm already on. Less time spent swapping between operating systems to work on projects, and a consistent environment, are both huge features.
I've been experimenting with VS Code remote for the past few weeks, and I'm really enjoying it. I have a Linux desktop that I run headless in the closet and can connect to it from thin clients. I recently bought the base model new Macbook Air to replace my Linux laptop which I'm hoping will give me the best of both worlds: thin and light laptop with great battery life which I can connect to a powerful Linux server/desktop for development.
This way I don't have to spend so much money on expensive desktop replacement laptops.
This is actually a good idea, I've been meaning to turn one of my old laptops into a media server, but it hadn't occurred to me to use it as a development server as well.
I'm in a similar boat as the Macbook Air, but I was going to go for a Surface Book because I want the detachable tablet features
Does the extension build/test code locally or on the remote system? It would be great to keep my local system free of all the build tools and dependencies.
At least VS Code means we'll have options for a half-decent IDE in the browser. (Not that there's anything wrong with vim or emacs over SSH-in-a-browser, but...)
Note you can open files through SSH in Vim. This is better that ssh'ing on a machine that runs Vim, because all the editing is done on your machine. It only uses the connection when you save the file.
Despite that I still tend to ssh to machines and use a local editor, because I typically don't want to just edit files, I also want to run some commands in-between editing files.
You can also SSH -X and start a GUI app on the remote machine. (you can install Xserver on both Mac and Windows) Although you need low latency/ping or it will lag.
I have tried this setup recently (with XQuartz) but it had abysmal performance compared to a Tiger VNC session with a Linux server and a macOS client.
I couldn't figure out why. I remember it was working better decades ago over 10Mbit/s connections, running on 80486 machines...
Maybe between 2 Linux machines running the same Xorg versions would work better?
I have not studied the Xserver protocol so I am only speculating. I think it would work better on older GUI's that uses predefined UI components vs apps that treat the UI as a canvas and re-paints rather then reusing components. That said, when experimenting I have found it works on games too. But high latency (more then 1ms) will kill the experience, so slow radio like wifi or a mobile modem would not work. Its funny that we have made so many advances in network an compute, both in reduced latency and increased bandwidth/capacity, yet its all eaten up by consumer stack layers, like 10ms lost due to slow radio, and another 10ms putting the image on the screen, and maybe 1-5ms in software layers. And a keyboard or touchscreen with 100Hz poll rate.
Personally, my development routine is to use VSCode's "Remote Connections" as my primary way of editing code/interacting with the CLI (via the built-in terminal). It lets me work closer to the shell with a shareable app instance (pointed at a dev.myappname.com domain) that I can share or Slack a coworker at any time.
Could you elaborate a bit on the shareable app instance (or just share links to its documentation)? That sounds really useful but I hadn't heard about this use case before
It’s vscode in your web browser. Run it locally in your dev environment and setup your web server to proxy vscode.your domain.tld to it and boom, you have vscode running in your dev environment that anyone with a link can access.
I haven't used the remote SSH feature, but I have been playing around with GitHub Codespaces through VSCode. Once you have the extension, you can select a repository and it will spin up a virtual workspace for you on their servers. It actually works surprisingly well- tasks like installing node packages is faster than on my local computer and it automatically handles things like setting up a proxy for local web environments.
With increased distribution of systems, increased use of cloud proprietary infra software that you can't run locally and now these custom SOCs. Companies are just going to give up on local dev environments and force everyone to write code in a browser.