You can though. Chrome dev tools can edit local files. It's basically an IDE. You can easily build a single page application. You can even do some server-like stuff purely in the browser now with service workers. There are also plenty of online IDEs available spanning the gamut from toys to serious work environments.
For anyone that doesn't know that, open dev tools > Sources > Filesystem > + (Add folder to workspace) > right-click on folder > New file. Then double-click on file to open it for editing and save modifications with Ctrl-S. Of course it isn't an IDE, with even the editor being nothing more than a Notepad clone, and you're limited to client-side work which is in contrast to what OP seems to want.
I didn't see anything like that mentioned in the article, but I think that you can easily write code inside your browser today.
Also, web browsers are already extremely heavy and complicated. That complexity is convenient for end users, but it also has costs, like making it very difficult and expensive to create a new competitive browser. Do we really need to add another standard to turn them into offline IDEs on top of everything else?
Mentioned Glitch and Replit in the article - they're great and I love them but there's still something missing about relying on these platforms imho. I think cementing a default coding environment right into the browser would make it a lot more accessible - and actually be much closer to real coding where you're manipulating files and running code.
Plus: glitch/replit are quite slow to do any real coding inside of vs developing locally.
But maybe the future really is in the browser in this way.
But why stop there? Let’s bundle something like Excel or Powerpoint, or Photoshop or Final Cut.
If we’re deciding to bundle additional software with a browser, why would a programming environment (chosen based on someone’s favorite language) be top priority?
With good reasons at the time -- browsers were slow and heavy. Now we have (among others) the V8 Javascript engine and insanely fast client computers (all of any recent desktop, laptop, and mobile device)
Already did. The author found that installing Node.js needs knowledge about the command line while Excel just needs a few clicks of "Next" (I just did it yesterday)
Imagine if there was some kind of runtime the browser shipped with that could let developers create all kind of applications that are downloaded and run on demand. That would be pretty cool.
If you open the dev tools in your browser there's a full sandbox environment right there, not to mention the load of other sites available. I don't see why specifically Node should be installed.
I just wrote a bunch of code inside Chrome devtools to do some web scraping. It works pretty well, with a REPL, (overly aggressive) autocomplete, and good integration with the DOM, but it's also limited.
Saving and loading .js files uses a very non-standard flow. The editor is OK but I think basic operations like "find across files" are missing. It's very "canned" and not customizable.
In other words, it feels more like a debugging environment than a programming environment, which I think is basically what they were going for.
Agreed, the much stronger counterargument is that all major browsers already have JS development environments built in! I am curious to hear why this is not suitable for the author.
I think you're craving a 21st century version of Emacs, where the development environment is baked into the product. I agree it's awesome, and I think the browser comes the closest, but you're right, it's not there yet. I fear the reason is mostly security: browsers are used by billions, but Emacs benefits from relative obscurity.
I feel this deeply. Building binaries in a docker container to deploy as a Lambda Layer? Aces. Anything more complex than basic math functions across a few cells? Burn it with fire.
Yeah I love Replit and Glitch (not used the others) but I still think there's something missing. They don't feel like standards that are easy and simple to use. Two more points:
I believe node itself s just an environment/blank canvas as well. What is this "standards" you're looking for? There are a million frameworks, templates, etc as well.
> 1) offer native local speed - Glitch and Replit can still feel a bit slow on continual page refresh. 2) having your development files available locally - so that it's easy to take those files and upload to netlify etc or even edit using another app.
The solution to this is to use an actual native IDE, not try to shoehorn it into the browser, which is completely inappropriate.
I take the "wtf is user/local/bin in $path?" to be a question from a non-tech person that is interested in learning to code. I can't be sure though since the author stated he has failed to install Node js.
Should Chrome have Node JS loaded into it during install? I don't do web-dev so my answer is no.
Should there be browsers made for those learning web-dev that come with these? By all means, sure. Go nuts.
This also might sound elitist but I would expect the kind of person that takes an interest in coding to be able to google what $PATH is or hell take the complete instruction "add <dir> to $PATH"
So I fire up the terminal and write echo $PATH and then go back to SO to see that it looks like it's all set up correctly. But why do I need to go to SO? Why do I need to fire up the terminal? It just feels too damn hard and too opaque.
I think defaults and documentation and onboarding matter. Not to mention a GUI :)
It's one of those basic things. Like, when someone says "Make sure you have salt in the kitchen" they say just that, not "Open the first cupboard in your kitchen. See if there is a blue tin with a little girl in a frock carrying an umbrella" and so on and so forth.
The "make sure X is in your $PATH" is its own thing. I sympathize but there is a balance between docs for the expert and docs for the novice. This is closer to the former.
Also I'm fairly certain that an explanation of what $PATH is on unixlike OSes and how to manage that is one of the first things one will see when reading any number of dev basics/getting started tutorials. I understand wanting to jump right into writing "real" projects but things like this are why I think spending a little time finding well-written tutorials and doing them makes a big difference when picking up a new language/library/framework/etc.
There are install shields and tutorials for this. He's right, most tooling sucks and require arcane incantations. They do allow later flexibility though.
Steve Jobs if he was a programmer would slam today's tooling.
Why do I need to go to Stack Overflow? Being sympathetic I would say that because the Node JS Installer makes the assumption that you know what the PATH environment variable is and you know how directories work.
Why do I need to fire up the terminal? Your OS doesn't do things via GUI like you do, so you need to validate that what it needs is available in the manner it will use.
Too damn hard and too opaque.? How did you learn that Node js was even a thing? You weren't born with the knowledge and everything has a learning curve to it, very few things are truly easy to do starting at the very bottom.
I agree that things need documentation and onboarding. I think we can view the Node js docs similar to a shop manual at a auto repair shop - it will expect you to know what tools are what and how to do certain things.
90% of your programming life is going to be spent iterating up and down a stack of "how do I...?", "what is...?" and "why does...?" type questions. If searching for a keyword and then reading the first hit is 'too damn hard and too opaque', that could be a sign that software development may not be your thing.
Learning a new language is hard, whether it's a spoken language or, in this case, the incantations on command line.
Your comment to which I'm replying now shows that you do have the ability to learn this new language. You've correctly and successfully used the term "SO" to refer to a popular resource on programming. You have successfully "fired up the terminal." You've even used the terminal to echo $PATH. You're making great progress! :-)
The particular idea of installing node.js by default in web browsers seems to me like installing toasters on sofas. That would make it easier to make toast without going to the kitchen, but is not something that most people would want.
> why do I need to ______?
This is the current state of computers and programming. Computers are just concentrated piles of logic gates and they don't actually know what they are doing.
> You've correctly and successfully used the term "SO" to refer to a popular resource on programming. You have successfully "fired up the terminal." You've even used the terminal to echo $PATH. You're making great progress
He's been a user of HN since 2010...
It seems he likes the idea of programming more than the act of it. It's similar to one being enrapt with the idea of being an accountant but in reality, just wanting TurboTax to do everything and not learning anything. But i get to play pretend that I'm an accountant.
And in terms of (free) knowledge availability on the internet for any one profession, there is nothing that comes anywhere close to programming.
This is the most insane article and comments I've seen in a while.
It's programming. It's difficult, and there's a lot you need to know to be effective. Trying to just hide things like the command line is just pointless. You need to know it. Go learn it.
Windows has a perfectly good GUI to edit your PATH variable if you need one. Most installers also add their tools to that same PATH, so on Windows this is all pretty easy to accomplish. The problem is, if you don't know what environment variables are, the GUI won't be of any use to you.
You shouldn't need one though. Environment variables are one of the core basics of any program, and you'll need to learn about them eventually. The same thing is true if you can't deal with the terminal; there's a few "magic" commands to learn but most of the terminal stuff is just "how does this computer thing even work".
Most programming tools and languages, as well as their documentation, assume you know how to manage your computer when you start programming them, as well as some basic knowledge of how an operating system works. These tools and their getting started guides are written for people who know the basics of their computer and programming, and want to try out a new language like JS. If they're too technical for you, you're not the target audience. You'd get much more out of a book explaining you the basics step by step.
The terminal is everything but opaque; you tell the computer exactly what you want rather than clicking the "just make it work" button. You're in control instead of letting some tool assume what's best for you. In my experience, the "one button to fix all" systems will work for a while but once they break (and they will) they're basically unrepairable without deep knowledge of the tooling and its configuration as well as the defaults the installer chose for you and why they're now messing up.
A problem with Javascript and Python development is that the setup is very complex and that guides become outdated (especially for web dev). There's loads of edge cases to deal with so there's loads of configurations and options most tooling supports. The magic install button would lead many to ruin their operating system configuration because they've already installed another tool that might also have had a magic install button. These tools don't operate in a vacuum, they influence each other.
If you just want to program code, grab a great big IDE like MS Visual Studio on Windows (the full one, not Code) or XCode on Mac (no experience there, but it's trivial to install at least). The experience of getting started programming in C# is very easy, just select the types of program you want to be able to make (or "all" if you don't care) during setup and your tool is set up. No fiddling with the command line, just a shortcut on your desktop. You won't be making any websites in them from the start, but they'll provide you with an environment that Just Works for writing your first program, moet likely a console window that says "hello world".
If you want to get started in web dev, you don't need node or any terminal work, just a good text editor to write your own HTML, CSS and JS files in. Sure, node is what people use in production, but it's only complicating things if you're just getting started. Guides from ten years ago on how to write HTML and Javascript are still perfectly functional if you're just starting out.
If that's still to much to grasp, there's kits out there for Raspberry Pis that come prepackaged with tutorials and with exercise books for programming in scratch and Python. Your only barrier to entry there is the money to buy the kit. You'll still have to learn everything and work through stackoverflow or technical documentation all the time, but you won't need to bother with any terminals at least.
Complaining that programming is too hard because there's no fancy GUI for every tool is like me complaining that finances are too hard because I can't walk into a bank and start making money without reading all kinds of boring books about finances. There's easy ways to get started i...
My question is: why can’t the Node installer add /usr/local/bin to the path itself (if needed)? Why force me to do it? The Windows installer did it for me. I can just type `node` or `deno` into PowerShell and it loads up a REPL. I never had to add them to `PATH`.
On what platform doesn't it? I've installed node on Windows and various flavours of Linux and I've never needed to extend $PATH for it. Is this a mac thing?
node puts relevant binaries into /usr/local/bin because that's just how you do things. Whether or not that path is in $PATH is none of node's business, and if you (for whatever weird reason) work on a system where that's not the case, you probably wouldn't want the node installer to mess with that.
Note that the installer is not saying "please make sure /lib/node.js/ is in $PATH" - this would certainly be something to expect the node.js-specific installer to set up by itself.
It expects /usr/local/bin/ to be on the $PATH, and so it adds itself to that location.
It doesn't know if you purposely meant to remove it's install location from the PATH, so it doesn't re-add it.
It could do what you ask, but this requires setting the $PATH. The most common way to do so is modifying bashrc, but now you're modifying the user's bashrc. Now you ask, is the user using bash? Maybe you're using the fancy whiz-bang ohmyzsh since that's what Medium told you to do, and now that doesn't work either.
If you keep /usr/local/bin on your $PATH (which is standard in most 'nix installations) then you don't have to change anything or do anything. Why do _you_ have such an abnormal system? We can play this game all day and it's fucking miserable. Just learn how to use your tools for fuck's sake.
U can use html / js with browser in like 5 seconds. No need for Node.js. Just write an html file and link a js file and you can code whatever you want.
As a JavaScript learning exercise (OK mostly because it was fun), I started writing a simple bot to play the Paperclips game[1] for me.
I was really surprised with how easy it was to do stuff like add in a third party graphing library and then write a bit of code to graph interesting metrics on this page, directly from the console of my own browser.
I've also used greasemonkey for years to inject interesting scripts to improve usability on a couple of key sites. I think there are tons of options to do this kinda stuff, but I'm sure the tooling could be improved a little bit in some areas (e.g., to easily take advantage of npm packages).
> Are you aware of the console? I have used it for all kinds of stuff.
Sorry that (having posted the link) I don't have anything that concretely adds to the discussion, but I just thought I should point out that I'm not the author of the blog-article, as a few posters here seem to think.
I definitely don't endorse the author's views either, but I thought it was an interesting post for discussion, and I certainly don't think that making some aspects of coding more accessible is a bad thing.
edit: I just noticed the actual author is posting to the thread.
The whole sentiment of this article just comes off a little whiny to me. Nowadays there is so much more information available for learning how to code and set up your dev environment. There are literally coding books for kids at book stores. And StackOverflow!
When I was younger, one had to search high and low on the net trying to find help using shitty dial-up service. Then, you'd end up in some IRC channel asking for help and someone simply says 'RTFM!'
I'm happy to be that old guy who learned programming with magazine articles(and a pirated copy of turbo Pascal. You really appreciated that hypertext help.)
I'm impressed you did, I tried to learn the same way when I was younger, (albeit with pirated Borland C++) but never made any headway. Admittedly the library books I had access to were obsolete, and no-one in my rural area of a small country carried decent magazines on the subject.
That said, they did carry BBS magazines which led me eventually into the nascent WWW over the 14.4K modem I saved all my pocket money to buy.
Then I finally managed to access the resources to learn. God bless mailing lists.
I also got stuck on C++. It was (and remains) such a disproportionate pain to compile, which was just too high a hurdle in the days before you could search for your cryptic build errors on the internet.
I was able to fool around with BASIC easily enough, with entire programs provided in magazines like Byte.
If this is the case, it is because people were conscious that there was in issue in how computer turned into more and more as an appliance mean to consume information [1] (The C64 had a full programming manual delivered with it, booted directly to an interpreter and even had schematic of the machine reportedly!) and tried to counter it.
Even then despite all the amazing ressource available, there is a risk of digital divide between people having access to tutor that can show the good ressource (because there is a lot of bad ressource!) and isolated people that are stuck with glorified engagement platform.
The schematic wasn't in the C64 User Guide delivered with the machine, but it was in an additional Commodore publication "Commodore 64 Programmer's Reference Guide". The PRG was essential if you wanted to do anything more than the most basic BASIC contained in the UG.
> Then, you'd end up in some IRC channel asking for help and someone simply says 'RTFM!'
I had such a delightful retro experience the other day! I had spent days fighting a segfault in a widely used, mature library. Naturally, me being new to the library, and knowing that it's mature and widely used, I assumed I was doing something wrong. No mention of the problem online. Crickets in my StackOverflow question for days. In the end, my last ditch effort was to find some of the devlopers on IRC (I hadn't used it for a decade). I was ready for the "RTFM!!!" telling off of my childhood.
But no. People were super helpful. Helped me debug and explain what the library was doing. Turns out it was a bug in a little-used corner of the library afterall! It had lingered there unreported for 3 years. 10/10, would IRC again!
This is the nature of monotonic improvement. Just because things were substantially worse back in your day doesn't mean those darn kids don't have good reason to complain about the pain points of of today in an effort to make things substantially better tomorrow.
I am fascinated by the continued prevalence of excel in many industries. It feels as if some modern scripting language should be able to replace some aspects of the spreadsheet and work much better.
> some modern scripting language should be able to replace some aspects of the spreadsheet and work much better
To begin with, it should be a single package without dependencies, just like excel is. Not some "ecosystem" where you need to install certain versions of packages for your script to work.
I'm not so much fascinated as scared by how many investment banks are heavily reliant on Excel.
A former co-worker used to work in London for a bank, his job was to maintain the linked Excel spreadsheets that were business critical - and only took six hours to produce a result.
He found moving to the Java ecosystem rather relaxing and uncomplicated in comparison.
Excel is great for prototyping. It produces immediate results without any configuration. And it saves your database along with your code in a single file.
This is huge. Can you name any other programming language that automatically saves database + code in a single file?
Think about how many files you have to share if you use a script + database. At least 2 files. And then you have to zip it and the recipient has to unzip it. (cluttering your downloads folder)
However, at a certain point you have to make the jump and install/configure a database, even if it's just SQLite.
Firefox used to have a "scratchpad" for doing code in the browser, albeit somewhat barebones. Unfortunately it was more or less abandoned and eventually removed.
It would have been nice to see it expanded instead. A full on node environment would be a bridge too far IMHO but it would have been great to have added a good way to reuse modules and some more GUI niceties.
It did have full access to the current web page so there would have been security issues with new coders copy/pasting code from the internet. But a revised version could give it its own isolated environment by default.
Hmm, what about so called bookmarklets? You fire up js console obviously too, or use tanpermonkey, or make a local extension. There are really vast options out there and people do use them one way or another.
Not all documentation should be aimed at an absolute beginner - the authors point about $PATH seems moot to me, especially considering how easy it is to look up.
Should a library also explain how an async function works in JS when introducing its feature that uses promises? Of course not.
Any field requires technical knowledge, and we're lucky we live in a world where its increasingly easier to overcome any roadblocks you find. I'm very anti gatekeeping, but if one expects to have every little detail drawn out for them then they're going to struggle in any even slightly complex field.
Overall I dont see how any of their points supported the random "install node by default" conclusion - and the point saying "most" people hate command lines made me physically reel.
It’s all about reducing the barrier to entry. Many people find the command line daunting. Why not reduce these barriers to entry? Why require someone to understand $path to start coding in JavaScript?
I guess it's possible that new aspiring programmers will gain the fortitude to read documentation after a little while programming, but I can't help feeling that if someone isn't able to type "computer path" into a search engine from the start, they probably won't be able to figure out a whole lot of programming.
I learned programming on my calculator precisely for this reason, no cruft just pure code.
And for an inquisitive mind, having to type arcane command just to get the desired result is incredibly frustrating, and I don't count mindlessly browsing stack overflow or the internet just to get the stuff I need as learning. That is why course such as nand2tetris are incredibly good.
There is still an incredibly lot of stuff that can be done in matter of computer education. My dream would be a time travel libvmi based educational tool that allow to drill all the various function augmented with built in interactive explanation a la explorable and various code vizualization.
I'd like to point out here that I just spent a good 5 minutes punching variants on "computer path", "node path", "node install path", etc. into Google. And exactly zero results on the first page for any of those queries have anything to do with how to configure the PATH variable in your shell.
If someone didn't know what they were trying to solve for here, I'm not sure google would help them succeed.
I just searched "computer path" (no quotes) on DDG and got:
- The wiki page for 'path' as a computing concept
- 3rd result is "how to set the path in MS Windows"
- 6th result is the wiki page for the path variable as a computing concept
I haven't used Google web search for years, has it really gotten that bad?
My experience with programming, especially when I'm trying something new, is that about a dozen different things will go wrong.
At some point, there's some level of problem-solving required which involves taking what you know, and figuring out why it doesn't work. - One extremely common way of finding out what doesn't work is searching the web for the error you get, and finding a StackOverflow page which might be enough to explain it.
My experience was that I can "get by" without a deep understanding of some thing, until it doesn't work, then I need to poke around to get a better understanding so that I can fix whatever problem I have.
IIRC, I bet you can get decently far on the command-line without having to know what PATH is (or all the places it's set), thanks to package managers making things accessible. And then you'll run into some problem so that you need to know what PATH is, and then you'll learn.
Then they need to get over that if they want to learn to code
On the one hand I've been using the CLI for my entire career and and would be lost without it. On the other hand also I have colleagues who learnt to code after Visual Basic/Studio became a thing and work entirely in Visual Studio and manage to deliver top quality work year after year without basically ever having to touch the command line, so it certainly doesn't seem to be necessary.
If you really want to learn to program without learning to use the CLI you probably shouldn't pick and OS who's entire development environment is built around using the CLI.
> Then they need to get over that if they want to learn to code or use scratch.
This is the right attitude to have as an aspiring programmer, but exactly the wrong attitude for someone who creates the tooling or documentation for helping aspiring programmers learn.
But it is the right attitude for someone creating tools for other proficient programmers to do even more advanced things. We won't advance the state of the art by handicapping yourself through catering to extreme beginners at every point.
In other words, the target audience of a Promise library for JS are people who know JavaScript and understand async. Trying to explain the basics of JavaScript, or programming in general, in that library's documentation would be a waste of time for everyone involved. A beginner has plenty of resources to learn from to reach the appropriate level, at which point they'll be able to wield the Promise library in a useful and responsible manner.
I agree with the sentiment. But in order to build something that lower the barrier to entry you need an incentive. Building tools is hard and costly. Maintaining them even more.
In video games you have blueprint systems because the economy supports this idea. For kids you have scratch.
For web dev you have some solutions but my guess is that when someone wants to use node there isn't yet any useful solution (outside of playgrounds) that is cheap enough to make and remove the need for some basic computer knowledge.
you dont need to understand $path to start coding in javascript.
Just open a textfile with .html ending in an editor and in your browser..
You don't have to set up anything to get going.
That is a good point, but, instead of explaining path in the installer, maybe the starting point for learning should be somewhere else, such as a tutorial?
A lot of you guys are hating on the author for not being able to figure out how to install Nodejs.
Yet if you're old enough to have gotten started in the time of JavaScript in the late '90s, or QBasic in the early '90s, or systems like the BBC Micro or TRS-80 in earlier decades, you should know what the author's talking about.
Everything you need to program is just there. It just works, there's no extra installation, you start a program and start coding. And just about any PC has what you need. [1]
Nowadays you can technically develop on any PC with a browser by locally editing HTML / JS / CSS using Notepad, but it's rather painful. How hard would be to have a default Firefox environment for budding coders? These days you can probably do some Wasm magic to create an entire Linux OS in a browser tab, and install stuff in a virtual disk in the local storage.
Heck, it probably wouldn't be that hard to cobble together the existing pieces to make a Firefox addon to do that.
[1] Granted BBC Micro and TRS-80 weren't PC architectures, but for computers of that generation, a built-in BASIC interpreter was pretty much expected.
> Everything you need to program is just there. It just works, there's no extra installation, you start a program and start coding. And just about any PC has
You can get there today with some closed loop envirinments. But like wit QBasic and other Basics, there is very little commercially useful programming you can do there, unless it is an in-house application. See e.g. FileMaker Pro. Production grade web application programming is an order of magnitude more complicate than it was in 80s. Networking, client/server, graphical UI, responsive UI, dependencies with third party packages, multi user and multi tenancy come in my mind for example.
> These days you can probably do some Wasm magic to create an entire Linux OS in a browser tab, and install stuff in a virtual disk in the local storage.
That just sounds mindblowingly inefficient and pointless. There's no point making these great speed and efficiency leaps in CPUs if people just do inane stuff like this.
The browser is fine as it is. If you want to use it as an IDE, use something like codespaces or any of the online REPLs, don't try to make the browser an IDE?!
I seem to remember Microsoft removing qbasic from normal machines at some point in the 90s, either way it wasn't much use after windows 95 came out.
Visual Basic was essential in th e90s if you wanted to create a gui app, but it was a £500 piece of software you had to buy and install on top of windows.
Now sure, if you installed a standard linux desktop in the 90s you'd have things like gcc, perl etc built in, but you do today.
Nowadays you don't need a compiler for a lot of things, your interpreter is your browser which everyone has, you can just start up your text editor and create a html/js/css page, just like you could on your BBC Micro or Dos 5 machine and start creating a program by copying things out of a magazine. The standard debugging built into firefox and chromium is amazing compared to what you had with QBasic or the Spectrum 48k.
You've also got a realm of information on the internet available on how to start. If you do want to download something like Atom or VSCode it's three clicks away (literally you type "vscode" into ddg, click the first link, then click the deb)
If you want to program something even simpler from entirely in your browser you can pop over to Scratch or Purple Mash and build a game from the browser.
"A lot of you guys are hating on the author for not being able to figure out how to install Nodejs."
Nope. That's not what they're criticising.
"Yet if you're old enough to have gotten started in the time of JavaScript in the late '90s, or QBasic in the early '90s, or systems like the BBC Micro or TRS-80 in earlier decades, you should know what the author's talking about.
Everything you need to program is just there. It just works, there's no extra installation, you start a program and start coding."
Bash is 5000x more powerful and user-friendly programming environment than any version of rom BASIC ever was.
qbasic... well guess what? qbasic was not necessarily just there. It might be there. You have to type the command at a command line, and if it doesn't work, you have to investigate %PATH%
Bash kills basic hands down, as a programming language mind you, using only it's built-in features, forget the fact that it's also a wrapper around exec(), and it is right there exactly like the the old rom basics were.
> How hard would be to have a default Firefox environment for budding coders?
Before the times of Firefox, Mozilla (the browser, not the company) actually did have something like that: Mozilla Composer[0]. Granted, it was a WYSIWYG editor and today no one writes entire websites that way anymore. But it still allowed basically anyone to start their own website – an idea which I still find very appealing as it's so close to Tim Berners-Lee's vision of a web where everyone is both a consumer and a producer. (Whether or not this vision was ever realistic is a different matter.)
But QBasic etc. were just basic text editor with a "run" option.
They didn't have many fancy IDE features. You didn't even have syntax highlighting most of the time.
I don't think editing a html file locally is more painful than figuring out those tools back then.
I would even argue that's a good place to start because a full blown IDE can also be really intimidating if you don't really know whats happening.
Technically VS Code is a browser. If you open about, you'll see its Chrome. That means you can write code inside browser.
Also there are things like Jupyter and AWS Cloud9.
But frankly, if you can't manage to install ruby and think $PATH is somehow complicated or scary, I don't want you writing code. So maybe it's for the best that you haven't discovered the developer tools built into every browser.
The vitriol, if any, comes from eventually having to use products created by programmers without a shred of curiosity, expect everything handed to them, and do the bare minimum to create a semblance of working products. How many times have you used a website/app and it works so bad that you want to hit the programmer who wrote it? Frankly, “why do I need to figure out what PATH means” is shockingly non-curious even among those.
Exactly this. It's frustrating reading this article and the author's comments in this thread as it's apparent that they don't want to put the smallest amount of effort into learning something that is by its nature complicated.
They don't want to have to google what $PATH does, they want the browser to come with an IDE (and massively ramping up its complexity because why?) instead of actually downloading an IDE.
The author has weirdly treated the problem of not knowing something as that it is wrong that they need to know it.
> The author has weirdly treated the problem of not knowing something as that it is wrong that they need to know it.
Yes, that’s TFA in a nutshell.
The title is deceptively “normal” though, so lots of people are making good faith attempts at answering the question. Except cloud9, code-server or whatever aren’t what TFA asks for, since you still need to understand what’s going on in the server to use them effectively, you’re only offloading storage and computations to a remote machine.
It could also come from having spent thousands of hours dealing with issues created by this type of person.
There's nothing wrong with being new to coding, not knowing things, and making mistakes - it's how we learn - but when you start your article with list of things that you couldn't be bothered to do a web search for, proudly proclaiming your ignorance and unwillingness to learn and expecting me to do your thinking for you, I don't have much interest in being nice and/or trying to teach you stuff.
Yes, there’s substantial overlap between this group and the group who create “does not work (EOM)” issues I expressed immense frustration over the other day: https://news.ycombinator.com/item?id=25758884
$PATH is complicated and scary for most beginners, just as math can be scary for many kids, especially if they don't have a good teacher. Do we say we don't want kids learning math? No, we need to be better teachers. There are so many people with great ambitions and ideas who just need good guidance. Let's help them, not dismiss them.
I’m a programmer but I still to Google how to edit the PATH in Windows. This is not a matter of teaching, it’s a matter of laziness. Open Google and figure it out. This is not math. You don’t need to understand why. You follow the tutorial and go on with your life. You’ll understand why PATH matters when you’ll need to. And before you reply with: then why not abstracting this stuff? That’s because most technical people don’t mind, and they know that defaults don’t always apply. Just like accounting software doesn’t explain every single acronym. It targets a different audience.
I tried this as a Chrome extension a long time ago - github.com/captn3m0/sympathy
The idea was to make file-editing possible and simple in your browser. The extension let you edit file:/// URLs in your browser using the (now unavailable) NPAPI. The results were fun - especially for web development, where I could edit the CSS in one tab, and have it reflect in the second. Chrome added a "workspace" editor a while later, which was similar.
This is what I originally thought of ChromeOS should have been, a new take on a Smalltalk like system, just with JavaScript, but alas Google had other plans for it.
623 comments
[ 2.7 ms ] story [ 339 ms ] threadFor anyone that doesn't know that, open dev tools > Sources > Filesystem > + (Add folder to workspace) > right-click on folder > New file. Then double-click on file to open it for editing and save modifications with Ctrl-S. Of course it isn't an IDE, with even the editor being nothing more than a Notepad clone, and you're limited to client-side work which is in contrast to what OP seems to want.
* https://repl.it/
* https://jsfiddle.net/
I didn't see anything like that mentioned in the article, but I think that you can easily write code inside your browser today.
Also, web browsers are already extremely heavy and complicated. That complexity is convenient for end users, but it also has costs, like making it very difficult and expensive to create a new competitive browser. Do we really need to add another standard to turn them into offline IDEs on top of everything else?
Plus: glitch/replit are quite slow to do any real coding inside of vs developing locally.
But maybe the future really is in the browser in this way.
If we’re deciding to bundle additional software with a browser, why would a programming environment (chosen based on someone’s favorite language) be top priority?
Saving and loading .js files uses a very non-standard flow. The editor is OK but I think basic operations like "find across files" are missing. It's very "canned" and not customizable.
In other words, it feels more like a debugging environment than a programming environment, which I think is basically what they were going for.
https://codesandbox.io
repl.it, stackblitz.com, codesandbox.io, jsfiddle.net, codepen.io
Back then we don't even have online repls jesus christ.
These days devs got it easy it's really amazing
https://glitch.com/
https://runkit.com/home
https://codepen.io/
https://github.com/features/codespaces
Maybe you don't need new browser ?
Maybe ?
https://twitter.com/tomcritchlow/status/1349839954558427136
The solution to this is to use an actual native IDE, not try to shoehorn it into the browser, which is completely inappropriate.
Should Chrome have Node JS loaded into it during install? I don't do web-dev so my answer is no.
Should there be browsers made for those learning web-dev that come with these? By all means, sure. Go nuts.
This also might sound elitist but I would expect the kind of person that takes an interest in coding to be able to google what $PATH is or hell take the complete instruction "add <dir> to $PATH"
Googling "Making sure /usr/local/bin is in my $PATH" leads me here: https://stackoverflow.com/questions/19202007/making-sure-usr...
So I fire up the terminal and write echo $PATH and then go back to SO to see that it looks like it's all set up correctly. But why do I need to go to SO? Why do I need to fire up the terminal? It just feels too damn hard and too opaque.
I think defaults and documentation and onboarding matter. Not to mention a GUI :)
The "make sure X is in your $PATH" is its own thing. I sympathize but there is a balance between docs for the expert and docs for the novice. This is closer to the former.
Steve Jobs if he was a programmer would slam today's tooling.
Why do I need to fire up the terminal? Your OS doesn't do things via GUI like you do, so you need to validate that what it needs is available in the manner it will use.
Too damn hard and too opaque.? How did you learn that Node js was even a thing? You weren't born with the knowledge and everything has a learning curve to it, very few things are truly easy to do starting at the very bottom.
I agree that things need documentation and onboarding. I think we can view the Node js docs similar to a shop manual at a auto repair shop - it will expect you to know what tools are what and how to do certain things.
Your comment to which I'm replying now shows that you do have the ability to learn this new language. You've correctly and successfully used the term "SO" to refer to a popular resource on programming. You have successfully "fired up the terminal." You've even used the terminal to echo $PATH. You're making great progress! :-)
The particular idea of installing node.js by default in web browsers seems to me like installing toasters on sofas. That would make it easier to make toast without going to the kitchen, but is not something that most people would want.
> why do I need to ______?
This is the current state of computers and programming. Computers are just concentrated piles of logic gates and they don't actually know what they are doing.
He's been a user of HN since 2010...
It seems he likes the idea of programming more than the act of it. It's similar to one being enrapt with the idea of being an accountant but in reality, just wanting TurboTax to do everything and not learning anything. But i get to play pretend that I'm an accountant.
And in terms of (free) knowledge availability on the internet for any one profession, there is nothing that comes anywhere close to programming.
It's programming. It's difficult, and there's a lot you need to know to be effective. Trying to just hide things like the command line is just pointless. You need to know it. Go learn it.
You shouldn't need one though. Environment variables are one of the core basics of any program, and you'll need to learn about them eventually. The same thing is true if you can't deal with the terminal; there's a few "magic" commands to learn but most of the terminal stuff is just "how does this computer thing even work".
Most programming tools and languages, as well as their documentation, assume you know how to manage your computer when you start programming them, as well as some basic knowledge of how an operating system works. These tools and their getting started guides are written for people who know the basics of their computer and programming, and want to try out a new language like JS. If they're too technical for you, you're not the target audience. You'd get much more out of a book explaining you the basics step by step.
The terminal is everything but opaque; you tell the computer exactly what you want rather than clicking the "just make it work" button. You're in control instead of letting some tool assume what's best for you. In my experience, the "one button to fix all" systems will work for a while but once they break (and they will) they're basically unrepairable without deep knowledge of the tooling and its configuration as well as the defaults the installer chose for you and why they're now messing up.
A problem with Javascript and Python development is that the setup is very complex and that guides become outdated (especially for web dev). There's loads of edge cases to deal with so there's loads of configurations and options most tooling supports. The magic install button would lead many to ruin their operating system configuration because they've already installed another tool that might also have had a magic install button. These tools don't operate in a vacuum, they influence each other.
If you just want to program code, grab a great big IDE like MS Visual Studio on Windows (the full one, not Code) or XCode on Mac (no experience there, but it's trivial to install at least). The experience of getting started programming in C# is very easy, just select the types of program you want to be able to make (or "all" if you don't care) during setup and your tool is set up. No fiddling with the command line, just a shortcut on your desktop. You won't be making any websites in them from the start, but they'll provide you with an environment that Just Works for writing your first program, moet likely a console window that says "hello world".
If you want to get started in web dev, you don't need node or any terminal work, just a good text editor to write your own HTML, CSS and JS files in. Sure, node is what people use in production, but it's only complicating things if you're just getting started. Guides from ten years ago on how to write HTML and Javascript are still perfectly functional if you're just starting out.
If that's still to much to grasp, there's kits out there for Raspberry Pis that come prepackaged with tutorials and with exercise books for programming in scratch and Python. Your only barrier to entry there is the money to buy the kit. You'll still have to learn everything and work through stackoverflow or technical documentation all the time, but you won't need to bother with any terminals at least.
Complaining that programming is too hard because there's no fancy GUI for every tool is like me complaining that finances are too hard because I can't walk into a bank and start making money without reading all kinds of boring books about finances. There's easy ways to get started i...
Note that the installer is not saying "please make sure /lib/node.js/ is in $PATH" - this would certainly be something to expect the node.js-specific installer to set up by itself.
It doesn't know if you purposely meant to remove it's install location from the PATH, so it doesn't re-add it.
It could do what you ask, but this requires setting the $PATH. The most common way to do so is modifying bashrc, but now you're modifying the user's bashrc. Now you ask, is the user using bash? Maybe you're using the fancy whiz-bang ohmyzsh since that's what Medium told you to do, and now that doesn't work either.
If you keep /usr/local/bin on your $PATH (which is standard in most 'nix installations) then you don't have to change anything or do anything. Why do _you_ have such an abnormal system? We can play this game all day and it's fucking miserable. Just learn how to use your tools for fuck's sake.
Here's what you do: go to about:blank, open the console and start typing JavaScript code. Try:
I was really surprised with how easy it was to do stuff like add in a third party graphing library and then write a bit of code to graph interesting metrics on this page, directly from the console of my own browser.
I've also used greasemonkey for years to inject interesting scripts to improve usability on a couple of key sites. I think there are tons of options to do this kinda stuff, but I'm sure the tooling could be improved a little bit in some areas (e.g., to easily take advantage of npm packages).
1. https://www.decisionproblem.com/paperclips/index2.html 2. https://github.com/trogau/paperclips/
Sorry that (having posted the link) I don't have anything that concretely adds to the discussion, but I just thought I should point out that I'm not the author of the blog-article, as a few posters here seem to think.
I definitely don't endorse the author's views either, but I thought it was an interesting post for discussion, and I certainly don't think that making some aspects of coding more accessible is a bad thing.
edit: I just noticed the actual author is posting to the thread.
When I was younger, one had to search high and low on the net trying to find help using shitty dial-up service. Then, you'd end up in some IRC channel asking for help and someone simply says 'RTFM!'
That said, they did carry BBS magazines which led me eventually into the nascent WWW over the 14.4K modem I saved all my pocket money to buy.
Then I finally managed to access the resources to learn. God bless mailing lists.
I was able to fool around with BASIC easily enough, with entire programs provided in magazines like Byte.
Even then despite all the amazing ressource available, there is a risk of digital divide between people having access to tutor that can show the good ressource (because there is a lot of bad ressource!) and isolated people that are stuck with glorified engagement platform.
[1] https://www.salon.com/2006/09/14/basic_2/
See p.514- for the schematic https://archive.org/details/c64-programmer-ref/page/n513/mod...
I had such a delightful retro experience the other day! I had spent days fighting a segfault in a widely used, mature library. Naturally, me being new to the library, and knowing that it's mature and widely used, I assumed I was doing something wrong. No mention of the problem online. Crickets in my StackOverflow question for days. In the end, my last ditch effort was to find some of the devlopers on IRC (I hadn't used it for a decade). I was ready for the "RTFM!!!" telling off of my childhood.
But no. People were super helpful. Helped me debug and explain what the library was doing. Turns out it was a bug in a little-used corner of the library afterall! It had lingered there unreported for 3 years. 10/10, would IRC again!
https://github.com/cdr/code-server
To begin with, it should be a single package without dependencies, just like excel is. Not some "ecosystem" where you need to install certain versions of packages for your script to work.
A former co-worker used to work in London for a bank, his job was to maintain the linked Excel spreadsheets that were business critical - and only took six hours to produce a result.
He found moving to the Java ecosystem rather relaxing and uncomplicated in comparison.
This is huge. Can you name any other programming language that automatically saves database + code in a single file?
Think about how many files you have to share if you use a script + database. At least 2 files. And then you have to zip it and the recipient has to unzip it. (cluttering your downloads folder)
However, at a certain point you have to make the jump and install/configure a database, even if it's just SQLite.
It would have been nice to see it expanded instead. A full on node environment would be a bridge too far IMHO but it would have been great to have added a good way to reuse modules and some more GUI niceties.
It did have full access to the current web page so there would have been security issues with new coders copy/pasting code from the internet. But a revised version could give it its own isolated environment by default.
Overall I dont see how any of their points supported the random "install node by default" conclusion - and the point saying "most" people hate command lines made me physically reel.
And for an inquisitive mind, having to type arcane command just to get the desired result is incredibly frustrating, and I don't count mindlessly browsing stack overflow or the internet just to get the stuff I need as learning. That is why course such as nand2tetris are incredibly good.
There is still an incredibly lot of stuff that can be done in matter of computer education. My dream would be a time travel libvmi based educational tool that allow to drill all the various function augmented with built in interactive explanation a la explorable and various code vizualization.
If someone didn't know what they were trying to solve for here, I'm not sure google would help them succeed.
I haven't used Google web search for years, has it really gotten that bad?
At some point, there's some level of problem-solving required which involves taking what you know, and figuring out why it doesn't work. - One extremely common way of finding out what doesn't work is searching the web for the error you get, and finding a StackOverflow page which might be enough to explain it.
My experience was that I can "get by" without a deep understanding of some thing, until it doesn't work, then I need to poke around to get a better understanding so that I can fix whatever problem I have.
IIRC, I bet you can get decently far on the command-line without having to know what PATH is (or all the places it's set), thanks to package managers making things accessible. And then you'll run into some problem so that you need to know what PATH is, and then you'll learn.
Then they need to get over that if they want to learn to code or use scratch.
On the one hand I've been using the CLI for my entire career and and would be lost without it. On the other hand also I have colleagues who learnt to code after Visual Basic/Studio became a thing and work entirely in Visual Studio and manage to deliver top quality work year after year without basically ever having to touch the command line, so it certainly doesn't seem to be necessary.
If you really want to learn to program without learning to use the CLI you probably shouldn't pick and OS who's entire development environment is built around using the CLI.
This is the right attitude to have as an aspiring programmer, but exactly the wrong attitude for someone who creates the tooling or documentation for helping aspiring programmers learn.
In other words, the target audience of a Promise library for JS are people who know JavaScript and understand async. Trying to explain the basics of JavaScript, or programming in general, in that library's documentation would be a waste of time for everyone involved. A beginner has plenty of resources to learn from to reach the appropriate level, at which point they'll be able to wield the Promise library in a useful and responsible manner.
In video games you have blueprint systems because the economy supports this idea. For kids you have scratch.
For web dev you have some solutions but my guess is that when someone wants to use node there isn't yet any useful solution (outside of playgrounds) that is cheap enough to make and remove the need for some basic computer knowledge.
People should deal with it and learn. No matter how low the barriers to entry are, you're still going to have to figure shit out at some point.
PS: You don't need to understand $PATH to start coding in JS. You can create an HTML or JS file, hack away and run it locally.
Yet if you're old enough to have gotten started in the time of JavaScript in the late '90s, or QBasic in the early '90s, or systems like the BBC Micro or TRS-80 in earlier decades, you should know what the author's talking about.
Everything you need to program is just there. It just works, there's no extra installation, you start a program and start coding. And just about any PC has what you need. [1]
Nowadays you can technically develop on any PC with a browser by locally editing HTML / JS / CSS using Notepad, but it's rather painful. How hard would be to have a default Firefox environment for budding coders? These days you can probably do some Wasm magic to create an entire Linux OS in a browser tab, and install stuff in a virtual disk in the local storage.
Heck, it probably wouldn't be that hard to cobble together the existing pieces to make a Firefox addon to do that.
[1] Granted BBC Micro and TRS-80 weren't PC architectures, but for computers of that generation, a built-in BASIC interpreter was pretty much expected.
If you want to pick up programming as a hobby, a hobby computer exists. If you want to get more serious eventually you have to learn your tools.
You can get there today with some closed loop envirinments. But like wit QBasic and other Basics, there is very little commercially useful programming you can do there, unless it is an in-house application. See e.g. FileMaker Pro. Production grade web application programming is an order of magnitude more complicate than it was in 80s. Networking, client/server, graphical UI, responsive UI, dependencies with third party packages, multi user and multi tenancy come in my mind for example.
That just sounds mindblowingly inefficient and pointless. There's no point making these great speed and efficiency leaps in CPUs if people just do inane stuff like this.
The browser is fine as it is. If you want to use it as an IDE, use something like codespaces or any of the online REPLs, don't try to make the browser an IDE?!
Visual Basic was essential in th e90s if you wanted to create a gui app, but it was a £500 piece of software you had to buy and install on top of windows.
Now sure, if you installed a standard linux desktop in the 90s you'd have things like gcc, perl etc built in, but you do today.
Nowadays you don't need a compiler for a lot of things, your interpreter is your browser which everyone has, you can just start up your text editor and create a html/js/css page, just like you could on your BBC Micro or Dos 5 machine and start creating a program by copying things out of a magazine. The standard debugging built into firefox and chromium is amazing compared to what you had with QBasic or the Spectrum 48k.
You've also got a realm of information on the internet available on how to start. If you do want to download something like Atom or VSCode it's three clicks away (literally you type "vscode" into ddg, click the first link, then click the deb)
If you want to program something even simpler from entirely in your browser you can pop over to Scratch or Purple Mash and build a game from the browser.
Nope. That's not what they're criticising.
"Yet if you're old enough to have gotten started in the time of JavaScript in the late '90s, or QBasic in the early '90s, or systems like the BBC Micro or TRS-80 in earlier decades, you should know what the author's talking about.
Everything you need to program is just there. It just works, there's no extra installation, you start a program and start coding."
Bash is 5000x more powerful and user-friendly programming environment than any version of rom BASIC ever was.
qbasic... well guess what? qbasic was not necessarily just there. It might be there. You have to type the command at a command line, and if it doesn't work, you have to investigate %PATH%
Bash kills basic hands down, as a programming language mind you, using only it's built-in features, forget the fact that it's also a wrapper around exec(), and it is right there exactly like the the old rom basics were.
There should be an "educational" mode on every computer where you can just boot into it.
Before the times of Firefox, Mozilla (the browser, not the company) actually did have something like that: Mozilla Composer[0]. Granted, it was a WYSIWYG editor and today no one writes entire websites that way anymore. But it still allowed basically anyone to start their own website – an idea which I still find very appealing as it's so close to Tim Berners-Lee's vision of a web where everyone is both a consumer and a producer. (Whether or not this vision was ever realistic is a different matter.)
[0]: https://en.wikipedia.org/wiki/Mozilla_Composer
um... because you didn't press ctrl-shift-I?
But frankly, if you can't manage to install ruby and think $PATH is somehow complicated or scary, I don't want you writing code. So maybe it's for the best that you haven't discovered the developer tools built into every browser.
They don't want to have to google what $PATH does, they want the browser to come with an IDE (and massively ramping up its complexity because why?) instead of actually downloading an IDE.
The author has weirdly treated the problem of not knowing something as that it is wrong that they need to know it.
Yes, that’s TFA in a nutshell.
The title is deceptively “normal” though, so lots of people are making good faith attempts at answering the question. Except cloud9, code-server or whatever aren’t what TFA asks for, since you still need to understand what’s going on in the server to use them effectively, you’re only offloading storage and computations to a remote machine.
There's nothing wrong with being new to coding, not knowing things, and making mistakes - it's how we learn - but when you start your article with list of things that you couldn't be bothered to do a web search for, proudly proclaiming your ignorance and unwillingness to learn and expecting me to do your thinking for you, I don't have much interest in being nice and/or trying to teach you stuff.
No, but I also don't want them being paid for their efforts to prove the Riemann hypothesis using only an abacus.
>we need to be better teachers
According to google there are about 1,040,000 results for 'what is "$PATH"?'. I feel like one or more of those is probably a pretty good resource.
The idea was to make file-editing possible and simple in your browser. The extension let you edit file:/// URLs in your browser using the (now unavailable) NPAPI. The results were fun - especially for web development, where I could edit the CSS in one tab, and have it reflect in the second. Chrome added a "workspace" editor a while later, which was similar.
A blog post on why I really wanted to make it: https://github.com/captn3m0/captn3m0.github.com/blob/master/...
Also, how can you fail to install something like NodeJS?