9 ms·
Deno.js in production
- 3np 4y ago> Node.js is too easy to get started. This means that the pool of available programmers is not the highest quality. Runtimes like Go or Deno are still havens for the ‘connoisseur’ programmer. wat (Deno seems worth checking out though!)
- steve_adams_86 4y agoI've been playing with Deno lately and I can assure the author, I'm no connoisseur
- threatofrain 4y agoThis means at the level of their ability to draw in candidates, Deno interest is signal to their hiring pipeline of more quality. The consequence is their hiring pool is also that much smaller. One might say the same thing about Java v Go.
- RussianCow 4y ago> The consequence is their hiring pool is also that much smaller. In the current market, unless you're a big company that gets flooded with applications on a daily basis, why would you ever reduce your hiring pool arbitrarily? If you're a 13-person startup with good funding, you want all the candidates you can possibly get. Excluding potentially great engineers because they've never worked with Deno doesn't make any sense.
- cercatrova 4y agoIt does make sense, because you filter out the non enthusiasts, a proxy for great programmers. When Rust was still nascent, the people interested in it were likely to be of a higher quality bar than any regular old Javascript dev. That's not to say that JS is bad necessarily, just that enthusiasts correlate to great programming skills.
- mattwad 4y agoEspecially if you're a product-focused startup, the last thing you may actually need is an enthusiast for a language. 90% of the time you want people that just want to use the right tool for the job.
- threatofrain 4y agoWe're contending with the reasoning behind an observation, but the observation is already useable to the author of the post — if true. Is the author of the post seeing improvements in candidate quality because Deno is actually a proxy for burning the midnight oil? Who knows. If we generalize to Java vs Go will the observation hold? Who knows. But as chrisco255 pointed out, neither usage of Deno nor applying a weight to some observation will reduce your hiring pool. I would also say that a technological perspective of "right tool for the right job" is somewhat independent to the expensiveness of your hiring pipeline. Sometimes Erlang is the right tool for the right job, but that undoubtedly changes the experience of hiring.
- chrisco255 4y agoMy goodness, if you're excluding any hire because they've never worked with (insert new hotness here) you are simply making a big mistake in hiring, in general. Deno is still JS based at the end of the day and attempts to conform to web standards in its design. I don't know why in this particular case it would limit your pool. I could see how Golang vs Deno (JS) would impact your hiring pool dramatically though.
- threatofrain 4y agoAs chrisco255 pointed out downthread, I made a mistake in saying that Deno would reduce your hiring pool. That Deno is a signal in hiring does not mean you've lost out on Node talent, it just means that you've found a net gain in hiring by weighing Deno more strongly (assuming the blog post is correct). However, Java vs Go would probably make a big difference in terms of hiring pool size.
- jonny_eh 4y ago"Too easy to get started" is just gate keeping.
- my69thaccount 4y agoOn one hand, JavaScript being easy makes programming accessible. On the other hand, the state of programming is terrible and getting worse. So you can't say if it's bad or not.
- RussianCow 4y ago> On the other hand, the state of programming is terrible and getting worse. What does this mean? It's an order of magnitude easier to build an app/service/whatever today than it was a decade ago. Having to maintain separate code paths for IE because it doesn't support many of the APIs and CSS features you need was "terrible"; by comparison, engineering today is heavenly.
- my69thaccount 4y agoEngineering might be easier, the user experience is magnitudes worse than a decade ago, pretty much universally.
- kupopuffs 4y agoit's not getting worse. you're just getting older
- jonny_eh 4y ago100%. If people want to still use Wordperfect 5.1, they still can.
- wy35 4y agoIt’s not getting worse. Go ahead and make a relatively complex app with jQuery 2.0 and let me know how it compares to spinning up a Next.js app.
- golergka 4y agoSame is true about Lisp and was true about Python in early 00s. Rare tech brings out enthusiasts.
- qayxc 4y agoReally? I never noticed any particularly high barrier of entry with either. Pygame for example was very popular with hobbyist game programmers in the early 2000s as it provided a much easier way to get started with game programming than C, which was the most popular alternative back then (Unity 3d only released in 2005 and Unreal Engine only became free in 2015). What I do remember from the early 2000s, though, was legions of aspiring game programmers struggling with C and C++.
- duxup 4y agoI've tried Deno. The author might rethink that line after interviewing me. Really though this seems almost like resume keyword checking level of a candidate quality check. Actually it sounds exactly like that...
- 14u2c 4y agoYea, this is one of the most garbage takes I've ever heard. Requiring the use of something esoteric is not suddenly going to allow you access to a pool of higher quality candidates. Instead you will still see the same pool, but now the average candidate will be even less knowledgeable about the technology. I do like Deno personally, but this reason is not a great one to do so.
- gorjusborg 4y agoI'm surprised the included library wasn't front of mind. Perhaps it is implied by comparing to golang.
- BeefWellington 4y agoIt is disappointing to see this message as the basics of what the software is on their site (https://deno.land/ https://deno.land/): Deno is a simple, modern and secure runtime for JavaScript, TypeScript, and WebAssembly that uses V8 and is built in Rust. Only to have that immediately followed by really poor practice of suggesting this as the installation method: curl -fsSL https://deno.land/install.sh | sh This is not strictly related to Deno -- lots of software does this -- but if you're going to suggest your thing is more secure than the other guys' thing (which is implied by calling your thing secure), you shouldn't then be immediately throwing that credibility away. Yes, the page offers a link to the "Releases" page at their github repository. However, anyone familiar with any kind of UX will understand immediately that this is effectively burying the link and subtly makes the statement that you don't really want to bother with that other way of doing things. They also don't provide a gzipped/bzipped tarball for the linux install but a zip file instead, adding an additional barrier/dependency. I understand this is an area where security is losing the tug of war to ease of distribution/access but it pains me to see it on any project, let alone the potentially good ones.
- winrid 4y agoIt's using SSL, what's the real world concern here? Other than someone might get copy-paste happy and someday install something they don't want.
- BeefWellington 4y agoThere's quite a bit wrong with this idea that "It's using SSL [therefore it's safe]", assuming your meaning there. The most obvious case: someone compromises the installation script on the actual real deno server. Right now the webserver there is returning an HTTP/307 to an HTTP/302 to the "current" installation script file. Any compromise of the webserver makes this very dangerous. Contrast that with proper signed packages, code signed sources, etc. There it requires compromise of the developer's systems and signing keys, which at least can be a far harder thing to attack if they're doing things securely.
- 4y ago
- danenania 4y agoThe security model is a big one for me. If they could extend the permissions system to work for individual dependencies, they could solve one of the biggest security issues facing developers right now. Especially if policies could also be applied to node packages. Are there any plans to move in this direction? It seems like if you can do it for the full app, you should hypothetically have the capability to make it library-specific. Or perhaps there are non-obvious blockers that make it too hard? If there are plans to do this, isn't it better to do it sooner rather than later? Better to get library authors in the habit of specifying permissions/policies now while the ecosystem is still small. If you wait too long, it will be a ton of work to retrofit all the existing libs.
- simlevesque 4y ago> Or perhaps there are non-obvious blockers that make it too hard? To me, it seems like you'd need a new language.
- danenania 4y agoWhy is that? I may be missing something, but they're already enforcing permissions at runtime, which seems like the hard part to me. It would 'just' need to be integrated with the call stack so you know which dependency(ies) want system/network access.
- zdragnar 4y agoIIRC there are all sorts of issues around monkey-patching prototypes, shared objects between modules, etc. which would readily allow escaping any sort of module / dependency level permissions system. You'd probably be better off pitching a typescript subset language with its own compiler / interpreter rather than trying to shoehorn it into V8.
- danenania 4y agoThese seem like solvable problems. Prototype modifications are rare these days and should probably be restricted in the same way that system/network access is. Shared objects between modules also seem like an edge case apart from callbacks? I posted an idea on how to handle callbacks upthread a bit: https://news.ycombinator.com/item?id=31326123#31332061 https://news.ycombinator.com/item?id=31326123#31332061
- unwind 4y ago> ‘Deno’ (like ‘Node’ but backwards) Yeah, no. I wonder if more people just assume that to be true, heh. I kind of was expecting it, weirdly enough. Hint: "node" is "edon" backwards. Not sure if that name is taken for something Javascripty ... * goes to check * yeah, I found [1] which seems to be 4 years old, tagline "Run browser JS in the terminal". [1] https://github.com/dbkaplun/edon https://github.com/dbkaplun/edon
- krautsourced 4y agoDeno is No|de swapped. So no, not backwards. But... how would one call it?
- rootlocus 4y agolittle-endian
- vlunkr 4y agoDeno, an anagram of node
- barnabask 4y agoMaybe "scrambled".
- llanowarelves 4y agoTransposed
- throwawaymaths 4y agoBackwards (in Japanese)
- smrtinsert 4y agoShifted
- benatkin 4y agoIt's also backwards, but by two character groups, or if you prefer, consonant-vowel groups.
- benatkin 4y agoIn the security model section it doesn't mention workers. In Deno, workers can be given different permissions. The article suggests having different permissions per file. I think it might be nice to have both but if I could only have one I would want separate permissions per worker. Files aren't always split along the same lines that permissions should be split. I would like to be able to control permissions by url prefix though - so some library doesn't do more than I want it to. It might mean setting up a worker if I want to make sure it doesn't indirectly use more dependencies.
- Sephr 4y agoThe title is very misleading. Deno is not written in JavaScript and is never referred to as Deno.js in any official sources. Deno is written in Rust.
- benatkin 4y agoMuch of Node.js is written in C, yet it's still called Node.js. Deno has some JavaScript/TypeScript in it. On GitHub https://github.com/denoland/deno https://github.com/denoland/deno is 22.8% JavaScript and 13.2% TypeScript, and https://github.com/denoland/deno_std https://github.com/denoland/deno_std is 68.2% JavaScript and 31.6% TypeScript. So to me the title is misleading about the name (Deno is certainly not named Deno.js), but not about what Deno is written in.
- brundolf 4y agoNode isn't written in JS either, but people call it Node.js. They used the wrong name, but it's a pretty huge leap to call it "misleading".
- fswd 4y agonode.js nowadays is a total disaster. I've been able to hold down the fort with turbo repo, but even then it's been a touchy strategy. I want to switch to Deno, and I'm interested in articles like this. Either that, or, because of the state of nodejs/NPM modules, and it's ever-increasing surface area of doom and resume driven development node modules, either somehow switch to deno or go back to just HTML and vanilla js. I just can't get any work done. I'm saying this as a developer with 27 years experience and who has written my own server side spidermonkey solution pre-nodejs.
- sdesalas 4y ago> resume driven development node modules Hahahah!!! So true!! ;D .. i think i've written a couple of those!
- fswd 4y ago
- thr0wawayf00 4y ago> I just can't get any work done. Yep, I'm feeling this right now. I was recently tasked with updating an internal node app that hadn't been touched in about 4 years and it's seriously one of the least fun things I've had to do in my nearly 10 year career. After hacking away at for it a couple weeks, I told my boss that it needs a ground-up rewrite. The bazaar approach of Node and NPM has created an absolute hellscape to develop in.
- HatchedLake721 4y agoCare to elaborate why you can’t get any work done, and how Deno will solve that? I’ve been using Node.js pretty much daily in production for almost a decade now, and it’s never been a total disaster, not even close.
- craftoman 4y agoNode.js is a mature framework and never had problems with it. I also write my own code and avoid installing useless packages. Truth is everyone likes fresh projects like Deno but their ecosystem is doomed. I mean all I need is Redis and it doesn't work the way supposed to.
- dimgl 4y agoI haven't had the same success with Deno that I expected. At first, I was shocked by how good the tooling is, and I was super happy with its dependency management. All of the problems started once I started getting into actual business logic. `redis` and `ioredis` `npm` packages don't work with Deno, even with the Node compat layer (I tried). So you have to use the Deno driver for Redis. But you look up the library for this, and it's experimental: https://deno.land/x/redis@v0.25.5 https://deno.land/x/redis@v0.25.5 Same deal with Postgres. `pg` would not compile at all. Knex also didn't work (this was an older project). I'm assuming this is because these two packages use native Node.js plugins. I like Deno a lot, and the out of the box TypeScript support is a gamechanger, but I had a really tough time working with it and actually being productive.
- centrist 4y agoioredis and mysql2 have been working for some quite sometime.
- ricardobeat 4y agoOn the other hand, not being able to bring all of the node.js package ecosystem along can be considered a feature.
- LAC-Tech 4y agoI don't think it can. There's a lot of crap in the node.js ecosystem, no denying it. But there's just a lot of packages in general. Many of which are really, really well designed and good.
- Osiris 4y agoIt's not a feature if you can't build the project you are trying to build.
- SkyPuncher 4y agoI don't really understand this take. Yes, there are a lot of packages available - but that gives you choice.
- 4y ago
- ecmascript 4y agoI hoped this article would provide more info than it actually did. For me, a javascript developer that mainly use Node.js for work, Deno is interesting and I want to use it but the hosting part is what prohibits me from using it. In node it's easy to run production code with pm2, you can cluster it and it's super easy to configure it so that it will run one node process per available core. With Deno, you can't do this because there is no clustering available so you kind of have to run it on single core machines to get maximum performance out of your hardware. In other words, on cloud solutions like Deno deploy or a Kubernetes cluster configured to run it on single cpu docker containers. I am not interested in that and as long as it is that way, running Deno is unfortunately a waste of my hardware. Sure there are web workers and they are great for stuff but if my process dies for some reason I don't want that to halt the application.
- martibravo 4y agoYou can totally use pm2 with Deno! Just needs an extra flag. pm2 start index.ts --interpreter="deno" --interpreter-args="run --allow-net --allow-write"
- ecmascript 4y agoOk I had no idea that was possible. Will this work with the cluster module in pm2? How does it work exactly? Does pm2 have its own webserver and just forwards the request to whatever interpreter you specify?
- deleted 4y ago[deleted]
- khiar 4y ago
- brundolf 4y agoI've been using Deno for a large compiler project I've been working on over the last couple years, and for the most part it's been a dream Of course that's not the most representative example, because a compiler can almost entirely dodge the ecosystem problem, but I thought I'd offer it anyway