Ryan Dahl, creator of Node.js and Deno, writes about JavaScript, software design, deep learning and his work at Google Brain.
HN commenters admire how he thinks and often cite his "I hate almost all software" rant; they also mention his Oracle JavaScript trademark post.
> …I already have taken care of a lot of those Node issues in my own projects, there is not a ton that I see compelling in Deno.
I felt this way too before using Deno for a while. So far I enjoy:
- Breaking from npm/node modules support on purpose turns out to be a real plus for me. It's refreshing to have dependencies referenced by URL, and it's good to have them cached centrally by default (in $HOME/Library/Caches/deno on macOS and $XDG_CACHE_HOME/deno or $HOME/.cache/deno on Linux, for example).
- Use of web platform APIs (https://deno.land/manual/runtime/web_platform_apis ) and the work to standardise those across platforms (https://wintercg.org/ ) is encouraging.
- `deno lint` and `deno fmt` make adopting and using JS/TS feel more like Rust/Go/other languages with good built-in ceremony-free tooling.
- Fresh is turning into a very nice Next.js/Astro alternative (https://fresh.deno.dev/ ) that I found very easy to learn and deploy, with great performance and developer experience out of the box.
Bun is interesting, but I wish it didn't embrace node modules: perpetuating its use instead of attempting to move the community on by recognising it for the mistake it was feels sad to me. (See Ryan Dahl's “Design Mistakes in Node” PDF or talk for more: https://tinyclouds.org/jsconf2018.pdf and https://www.youtube.com/watch?v=M3BM9TB-8yA )
When I some says "sell X to Y", I hear "explain how X will solve Y's problem or otherwise make their lives easier". Because that's fundamentally what selling is.
I can talk for days about how marvellous the new iPhone is, the beautiful technology behind it, the marvellous processor and the high resolution screen that are, in their own way, feats of engineering that equal or surpass the Pyramids at Giza.
But that's not why people buy iPhones. They buy iPhones because having a portable device with internet that can make phone calls and take pictures and video and has GPS is actually really handy.
That's what "selling your work" is about.
"Hey guys, I made this open source operating system. If you're looking for an OS than enables you to completely control your machine, maybe you'll like it more than Windows." vs "Hey guys, I made this open source operating system. I wrote it in Rust because I like Rust."
tangentially related, Ryan Dahl's I hate almost all software: https://tinyclouds.org/rant
> The only software that I like is one that I can easily understand and solves my problems.
selling is talking about your work with the end user in mind, rather than going on about the details of what you learned/how you did it.
That said, the latter approach is also interesting and useful, in that it helps others learn from your process.
This is rather impressive. Similarly to the cited work http://tinyclouds.org/colorize/, it does however seem to have a slight bias towards brownish colors (giving many images a sepia look).
One thing very noticeable in both works is also the tendency to overshoot borders when coloring. In many images it can be seen that the color of the main subject bleeds into the background. A good example is e.g. the fifth picture in
http://richzhang.github.io/colorization/resources/images/exs_sel_aa.jpg , where parts of the sky get assigned the same color as the mesa. This looks like something that should be fixable if one tries to detect these kind of edges and gives less weight to information from the other side of such an edge.
Does anyone know what the differences between this and the previous neural net approach are on a technical level?
Promises do not suck at all. They save us from the callback hell. Never treat JavaScript as if it's C, they have fundamental differences.
The biggest difference is that JS is designed to run in an event loop inside a single thread. If you perform a 10 second blocking I/O your thread will freeze. You don't want your browser/tab to be unresponsive. Or in the case of a web server you want to accept incoming TCP connections as fast as you can.
You can achieve parallelism with threads but it's very tricky to scale. If you want a simpler, threaded, blocking programming model I suggest you take a look at Go.
Edit: Definitely read the original slides from Ryan Dahl's JSConf 2009 presentation, they perfectly explain the point of using JS: http://tinyclouds.org/jsconf.pdf
Here's the post by Ry that was supposedly deleted: http://tinyclouds.org/rant.html
The point I took away from the post is that all abstractions carry a cost, no matter how elegant. Not "Ryan Dahl hates Node.js". But sure.
Seems the author is intent on complaining and that's cool with me, but if you're doing Node then yeah don't let people like this get you down. Node's fast, Node's flexible and has so many users that virtually any abstraction you like is available through npm. Callbacks are part of core because it's the lowest common abstraction for Async. Node is not Python.
Tired devs can complain all they like, but that doesn't make them right.
These results are clearly hand-picked to leave out complete failures like these:
http://tinyclouds.org/colorize/val-imgs/val-000100-1.jpg
http://tinyclouds.org/colorize/val-imgs/val-000800-2.jpg
When I selected from the validation images, most had these blue splotches that were not shown on the web page. Obviously a model is not expected to work 100% of the time, but I think the link misrepresents the results by not even showing a single instance of this common failure.
edit: further scrolling shows it's less common than I thought.