Get the top HN stories in your inbox every day.
BiteCode_dev
VyseofArcadia
> Use it when it makes sense, but make sure you never, ever, depend on it.
> They will do everything in their power so you do.
It seems utterly insane to me that we put up with this. VSCode is a pretty simple tool. A recent iteration of a tool that we've had since the 60s. But they do their damndest to hook you and then keep you hooked.
It's like if a tool company put out a hammer with a comfortable handle and everyone bought one. Then to make sure sales stayed high, they started selling them with the handles secretly coated in cocaine to keep people buying.
makeitdouble
To parent's point, depending on your org "VSCode" is less the editor part, and more the server component coupled with specific extensions, and probably container definitions for some esotheric projects.
We have a setup guide for beginners, and the VSCode route can be set in 15 min , where going for any other editor would probably require half a day.
Switching to something else could of course be done with enough effort, but it would take some crazy level sabotage from Microsoft to go these lengths.
VyseofArcadia
> but it would take some crazy level sabotage from Microsoft to go these lengths.
That isn't unprecedented, but I think they are trying to go more of the boil the frog route these days.
paxys
FYI – you can go to github.dev (or press "." while browsing any repository) to get the same VS Code online experience, additionally with the repo automatically loaded into it.
Something else I find very confusing is that vscode.dev & github.dev are both free and run the editor fully locally in your browser. Github Codespaces on the other hand provisions a VM behind the scenes so you can run containers, build tooling and whatever else alongside the editor. That one charges by the hour.
v7engine
LPT: You can get Github Codespaces for free if you have a GitHub Student Developer Pack (which you can get one if you are a student)
jmhammond
Another LPT: Also, you can get Github Codespaces for free if you're a teacher!
WorldMaker
It's such an interesting benefit of VSCode being an Electron app. It runs as a true PWA on vscode.dev/github.dev.
Other fun tips:
- The '.' shortcut to github.dev works from Pull Requests too and puts you straight into a PR review mode.
- For those stuck in Azure Repos, GitHub's increasingly zombie cousin, the '.' shortcut also works from any Files view. (Though not PRs.) It uses vscode.dev directly rather than github.dev.
minimaxir
github.dev now has a "Continue With..." call-to-action which spins up a Codespace, so that differentiates it a bit.
westurner
From https://github.com/jupyterlite/jupyterlite/issues/1086#issue... :
vscode://vscode.git/clone?url=https%3A%2F%2Fgithub.com%2FMicrosoft%2Fvscode-vsce.git
vscode://file/path/to/file/file.ext:55:20
vscode://file/path/to/project/
https://vscode.dev/github/organization/repo
https://vscode.dev/github/python/cpython https://vscode.dev/azurerepos/organization/project/repo
https://vscode.dev/azurerepos/organization/project/reposwapball
You do get something like 60 hours free a month with Codespaces (with lowest CPU/memory), which is fairly generous.
Also - we get that the difference between all these things can be confusing. Here's a post laying out the vision for vscode.dev and why it exists at all: https://code.visualstudio.com/blogs/2021/10/20/vscode-dev
dmix
Can you share a VSCode profile across a team somehow?
We have a frontend with typescript + vue (volar) and it'd be great to have a 'standard' web VSCode interface we can share across the team as the baseline working version. So we don't have to worry about dependencies or someone seeing different error messages than others. ESlint is another one.
Our devs use 3 different IDEs so it'd be good for them to have one to compare to with having to screenshare.
coder543
Most VS Code settings can optionally be saved into the local working directory under a .vscode/ directory, which can be committed to a repo. When you open a workspace in VS Code, go to Settings. You'll see two tabs at the top: "User" and "Workspace". If you click on "Workspace", any settings you change will be saved into .vscode/ in the current directory.
You could also use a `devcontainer.json` to personalize the GitHub Workspace even further, so when people open up a Workspace, things are fully configured: https://docs.github.com/en/codespaces/setting-up-your-projec...
In VS Code, once you have an extension installed, you can go to the Extensions tab, click the more options button on a particular extension, and click "add to devcontainer.json", which seems like it would ensure that it is part of the Workspace by default.
WorldMaker
An alternative to devcontainer.json is that the .vscode/ "Workspace settings" directory also supports an extensions.json where the "Workspace" can suggest extensions to install. The easiest way is to go to the extension in your Extensions list (such as in the above example the Volar [Vue Language Features] extension) or in the "marketplace" and under the Settings cog menu is an "Add to Workspace Recommendations".
Developers opening the workspace after that will get a friendly notification popup to install recommended extensions if they don't have them installed. (It doesn't force the install, it simply recommends it and makes it easy to install. Which is nice, too, when Developers prefer in their own workflows to use alternatives or Preview Versions or no extensions.)
ohthehugemanate
My only complaint about vscode remote containers and codespaces is that they ruined me for every other IDE, especially in a team context. I can never go back to managing dependencies for every damn language/version on my local machine, just to be able to run the linters/tests/tools I need to develop well in that language/version.
With a team, I know that everyone has the same versions of everything unless they've specifically created an exception. New team members start up the IDE with all their support tooling already in place, automated tests runnable, etc etc.
Paired with codespaces, when I need to make a quick edit as a part of PR review or just to tweak something, instead of the GH text editor I get MY IDE, already configured the way I like it with an identical run environment.
I've used many IDEs over the years, from tricked out Vim to eclipse and jetbrains... but codespaces killed them all for me. I'm sure it's not for everyone but it is amazing for me.
dmix
That's perfect, thank you.
downvotetruth
Does not appear to work in FF Edit: Just tried with 115 on an Ubuntu install and that does work with both normal & ESR 102.6. In console, get error: "No measure found in Performance API for "start.block: Bootstrap" and a 404 warning for assets.github.com/static/primer.css
easton
I use it at work in FF. Maybe you have an extension installed that’s intercepting the “.”?
LatticeAnimal
Works for me in FF 115.0.2 and has worked for many months on previous versions.
downvotetruth
The issue is that when resistFingerprinting is set to true in about:config it results in the error and stopping the JS redirect to the login screen. Interestingly, this also appears to be why windy.com broke a few weeks ago.
jerpint
Do you mean to say that changes I make from GitHub.dev are reflected on my local machine?
naikrovek
if you commit those changes back to your repo, and pull them to your local machine, yes
WorldMaker
Plus any VS Code settings changes you make if you have VS Code Settings Sync active.
thunderbong
Only works of you're logged in.
mattigames
Not really unexpected is it
o1y32
Even a readonly version is very useful. The tree-based file browser on the left and in-editor navigation are helpful for browsing the code. Recent github updates added a tree to the file view, making this less important, but the vscode experience is still superior.
amanzi
I've known about this for a while, but have only just noticed a new (to me, at least) feature: Remote Tunnels
Docs: https://code.visualstudio.com/docs/remote/tunnels
This is super useful for me - this would let me easily connect back to my desktop PC at home while I'm away or connected to other networks.
OptoContrarian
I use tunnels to access my entire dev environment within my Quest Pro.
yaysyu
How often and for how long do you code like this? What has your experience been like? I always find the idea of coding in VR intriguing but am unsure of what the actual experience would be like.
EVa5I7bHFq9mnYK
I use NordVPN meshnet tunnels to connect to everything. Even when VPN is blocked by DPI, meshnet tends to stay on.
cubefox
Does developing like this for an extended period of time actually work?
hfkwer
What wouldn't work about it?
cgijoe
If you don't mind my asking, I am honestly curious about this. Is the QPro high enough resolution to do actual dev work inside it?
zmmmmm
It's a very personal thing. Some people happily do it all day, others declare it a blurry mess. I'm somewhere in between. I enjoy doing stints of 1-2 hours in there just for a change of scenery and to help me focus. It's perfectly usable for me, but it's not as good as a real multimonitor setup in general.
A key element is that although the resolution is lower than a real monitor, you get to make the monitor bigger. So the limit ends up being when you start having to turn your head to see what's on the other side of the monitor, which sounds benign but is an ergonomic disaster.
nickstinemates
Not for me, and I am sad about it. I wish it was.
zmmmmm
to clarify - are you saying you use the Quest browser to connect to the vscode.dev environment? Or do you use an app like Immersed with a desktop browser? Just curious if the Quest browser is powerful enough for it and works well enough.
ethanppl
Port forwarding is also very useful: https://code.visualstudio.com/docs/remote/ssh
It allows me to rent a cheap cloud machine, build and test code there instead of upgrading my laptop.
watermelon0
> For instance, right now you can have 5 tunnels registered for your account. If you'd like to create a new tunnel and already have 5 others registered, the CLI will pick a random unused tunnel and delete it. Please note this limit is subject to change.
I have a feeling that this limit used to be 10 tunnels/user, did they decrease it?
r3dp0w3r
I love Remote Tunnel and the Remote SSH feature. Super useful for developing on Linux on Raspberry Pi or a cloud VM when experiment with different Linux distros.
santiagobasulto
What'd be the difference with the Remote-SSH option?
hfkwer
You need an SSH server running and the remote machine to be accessible (through NAT, firewall) to connect there with SSH. With tunnels, it's inverted: the remote machine needs to be able to connect to the central server, which is typically much easier; then you can connect to it.
santiagobasulto
Thanks, this makes sense. I think I still prefer the SSH option, but I have to give Tunnels a try.
EVa5I7bHFq9mnYK
Seems like you also must have a github account to use that.
codeonline
Not totally related to the above but I have to say I love the vscode dev containers experience.
I am working on a few projects in the clinical research field with complex combinations of languages ,stacks and dependencies and love that we can bundle a complete development environment into the repo along with infra declared via docker compose.
mbreese
Specifically for clinical research, how do you deal with the cloud aspect? I’m a big fan of devcontainers, but can’t use cloud environments for security concerns — everything must be local. And setting up a local tunnel to vscode.dev is also not possible.
Do you have development in one environment and data in another?
explaininjs
devcontainers has nothing to do with cloud per say. It’s an open spec you can run fully locally.
mbreese
Right, which I do locally.
But, I used to use vscode’s server version directly on my remote server. Microsoft has recently made this impossible to do with their branded version of VSCode, instead opting to force people to make tunnels from potentially secured servers to vscode.dev.
I was more curious is the parent had figured out a way around this.
The server module from Openvscode and coder.com still both work for remote access, but you don’t get to use the Microsoft marketplace from those versions.
And now that I’m thinking about it more, I’m not sure if you can even use the devcontainer function from the server vscode (or vscode.dev) in the first place.
000ooo000
I wonder what kind of developers (i.e. demographics, place in career, tec preference etc) want to use a set up like this. I like my local development to be very local with as few links in the chain/surprises as possible, but maybe I'm just a crusty luddite.
TheCapeGreek
For me, the value proposition is spending less on hardware for similar benefits.
It's a lot easier to work with 8GB of RAM when your IDE uses 1GB to be a thin client instead of 4GB (this was roughly my experience using Jetbrains Gateway vs native PHPStorm).
worksonmine
Another solution is to use an editor that doesn't rely on the browser or electron (which is just another browser). That's the main reason I switched to vim, all my tools were electron and the fan was constantly spinning. No regrets, highly recommend.
TheCapeGreek
I'm a PHPStorm lad. I've thought about Vim over the years, but Jetbrains has been pretty great for being an all-in-one tool. IDE, git UI, database viewer, and convenient CLI.
Another option I considered is Sublime, but it seems a lot of its extensions that I'd need are not very up to date.
realharo
RAM is really cheap when you're not buying it from Apple.
TheCapeGreek
For the price point of entry level M1 Air or Pro, there is nothing that competes on battery life.
I'm in South Africa, with spotty electricity. I need a laptop that can sustain work for 4-6h without charge without spending an extra arm. Anything non-Apple that does this competes on the top end range, not entry level.
Cheaping out on hardware here just means I need to buy bigger backup batteries, so either way I need to spend a ton of money if I really want to avoid Apple that much.
nateb2022
There are a lot of laptops with soldered RAM.
orangea
My guesses:
- People who don't own a computer, e.g. university students who only use the school's computers (or K-12 students even), but who still want their editor settings to be automatically saved and used, and who don't want to deal with installing things on the computers they use (or can't install things).
- People who own multiple computers and who don't want to deal with syncing configuration such as installed tools, editor settings, etc.
mbreese
Or people who don’t want their dev environment to interfere with their primary system. Or who have multiple projects with different requirements/dependencies.
Onboarding with a remote setup like this can be very quick. Or really — the same tech (devcontainers) can be used locally just as easily with many of the same benefits. The onboarding/dev setup is reduced to building a few containers and getting the code. You don’t have to locally install packages or worry about incompatible versions of tools.
The remote aspect is available because it’s very easy for Microsoft to do with VSCode as an Electron app. Sadly, they are making it more difficult for anyone outside of vscode.dev to have a remote install without using their “tunnel”.
orangea
It's true that the sandboxing aspect of vscode.dev and codespaces is a major part of their appeal. It's unfortunate that operating systems were designed with more or less of a "if malicious code is running on your computer, you are already screwed" paradigm, and that part of the reason that running web apps in browsers is such a popular mode of operation is that they don't follow that philosophy.
Nanana909
Third option:
People who own a computer but prefer the iPad form factor, (taller aspect ratio is nice for code), and like having a portable 120Hz whiteboard, and arent afraid of operating said computer remotely via the iPad.
data-ottawa
Does VSCode.dev work well on iPad?
I tried it a year or two ago and I had issues with the keyboard shortcuts (had to disable keyboard shortcuts on ipados) and scrolling behaviour. I seem to recall having other issues with safari and the local files but it’s been a while.
I’m not in a place I can try it out, but if it works then that would open up remote web development.
_ZeD_
without a real keyboard??? in that case put me in the faint of heart...
WorldMaker
It's a tiny thing, but I love vscode.dev's Theme Tester Playground. It's the fastest way to suggest people try a VS Code Theme. For instance, I've been using LaserWave for a while now and you can see it in action here:
https://vscode.dev/theme/jaredkent.laserwave
It gives you a workspace with a handful of sample files to see various syntax highlighting bits. You can just about put any Theme extension ID in the marketplace after /theme/.
If you've got Settings Sync on, you get the see the theme in the context of your usual window layouts and some other things that interact with themes.
No install, no download, no need to switch back after you are done previewing it, just a quick easy URL to link.
flohofwoe
On Github (just press '.') it's quite nice for exploring repositories instead of using the regular Github UI. I don't use it for making changes though.
OmegaMetor
I've been using this for a while. It lets me have a single simple dev environment that I can access from any machine that I can use a web browser on, which as a student with a school owned laptop, has been very helpful. It gives me a lot more time to work on my projects as long as it doesn't have a gui, which I have to use my personal laptop for only at home. Also useful for managing dev environments for other devs in some settings, so you could give them Chromebooks or similar low power low cost devices. I also set this up for programming for our schools robotics team, works great.
makeitdouble
I'm sure for a set of people this is the main setup (this is totally viable, and probably opens the door to development on many alternative OSes, like on an iPad or android tablet), but I see it used a lot for "hit and run" changes on repository that are only auxiliary or seldom used.
For instance changing configuration files on a infra oriented repo, tweaking SQL on an ETL service, updating a internal library etc.
If those changes can be done in a quick and compact way, with the CI dealing with running the test, staging and release process, an online editor is the fastest approach.
pletnes
Documentation or other «static site» content can easily be edited like this, too.
jauntywundrkind
> with as few links in the chain/surprises as possible
This is the hinge. You're in the world of people who see this as opposition technology, as something opposed to your control.
But what about everyone else? How many different chaotic absurd onboarding tech systems do various companies have? We never had a good onboarding at my last job, my current job has two or three various onboarding paths - mine is a fairly fully featured Ansible and it works great but most existing devs piss upon automating our 30+ services & make their newbies go do everything by hand, including asking for .env files over slack again and again and again.
I think there's a general intransience-ness, a stuckness, that many devs have. They see cloud and automation as an enemy of what they know. But they are just stuck, unwilling to grasp for power, unwilling to figure out how to scale themselves & their world wider. It's not that manual slow systems afford better control, it's just that there's a colossal bias against getting better & newness that most people - including devs, those who should fight for mightierness - should be grasping for.
patmorgan23
Devs being opposed (or not embracing) automation is wild to me. Like that's literally your entire job, to write software that does stuff automatically, reducing the amount of tedious/manual task that have to be done.
I'm also of the belief that every on-boarding is a great opportunity to improve the process, update documentation, etc. You have this person that knows absolutely nothing about your processes/environment. They're going to ask lots of questions, those should be written down and placed in your KB so your not relying on tribal knowledge as much.
undefined
rbut
If you dont like the idea of having your dev environment in the cloud, coder have a self-hostable vscode docker image:
realharo
You can just use the devcontainers feature in normal local VS Code (https://code.visualstudio.com/docs/devcontainers/containers)
Even the next version of IntelliJ will have partial support for them (https://blog.jetbrains.com/idea/2023/06/intellij-idea-2023-2...)
orangea
Also see https://devpod.sh/ which has had quite a lot of exposure on HN recently.
mynameisvlad
This loads files off your local device, hence the "local development" part of the title.
The extensions might do things with your code (same as with Coder, albeit with a different marketplace) but the code doesn't live in the cloud a la GitHub/VS Codespaces.
aitchnyu
Do these allow the IDE to navigate code, ie will an npm install hide away the node_modules inside the container and the IDE doesn't know about it?
low_tech_punk
Top on my wish list is a solution for the Ctrl/Cmd + W key binding conflict with the browser tabbing system. Definitely a hard design problem when you put browser technology inside browser technology >_<
cdcarter
If you're in an environment where you're able to use Chrome, you can go to the kebab menu and select "Install Visual Studio Code", which will install and open the workspace as a "Progressive Web App". It will have its own dock/menu bar icon, you can ctrl/cmd-tab to it, and all keyboard shortcuts work natively.
Unfortunately, at least on Mac OS, you can't exit Chrome entirely or the PWA will exit too.
mcemilg
I was using vscode tunnel to work on HPC resources. In the beginning it was like a magic, as time passed it turned into a headache.
- I remember suddenly, we couldn't be able to connect because of a bug in a new release. Tunnel extension was updating itself automatically. I lost a working day to solve it, before realizing the issue.
- Interestingly its getting slower after working some hours, works ok after reset.
- Working on projects with 100+ files was slow, even opening a folder was very laggy.
- I use jupyter notebooks daily but heavy, its turning out to impossible to work with heavy notebooks.
Maybe most of the issues are fixed now, I don't know the current situation. If the problems will be solved, it's definitely a tool that I will use for my all dev stack.
IceWreck
Why use this - a stripped down unusable version of vscode when you can host a full instance of vscode on your linux server
boomskats
In the least snarky way possible - so that you can avoid having to host a full instance of vscode on your linux server.
WorldMaker
You can use vscode.dev to achieve something very similar:
- Run a vscode-server on your server: https://code.visualstudio.com/docs/remote/vscode-server
- Connect (tunnel) to that code-server from vscode.dev using the Remote Development extension
One small reason to do it with two steps like that as opposed to a single "box" of coder/code-server is that you get Microsoft hosting the bandwidth multiple megabytes of files to download and a reliable single PWA to install for however many linux servers you want to remote develop on.
ghuntley
Because of https://ghuntley.com/fracture - same problem applies that only official builds can access marketplace etc.
(I use code-server day to day but it’s a problem. No real solution. Suggest folks look at https://GitHub.com/coder/coder to provision environments w/code-server btw)
adamddev1
The announcement says that you can't use extensions that use node. I thought they might use WebContainers from StackBlitz to run node in webassembly with this?
https://blog.stackblitz.com/posts/webcontainer-api-is-here/
Or could use one for the tiny linux VMs running in WebAssembly, that could run anything...
ogoffart
That's not as trivial because extension that uses node also use the fact that this is the same node instance that runs vscode itself and use vscode API to do "things". Other things it does is accessing the file system or network which may anyway not work even in a WebContainer.
It is pretty easy to port an extension to be able to run as a web extension as well. This is documented there: https://code.visualstudio.com/api/extension-guides/web-exten...
I've done that for my extension. My extension uses a language server through the Language Server Protocol (LSP). In order to make it work as a web extension, I had to compile the language server (written in Rust) to webassembly, and also hack a way to query "import" files via vscode api instead of file system access.
CompuIves
The editor on CodeSandbox runs web VSCode, and in that version we emulate Node.js in the browser to run local extensions.
lioeters
I'm curious about the technical details. Could you elaborate on how CodeSandbox runs Node.js in the browser? Does it use a Linux VM like Alpine compiled to WASM?
lioeters
Oh I think I found the answer.
> Nodebox is a runtime for executing Node.js modules in the browser.
ilc
Please read the terms of use before using this:
https://www.microsoft.com/en-us/legal/terms-of-use
Personal and Non-Commercial Use Limitation
Unless otherwise specified, the Services are for your personal and non-commercial use. You may not modify, copy, distribute, transmit, display, perform, reproduce, publish, license, create derivative works from, transfer, or sell any information, software, products or services obtained from the Services.
Embrace, Extend, Extinguish. The playbook hasn't changed. The wrapper has.
naikrovek
ok so Microsoft choosing to license their VScode editor, that they created, however they choose, is "Embrace, Extend, Extinguish", now?
explain
ilc
Embrace, the community, take the air out of the room for competing products.
Extend, make a product only THEY can, that is a ++ product.
Extinguish, turn that community's work into a cloud product that they can not compete against, and that product will become dominant. No longer "Open Source".
Honestly judging by most developers they are doing a good job. They don't need to kill the entire market, but merely cripple it badly.
For me, it is pretty obvious what's going on.
naikrovek
that's called "making a good product" and "a better product than your competitors".
there no monopolistic manipulation, here. there are no deals with hardware makers to omit Sublime Text and pre-install VScode. there's no threat of refusing to sell Windows licenses or to increase their price if someone doesn't comply.
nothing was embraced. nothing extended. they haven't forked Electron or used some open source component, forked it and added features so that the userbase has left the open version in exchange for Microsoft's extended version.
this isn't EEE, this is basic product competition.
I still maintain that since the 1990s, a LOT of people view Microsoft through evil-colored glasses and they don't know it. they take those glasses off when viewing the activities of any other company.
Microsoft got the verdict they deserved in the antitrust trials. they were rightly found guilty.
Microsoft hasn't repeated that behavior in any meaningful way since, that I can see, and I've been looking. I'm just not confusing normal capitalistic badness for historical Microsoft badness.
ghuntley
https://ghuntley.com/fracture goes into this.
croes
You mean their version of what Atom did before and that only VS Code is allowed to use the VS Code marketplace. And of course things like this https://news.ycombinator.com/item?id=31760684
Embrace, Extend, Extinguish.
WorldMaker
Key components of VS Code predated Atom by some years. VS Code started as the editor for the Azure Portal and was part of the Dev Tools in IE11 and Spartan Edge.
naikrovek
what are they embracing?! they made this on their own. they're allowed to license it however they want.
not_your_vase
Hmmm... since VSCode is based on Electron/Chrome, it means that Chrome itself could be a webapp, and I could browse the internet using a Chrome instance that I have opened in Firefox?
ogoffart
No.
The native VSCode uses Electron/Chrome, but the web version of VSCode is (almost) the same frontend (HTML/JS) rendered with your browser instead of Electron/Chrome
flohofwoe
I don't think that VSCode is bringing its own Chromium runtime when it is running as web application... (it's also not the 'complete' VSCode experience because it can only install extensions that are 'web compatible').
gabereiser
The only reason you have a vscode desktop app is because vscode is just plain old javascript and will work with whatever html runtime. Chromium or webkit. It has nothing to do with electron.
MikusR
VSCode is based on Monaco https://github.com/microsoft/monaco-editor.
Get the top HN stories in your inbox every day.
Cool tool in a pinch.
Use it when it makes sense, but make sure you never, ever, depend on it.
They will do everything in their power so you do.
They will make it very attractive. Very convenient. At some point it will require active efforts not to. People might pressure you to do so, like when everybody asked you to create a FB account.
But unlike facebook users, you have the technical know-how, so if you put your entire dev stack in the proprietary cloud, with microsoft services on top of that, nobody will cry for you when you ineluctably get bitten by it a few years from now.
Big companies are not your friends. They will abuse it. You will get locked in.