7 ms·
I completely switched to VS Code once I discovered the remote development feature [0]. It allows you to run VS Code locally but work on a project in a different
by jiripospisil 6y ago
I completely switched to VS Code once I discovered the remote development feature [0]. It allows you to run VS Code locally but work on a project in a different environment (via SSH, Docker, WSL). The integration is seamless - search, debugger, terminal, extensions - everything looks and behaves as if it was running locally but is delegated to the configured remote. You can even have different remotes opened at the same time.
I use this setup primarily to have at least some sort of a barrier between my system and the gigabytes of NPM packages that get downloaded as dependencies. Moving between systems easy as well - I just copy the VM images. It also makes it easy to experiment a little bit. If I want to e.g. upgrade an important package and something goes wrong, I just revert the VM and I'm back in business. Having Arch as the distro is a nice bonus.
There's a chance that IntelliJ IDEs will get the same remote functionality as well but the timeline is unclear [1].
[0] https://code.visualstudio.com/docs/remote/remote-overview https://code.visualstudio.com/docs/remote/remote-overview
[1] https://youtrack.jetbrains.com/issue/IDEA-226455 https://youtrack.jetbrains.com/issue/IDEA-226455
- stefan_ 6y agoThis is such a hugely undervalued feature, and no other editors seem to provide anything remotely close. I found it particularly useful for the COVID work from home - I yeeted my work laptop into a corner and just SSH into it to continue working with the ergonomics of my home desktop machine.
- necubi 6y agoNot to be that guy, but emacs has had this for years via tramp.
- xxpor 6y agoAs someone who used tramp and switched to VS Code, it's absolutely not the same thing. The difference is plugins work on the remote side of the connection without having to be aware they're in a remote connection. VS Code makes this work by having an agent running on the remote host. For the first time I actually got autocomplete and code jumping working without a horrendous amount of effort.
- catern 6y agoThis is also true with TRAMP. Anything in core Emacs, and any package outside it that isn't aggressively poorly written, works transparently with TRAMP. The core utilities for interacting with the OS such as start-file-process are all TRAMP-aware. (Or more specifically, TRAMP provides file handlers which customize start-file-process)
- dima55 6y agoYeah. TRAMP is magical, and everything just works. And has for years and years.
- oblio 6y agoThere is a comment right above yours that contradicts you: https://news.ycombinator.com/item?id=24561943 https://news.ycombinator.com/item?id=24561943
- diffeomorphism 6y agoThat comment doesn't contradict the post at all. If anything it supports that statement and then goes on to mentions that high latency connections are problematic.
- oblio 6y agoHigh latency connections are a fact of life. If Emacs Tramp, for which development was started in 1998, when high latency connection were a lot more common, still has issues with high latency connections, that's not a glowing reference for its architecture. Especially since it seems VSCode manages those connections better. It's ok to admit your favorite tech has flaws, everything has them.
- diffeomorphism 6y agoNot disagreeing with that. I am just saying that the previous post was that plugins don't have to be modified with Tramp and work transparently. The post referenced above does not disagree with that. Instead it says that tramp does not deal well with high latency connections. I think is important to be clear where the issue lies if one wants to get it fixed.
- guytv 6y ago... and now he's the president. that shows ya!
- TylerE 6y agojEdit has this 15 years ago.
- fmakunbound 6y agoThat's cool, but you can just "screen emacs" since it's not implemented inside a giant web browser.
- vixit 6y agoOoh, if IntelliJ gets remote functionality I'll be very happy.
- kamhh94 6y agoI spoke to the team in KubeCon last year and they said “our research team is looking into it” with a hand wave. I doubt IntelliJ will actually implement this anytime soon, sadly.
- enjoylife 6y agoI agree and not saying they would get to it, but considering that was pre-COVID, I would imagine/hope they might reprioritize.
- FridgeSeal 6y agoRemote and Docker based Python environments have worked for a while in PyCharm.
- rckoepke 6y agoI use JetBrain's remote python interpreter functionality[0] with great success and convenience. For anyone whose development environment is appropriate for its use, I honestly cannot recommend it highly enough. It's only available under the full "Professional" license version, however. This uses SSH and SCP to automatically deploy the code to the remote environment and run it with the interpreter on that machine, rather than your own local laptop/desktop. One advantage is that it does not require any special software to be installed on the remote server. I believe VS Code's solution requires a pretty hefty installation consisting of basically an entire copy of VSCode onto the remote server. The downside of JetBrain's approach... I believe that it requires a local copy of the files in order to perform the "LSP"-like syntax error highlighting / suggestion functionality that JetBrains software is so lauded for. This could be difficult/inconvenient if your codebase is particularly enormous, or if you aren't allowed to mirror it locally. However, given the amount of support that JetBrains has for this kind of setup, I wouldn't be shocked to see an additional option for something more in the style of "VS Code Remote Development" 0: https://www.jetbrains.com/help/pycharm/configuring-remote-interpreters-via-ssh.html https://www.jetbrains.com/help/pycharm/configuring-remote-in...
- ezluckyfree 6y agoNote that this feature doesn't work in open source builds of VSCode, it's an MS only thing.
- laqq3 6y agoI read about this fact elsewhere also. Could you expand on this a bit? My impression was that VSCode and its associated extensions are open source, so I'm curious how Microsoft could make certain parts exclusive to its own build of VSCode.
- toupeira 6y agoThe situation is similar to Google Chrome/Chromium: Most of it is open-source, but the release binaries contain some proprietary bits for telemetry, marketplace access, etc. A FOSS build is available at https://vscodium.com/ https://vscodium.com/
- bostonvaulter2 6y ago> I'm curious how Microsoft could make certain parts exclusive to its own build of VSCode. By packaging it as an extension that isn't licensed like the rest of VSCode. Also on a related note, if you're using an open source build of VSCode (such as VSCodium) then you cannot use marketplace.visualstudio.com/ https://github.com/VSCodium/vscodium#extensions-and-the-marketplace https://github.com/VSCodium/vscodium#extensions-and-the-mark...
- nnt38 6y agoYou absolutely CAN use marketplace.visualstudio.com, you just have to break ToS.
- cercatrova 6y agoBecause VSCode is under a permissive license (MIT) rather than a copyleft license (GPL), Microsoft can add any proprietary extensions it wants. "Permissive" licenses are only permissive for the creator and other developers (only sometimes), not for the end user.
- lima 6y ago> I use this setup primarily to have at least some sort of a barrier between my system and the gigabytes of NPM packages that get downloaded as dependencies. You can do something similar with IntelliJ by running npm inside a Docker container with your working directory mounted into it. IntelliJ will happily index the resulting node_modules folder without executing any code on the host.
- 5d749d7da7d5 6y agoRemote has been a game changer for my development as well. Work forces me on a Windows machine with the full suite of corporate spyware. Said spyware loses its mind when compiling, debugging, language server inspection, git actions on large repo, etc. Performance loss is somewhere in the region 2-10x. With remote, I am able to do all coding on a non-infested Linux server with almost seamless usability.
- easton 6y agoYour company is equally cool with you just having all of your code/IP on a unsecured (i.e. not running crazy large antimalware, not actually insecure) Linux box?
- tda 6y agosounds like my company: any windows machine is infested with a dozen or so McAffee things that make it unworkably slow. But none of the drones that role out McAffee has ever touched linux or osx, they prefer to leave that alone. So even though I actually prefer windows as a desktop OS, I mostly worked on a MacBook (until the pandemic, now I WFH on a my personal windows machine). But since WSL2 is finally backported to whichever outdated windows my corporate laptop runs, it is actually quite usable with VSCOde/remote containers + docker
- ravenstine 6y agoIt's been pretty useful for developing on my Raspberry Pi. I wouldn't say the SSH feature is 100% polished, but it's pretty dang good.
- halayli 6y agoI use clion by jetbrains and been using remote development feature for almost a year now.
- sebastos 6y agoMaybe it works for literal remote development, but the jetbrains support for remote dev in a docker container is a complete afterthought. There's tons of critical, relevant feature requests that have been stuck in the pipeline for years. In vscode, it is well thought out and polished. My team desperately wanted development out of containers to ease on-boarding and standardization of development environments. Trying to make it work with CLion was a nightmare that was practically dead before it started, and we thought we'd never get it. Then we found vscode's support and have never looked back. I sometimes laugh looking back at what we were having to do to get it to even slightly work, and think about all the troubles we would have had ahead.
- nka 6y agoI have built and used this[1] for some time now, ie. i run vim inside my devcontainer, and i'm happy with it. [1] https://github.com/nikaro/devc https://github.com/nikaro/devc
- tda 6y agoIt is also great for string all dependencies for development together in a docker-compose file. On any machine you just have to git clone and open vscode in the container and you are good to go. Even if you require a particular version of postgresql, some compiler version or a complete Kafka cluster; everything can be configured in a Dockerfile/docker-compose file and stored with the code. No more pages long readme's of how to get all dependencies set up just right. Especially when often switching between projects and machines this is a godsend. And for onboarding it is so easy to get someone a fully configured working environment.
- Vinnl 6y agoThe only thing that's been preventing me from fully adopting this is that I don't have my local shell environment (autocomplete, syntax highlighting, etc.) anymore. Maybe I'll have to look at getting that setup in a container sometime, and then copy that over to every container I use.
- sebastos 6y agoYou can add "-v" flags in the .devcontainer/ json file that map host stuff in so that you get all of that stuff!
- scoutt 6y agoAbsolutely. I build Android images (AOSP/kernel/lk customization) and at the beginning I was using Eclipse over a shared network folder (I have dedicated remote hardware to host and build these monstrous images), but everything was a chore. Then I switched to VSCode + Remote Development over SSH. Imagine placing the workspace at the root directory of the entire Android source tree, pressing ctrl + shift + F and finding anything in less than a couple of seconds. For C/C++ code, press F12 just ANYWHERE on the code to go to the definition, no matter if it's the entire kernel code, or vendor or AOSP code: it just finds the definition at lightspeed. For building I use the integrated console. If there is an error or a warning anywhere, you can just click on the console an it takes you to the file with the error/warning. Also it integrates perfectly with Git and has extensions to parse DeviceTree files. And everything was just much more appreciated while working at home during pandemic. It sounds like a testimonial advertising, but it's the way it is.