shortcircuit01's comments

shortcircuit01 | 11 years ago | on: How my life was changed when I began caring about the people I did not hire

This story reminds me of how broken software engineer interviewing is. Imagine if a company decided to hire software engineers by giving them five 6-sided dice. Then they have to come to the company building and roll each dice once every hour. And during that hour they have to dance and sing in front of someone while being recorded. If they roll all 6 on all 5 dice, their dancing and singing will be judged by the committee! And if the committee likes their performance they might get the job! The acceptance rate is 0.01%, the company is so elite. And this company is also complaining about a software engineer shortage. They wish they could find more good engineers!

It's pretty obvious which company (or group of companies) I'm referring to. The interviewing process of these companies has done great harm to the software industry. And now they're trying to do further harm by using it as an excuse to get cheap foreign labor to reduce salaries.

shortcircuit01 | 11 years ago | on: Node.js, a popular tool for building modern internet services, has split in two

There is a big advantage to node.js that used to be mentioned a lot in its early days, but not much now. The advantage is still there, but it's only noticeable if a developer has experience in other server languages. The big advantage is that node.js had an asynchronous development model from the beginning. This caused all the code written since then to also be written using async. When a node.js project imports other libraries through npm, there is no need to worry about some random synchronous code blocking. All code is written using async because that's the way it was enforced from the beginning.

This is an advantage it shares with other new languages like Go that had good concurrency support from the start. Go has the same advantage with goroutines. All code written by the community since then uses goroutines.

Compare this to python and java which had better concurrency bolted on long after those languages were released. Twisted is basically node.js for python and it existed for a long time before node.js. But one of the main problems with Twisted is that all other existing python code is not written in an async way. A python dev could use Twisted, but as soon as they get some useful library form PIP, it's probably going to block and ruin the whole async.

Java has a similar issue. It was released with heavy threads as the only way to handle concurrency. There have been attempts to try to bolt on async and lightweight thread models. But there is a massive existing ecosystem of java code. None of that will work well with async and no one can rewrite all of it to use some new lightweight thread model.

This is the advantage of a fresh start like node.js or Go. Wheels will be reinvented, but it will have improvements that can't just be bolted on later.

The biggest flaw with node.js right now is that it came too early. If it came out with ES6, it would be a much better ecosystem. If generators/yield had existed from the start, all the callback mess could've been avoided. However, although the callbacks were an unavoidable mess, it did fundamentally force async on the ecosystem. NPM libraries like co show a migration path to the generators/yield future for older node.js code. The IO.js fork should use this opportunity to put something like the co library into core and push generators/yield as the way forward. If Joyent was the cause of the delayed generators/yield support, then they have done great damage to the node.js ecosystem. Node.js should've heavily promoted generator/yield use as soon as it was in V8, not hide it behind a --harmony flag for over a year.

page 1