To Wash It All Away [pdf]
usenix.org
usenix.org
I found his previous articles really funny but this one felt a bit forced. I think it's maybe too easy to pick on the web, so it ended up being a series of "also, JavaScript equality makes no sense, [NON SEQUITUR HERE]".
Here's a collection of some of his others, which are worth reading before this one: http://blogs.msdn.com/b/oldnewthing/archive/2013/12/24/10484...
After they've succeeded in replacing init and X11, the most likely target for the Whiny Twentysomething Brigade appears to be the terminal subsystem.
"Why does Linux still have the concept of terminals?" they say. "Those are from the 70s. Nobody uses them anymore. All those escape codes are unnecessary legacy cruft. If Linux were a modern OS, it would natively support a modern textual interface based on HTML and JavaScript..."
Yes! I agree! I wish to subscribe to your newsletter.
"This is my last column!"
Fuck!
The "relentless asynchronous" nature of the environment is a challenge but, I'd argue, it's the right challenge. Async programming is actually a Good Thing because you're only ever dealing with a single process, a single path of execution, all the time. It is possible to get this right, whereas with multi-threaded code, I don't think it is, in general. It's true that you can complicate matters by weaving closures in and out of each other to the point where it's impossible to understand the state of your program by reading the source (or even with break points), but that's just bad code, and shouldn't reflect on the notion of async itself.
It really is too bad, though, that the runtime doesn't (and can't) offer better invariant guarantees, and that we have to rely on convention. But honestly, that sort of thing is possible in Java, for example, too. One of your dependancies can load up ASM or BCEL and start changing classes. Heck, Hibernate does this routinely. The only real difference is that the barrier-to-entry for JavaScript programs to do this sort of thing is much lower.
Sure there are some problems but most of the problems that outsiders are talking about make a lot of logical sense once you learn more about how the system works.
The web is a gargantuan piece of trash. Throw your HTML on the pile if you want. Take two and call me back in 10 years when you have realized what a fool's errand developing for the web is.
The network effect, however, tends to kick in when a solution is "good enough," which happens on some random iteration possibly long before the "truly optimal" solution is found.
The only time you'll see an optimal solution to a problem spreading by the network effect, is when the definition of optimality is clear-enough from the start that the optimal solution can be found before people have a chance to settle on anything lesser.
Google's SPDY (and therefore HTTP2) is basically an attempt to get the properties and advantages of SCTP, but only for HTTP, and done on a slightly higher level of abstraction where it isn't as efficient.