I really do think that, as time wears on, we will see more of these incidents of people switching from Node to another, more familiar development environment. It seems to me that a lot of people started using Node simply because of the amount of hype that surrounded it, and many of these decisions were not as well researched as they should've been.
Reading through this gentleman's blog post, it seems that, originally, Node was chosen for just one reason – he wanted to develop the entire application in JavaScript. Other than this, it does not seem that he took the time to research the Node development environment before deciding to develop his application in it.
With respect to the author of this post, the testing environment and the ease of developing a CRUD web application are things that should have been looked into before a single line of code intended for production had been written.
In addition to this, as several other commentators have already noted, Node is not directly comparable to Rails. Node is basically an event framework and standard library that bolts onto JavaScript. Node would be more comparable to something like Python's Twisted or Ruby's EventMachine. The author was probably using one of the frameworks available in Node such as Express.js, Railway.js, or Geddy.
I never intended anyone to take the Discovery Institute paper as anything more than just a casual study of the subject (by a biased party). I certainly did not want to present it as academically rigorous on any level or as an unbiased look at the subject.
I thought that I had made this clear in my original post by using the word "study" rather than "research" or "peer-reviewed study". I really meant for it to be taken as more of a narrative account than an actual research paper. Unfortunately, it is now far too late for me to amend my original post to make this more clear.
In my defense, I typed up my post in a blaze of coffee-fueled self-righteous indignation. Mistakes tend to happen a lot when you shoot from the hip like that.
"I understand that sheltering them from the real world is not your motivation for this opinion, but it is the reality of what will happen. Your kids will miss out on a huge period of personal growth and a large expansion of their experience dealing with other people which they will never be able to get back later."
It is not necessarily the case that being homeschooled automatically equates to a child that has been sheltered from the real world. In reality, whether or not a child has missed out due to homeschooling depends heavily on the parents that are doing the homeschooling. A parent can homeschool their child and simulate a private school by integrating classes (with groups of children) from museums, libraries, and independent instructors. A parent can also homeschool their child by putting on a DVD and walking away.
I was homeschooled from pre-kindergarten through 12th grade. My parents relied on a lot of external classes to ensure that I was still able to develop the ability to interact with others. The reality for me was that I was able to have a far richer social environment as a result of my being homeschooled. By the time that I entered college, I had interacted with far more cultures and personality types than most of those around me. I went on to successfully complete my undergraduate and graduate degrees.
When I was homeschooled, I kept in contact with a small handful of friends that were also homeschooled. They all went on to do just fine in both college and in life. I realize that my experiences and those of my peers are anecdotal, but a study performed by the Discovery Institute in 2000 also provided evidence that there is no "sheltering" involved with most homeschools: http://www.discovery.org/a/3479
(Please note, I actually take issue with a few things in the Discovery Institute study, but I think that it does provide some degree of evidence that homeschooling does not automatically result in a maladjusted child.)
In my economics courses, we would sometimes take a look at the economic returns of education. I always found it strangely comical when someone would speak harshly about how homeschoolers are "sheltered" and then turn to me for moral support. It was always such a shock to everyone to hear that I had been homeschooled for my entire life. Some people even called me a liar outright. (I have always wondered what is it about homeschooling that seems to rub people the wrong way?)
I am well-spoken, outgoing, and have an easy time dealing with people. I do not say this (or anything else in this post) braggingly, but I say it to give credit to my parents for what their sacrifices were able to accomplish for me. You say that "sheltering" is the "reality" of what will happen, but how are you so sure of this?
I believe that the results of homeschooling, much like other forms of schooling, is a product of the teacher, the student, and the approach. I do not disagree that sometimes, with homeschooling, some children are not able to develop social skills. What I disagree with, strongly, is your insinuation that "sheltering is the reality of homeschool". Homeschooling a child does not automatically mean that the child will struggle socially.
Every day, I start up a computer running OS X. Then, I proceed to fire up virtual machines for two Linux distributions, Windows XP, and Windows 7.
I occasionally play around with a headless system that I have running FreeBSD. Then I may power up my iPod Touch to test recent changes to my mobile site. I also do a significant quantity of work while I am logged into a remote debian server via ssh.
I doubt that I am the only developer with this type of daily routine. I actually do think that this poll is pretty nifty (and I checked off OS X), but I think that it is still worth observing that the term "primary operating system" just doesn't quite carry the same weight as it used to.
I have to apologize. I fat-fingered the down vote when I originally meant to up vote your original comment. I think that my mistaken down vote was the one that initially sent your comment into the gray. This was unfortunate as yours was a remarkably civil post on a subject that can be somewhat controversial at times.
I am currently working on two projects written predominantly in CoffeeScript, and I completely agree with your original post. It is a mistake to think of CoffeeScript as simply another Javascript, and it is a mistake to make the assumption that people that are comfortable with Javascript will be comfortable within a CoffeeScript project.
CoffeeScript is more than just Javascript with a small sprinkling of syntactic sugar. There is a definite learning curve between Javascript and CoffeeScript. List comprehensions, extended regular expressions, and splats - these are just a few of the things that make up that learning curve. The changes in variable scoping that CoffeeScript makes is another.
I think that perhaps the best practice for publishing a CoffeeScript project should probably be to append a .coffee to the name rather than the usual .js. This would go a long way towards eliminating the kind of misunderstanding that you refer to in your OP.
More than likely, if you have to ask the question "should I use a NoSQL db" then the answer is no - just stick with SQL. MongoDB (and most other NoSQL dbs) is a specialized tool that is fit for specific use cases only.
There is no need for all of this ridiculous hyperventilating drama.
I have heard it said that the marketing department at 10gen was not good at "managing expectations". If you are working with a database, I would hope that you do not allow your expectations to be set by the marketing department. If you don't do your due diligence then you deserve to be bitten.
As to the original "Don't Use MongoDB" post. Whether it was a hoax or not was completely besides the point. Every single section in there was completely unsupported by any evidence other than the authors experience.
If you are going to talk about data loss then link to a bug report or a Google query pointing to a bug report or something. Anecdotes are not data.
If you disagree with what someone writes, then you should reply simply and without embellishment. To conclude that someone has a "sick mind" or has "killed their company" is a bit much of a conclusion to draw from a simple online debate at a tech/startup discussion site.
If Hacker News offered the ability to lock discussions, then I am quite sure that this one would have been locked.
Can't we all just calm down and get back to coding?
Overpopulation is a hard problem. There are complex socioeconomic reasons for why some countries have higher fertility rates than others. This is a heavily studied topic in health economics, but I am unwell right now and do not feel like digging through research papers. Instead, I will point you to a wikipedia article that talks about one (popular with economists) take on overpopulation:
Sorry for the wikipedia link, but it is not a half bad article on the subject and it was easy to find. Basically, this theory suggests that increased income per capita is correlated with a decrease in a country's fertility rate.
There are arguments on both sides regarding the flow of causality, but if you wanted to know what was being done to address the challenge of overpopulation then that article above is a good starting point for your own inquiries.
(Also, just as a side note, it is probably the case that you were down-voted for being off-topic and not due to some overwhelming sentimentality. Maybe if you want to talk about overpopulation you should have written a blog post and posted it up, I bet that would have probably got a much better reception.)
It's gotta be a slow day on hacker news when this is at the top page. (Or, is this being upvoted because it is Cringely.)
An entire article about web development past, present, and future without a single mention of PHP....
All snark aside, I strongly disagree with several things in this article.
Java never left, so it can hardly arrive again. Anyone that has ever worked in a corporate environment problably knows what I am talking about. Java dominates the Enterprise landscape.
Disk speed limitations on database access times can be and has already been overcome by in-memory caching. This is not new. Advancing SSD tech will not suddenly lead to Java's total ascendance as a web development platform.
The characterization of dynamic languages as "easy to program for a broader, younger, and maybe less experienced crowd of developers" is a rather unfortunate blanket generalization. This is especially the case because most people that I know that use dynamic languages usually have some experience in things like Java, C, C++ that Cringlely seems to hold in high regard.
The real problem that the vast majority of web developers face is not trying to cope with overwhleming amounts of daily traffic. The real problem is how do you build a product that is compelling enough to get signups, and how do you continue to develop this product to attract new signups.
Java is fast, and that is lovely. However, speed of execution does not matter when your development speed drags. When you are developing a product, you need to be able to move fast. If you get substantial traffic, then you can always rewrite backend services in Java (or whatever floats your boat) at that time.
Edit: When I say Java, I refer to the language - just as Cringely does in this article.
Of course a number of excellent languages have developed that combine the advantages of the JVM with the benefits of a more powerful language. (My personal favorite being Clojure.)
Am I the only one that considers all of this ranting about Nodejs to be a little bit strange?
I would have never expected a post that was obviously a troll to prompt this much of a reaction on both sides of an issue. That so many of these rants and counter rants made it to the front page of Hacker News is somewhat discouraging.
I have been playing around with node for a few months, and I have tried to stay completely out of this "conversation". With that said, I would like to contribute just a few points:
Bad programmers will be bad programmers regardless of the tools that they use. If they use node and fail to write code that is completely non-blocking, then that is what we call a teachable moment. There is no magic button, all technologies have downsides and tradeoffs.
People keep talking about how nodejs is not good for computationally intensive tasks, but v8 is not a slow environment. Am I the only one that puts computationally intensive tasks into a queue to be taken care of by a pool of seperate processes? I am only just getting into web programming, and it seemed fairly obvious to me that you would not put something like that into your main event loop.
Also, if you find that you must put something computationally intensive in your main event loop, then you should use something like node-proxy or nginx to proxy those requests to a number of "nodes".
Over and over again, I have seen that people complain that node is not a good multithreaded environment. Well, yes... That is the tradeoff of using something that is closely tied to the concept of the event loop.
If you are using node because you feel comfortable with threads and you need threads, then you are making a serious mistake. If you are a new programmer and you are using node because someone told you that it is cool, then you are making a serious mistake. If you are using node because you have a problem that can be solved or addressed with an event loop and you understand the tradeoffs inherent in this approach, then you are doing the right thing.
To use nodejs effectively will often require rethinking your approach to fit the tool that you are using.
This is a good presentation. It is a good demonstration that there is no magic bullet for database scalability problems.
I love NoSQL as much as the next person, but turning straight to NoSQL when you are faced with scalability problems in a more conventional relational database is always going to be a mistake. Before you translate everything over to a NoSQL db, try dropping the ORM (or find another one), looking at your table structures, or tuning your indexes. If you do this, then there is a strong possibility that you will save yourself some time, energy, and effort.
It pays to think deeply about your issue. NoSQL should be another tool in the toolkit, and not the hammer to be used to drive all of your database issues into the wall.
When you turn to a NoSQL solution, you should not be doing so with a mind to find a "magic bullet". You should be doing so because you have thought deeply about the problem and have found that a NoSQL solution answers a specific need.
If everyone could use NoSQL when it is appropriate to do so, then there will be less "horror stories" and more illustrations of valid use cases than what we have today.
I started with Drupal around the time version 4.7 came out, and I always thought that the project would have done better for itself by focusing more on its potential as a framework rather than a CMS.
Drupal has always seemed to have something of an identity crises. Some people think of it as a fully-featured CMS, some think of it as a framework or platform, and then you have a ton of people just trying to use it as a more flexible blog.
I think that when the community exploded in size, it had only really begun to wrestle with the identity question. The lack of some definite focus as Drupal's popularity expanded probably contributed to the current situation.
Frankly, I think that the majority of the current problems would be solved by trimming all of the fat from the core. That would allow the core developers to focus on making the core fast, stable, and flexible. Let the wider community maintain and provide any extra functionality.
Since this is Hacker News, and there are a lot of really smart, numbers-oriented people here, I just thought I'd provide a link to a dataset that looks at income distributions within the US from 1913 to 2008:
Under "Income and Wealth Inequality" on that page, click the link titled "(Longer updated version published in A.B. Atkinson and T. Piketty eds., Oxford University Press, 2007)".
It is an excel file that contains a metric ton of tables, charts, and figures. If you have a few moments and want a deeper understanding of the issue, that excel file is the best place to go.
(Edit: I just wanted to note one thing. My favorite graph from the excel file is figure 1B, where you can see that we are basically returning to where we were prior to World War II. It makes you wonder what was so different about the post-war period that resulted in this shift. Personally, I wonder if the sudden subsidization of education for returning veterans had anything to do with it, but I have no data on this right now, so...)
As far as my own thoughts on the issue go, I agree with pg. For a boring, academic take on it, there is a wonderfully dry 1980s paper by Rosen outlining the superstar theory:
Basically, thanks to technology and globalization the rewards to individuals that have the highest levels of abilities have been magnified. Their "reach" has increased relative to those below them, and their rewards have increased in line with this.
While interest in this seems to be popping up all over the place due to the current economic catastrophe in progress, the idea that communications infrastructure improvements lead to income inequality is an old one.
Here is Alfred Marshall (founder of neoclassical economics) in 1890 (revision from 1920):
As for myself, I have no idea about whether this is a good thing or a bad thing (or whether anything could/should be done about the growing inequality). However, it is happening now, on a grand scale, so I think that it is important for everyone to have some context on the issue.
The problem the USPS is having is not about prefunding pensions and pension plans. Their problem is that they are required to fund future employee health care benefits. No other company in America - public or private - is required to do this.
This is a side note, but... By the way, I am actually a frequent reader of your blog, and I really miss your posts on economics. Link for the curious:
> "means that they're the only govt institution that isn't a timebomb of future obligations"
This was the spirit in which the requirement was enacted. I completely agree with the idea. My problem with this line of reasoning is this:
Why fund the estimated lifetime costs of health care that will not be provided for maybe 40 or so years into the future? Why not fund a moving window of ten or twenty years of obligations instead?
There is a huge opportunity cost associated with stashing such a large amount of money away for this purpose rather than using it for current operating expenses.
> "Yes, current projections say that they're overpaid, but these projections have a way of going horribly wrong."
Indeed, projecting costs for the next half-century is a dangerous thing to do. This is why I question the rationality of handicapping the USPS with the responsibility for funding far-future liabilities based on those projections.
Even if you ignore the opportunity costs of this fund, the inflexibility of the rule as well as the fact that it puts so much faith in projections makes it a highly suspect decision.
The authors provide an overview of world history through the lens of technological advancement. The chapter on physics is a bit rough, but other than that I think that the book is quite solid. It should be required reading for anyone that wants to have a good overview of the march of human civilization.
Edit: By the way, I did not downvote you, but the likely reason for the downvote is that the individual that you link to does not seem to have the necessary qualifications to provide a strong critique of civilization.
Remember, just because someone writes about a topic does not mean that they are an authority on this topic.
Why is this being upvoted? This article begins with a questionable premise and then descends straight into misinformation.
The problems in the USPS did not begin with email. They began with a highly questionable requirement that the USPS fund a plan to fully cover the estimated future health care costs of all current employees. They are the only government institution required to do this, and it has crippled their ability to remain profitable:
They have overpaid this fund by billions of dollars, but they are not able to use this money to address their current financial shortcomings.
Somehow the author of this piece is able to extrapolate from the fiscal problems of the USPS to the overall job market. The extrapolation is misguided at best.
There are so many things wrong in this article that I will not take the time to address them all. (Most of Europe was thriving in the Middle Ages? Really? The author needs to define the word thrive.) I just want to say that I find it interesting that there is so much hand-wringing in these comments about jobs being displaced by technology.
In economics, we like to call this creative destruction. Old jobs go away and new jobs take their place. This is a natural process, and their is nothing so magically different about the technological revolution that it will somehow "make jobs obsolete".
Just as The Luddites protested against the loss of jobs brought on by the technological progress of the Industrial Revolution, now some individuals protest against the loss of jobs brought on by the technological progress of the "Technological Revolution". Then, as now, it was all hand-wringing and nail-biting with no serious economic analysis.
The critics say this time is different, this time there will be no new jobs, and we should urge people to find something other to do than working. The critics are wrong. Don't worry people. Employment is here to stay.
Side Note: The author engages in some navel gazing when he says America has all that it needs. I'm not sure if the author has noticed it or not, but there is a such thing as globalization and the global needs for goods and services will increase as developing countries close the ground with developed nations.
This global recession is just another business cycle, eventually the world will have another upswing, and then we will revert to mean again. There is no magic here, just the march of time. I would not put too much stock into those who believe that a single recession merits the reevaluation of the entire modern economic system.
Edit: Trying to trim the size. Eventually, I will learn the art of not making posts into walls of text.
Which ones? There are quite a few companies in the finance industry. If we are going to paint them as good guys and bad guys, then it is important to note that those are subjective criteria.
"This is precisely what happened, though. The large investment banks... Was it planned that way? Does it matter?"
Well, if your objective is to tar and feather people then I would suppose that it is important to find a villain.
However, if your objective is to understand what happened and how it could be prevented, then I think it is important to ask if something was planned or if it was a product of a flawed system. I can understand why you may disagree with me.
"Because you were once involved in investment management yourself, and you are a good & decent person, and therefore the industry as a whole must be comprised of similar people and follow similar patterns of behavior and judgement?"
No, actually quite the opposite. Please read my reply to another gentleman here:
If you have any questions, please ask me, I would be happy to discuss with you (regardless of the beating that my karma would likely take).
"So you think paying regulators more would somehow auto-magically deal with regulatory capture?"
There is no magic solution for regulatory capture, but the disparity in pay is a glaring problem. People respond to incentives.
Right now, many people view regulatory agencies as a career springboard to higher paying positions within the large investment banks. If the pay at the regulatory industries was more in line with what an individual with a similar background would earn elsewhere, then that would dramatically decrease this effect.
While we are talking about fixes, one more possible fix would be to dramatically restrict the creation of derivatives, because their complexity exceeds their usefulness as financial instruments at this point in time.
These are the types of things that would be useful to talk about. Dr. Taleb has both the knowledge and the breadth of experience to talk about them. Unfortunately, he chooses to focus the majority of his influence on labeling people within the banking industry as ethical and moral evildoers. (South African apartheid? Really? I find the implied analogy to be disgusting.)
"Who gets to decide what the right outcomes are and whether they are efficient?"
Whether or not an outcome is "right" is subjective, and is more in the field of law and philosophy than economics.
Whether or not an outcome is efficient for society does not need to be determined as it can be measured. An outcome is efficient for society if it makes at least one individual better off without leaving any other individuals worse off. (This is Pareto efficiency).
Of course in the real world, there will almost always be winners and losers with any policy change. The solution is thus to make sure that the total net benefits of any policy change is positive.
The net benefits are the benefits (both implied and explicit) of a policy minus both the costs of doing the policy and the costs of potential gains that could have been had by pursuing alternative policies. Both the costs and the benefits should be aggregates that include the costs and the benefits to all parties affected by a policy.
One thing that I think is worth thinking about when you look at recent developments in the markets is this. From the time period of roughly the 1950s to roughly the 1980s this form of detailed cost-benefit analysis was popularly employed by both governments and private companies. (I am not actually this old, but I have heard this story multiple times from economists considerably more seasoned than me).
Unfortunately, starting in the 1980s, a more expedient form of cost-benefit analysis that focuses mostly on the immediate costs and benefits to the organization conducting the analysis began to dominate. This type of analysis was championed by the finance and accounting oriented economists that began to spring up at around this time. (Disagreement over this and other issues led to university economics departments around the nation dividing from business departments and finding a new home - and less funding - with the liberal arts and social sciences.)
It is expensive and time-consuming to conduct a thorough impact analysis, so I can understand why the more academic approach would fade away in favor of something more expedient. However, I think that a lot of the recent problems we see in governance can be traced to this fast-food economic analysis:
* Lack of investment in infrastructure? - Well, this report on my desk says that it will be expensive to fix those roads and the ones we have now seem to be holding up just fine
* Internet providers want to throttle bandwidth based on its source? - Makes sense, according to this report on my desk providing bandwidth obviously costs money - why not charge for it?
* A tax on transactions? - Well, this report on my desk says that would make it more expensive to trade stocks - there's no way this could be beneficial.
While the right answers to many of these questions can be found either in economic journals or by speaking with an independent consultant, policymakers rarely have the enthusiasm for a topic to dive so deeply.
I hope that soul-searching due to the financial meltdown brings the old approach back in favor. It is sorely missed.
Reading through this gentleman's blog post, it seems that, originally, Node was chosen for just one reason – he wanted to develop the entire application in JavaScript. Other than this, it does not seem that he took the time to research the Node development environment before deciding to develop his application in it.
With respect to the author of this post, the testing environment and the ease of developing a CRUD web application are things that should have been looked into before a single line of code intended for production had been written.
In addition to this, as several other commentators have already noted, Node is not directly comparable to Rails. Node is basically an event framework and standard library that bolts onto JavaScript. Node would be more comparable to something like Python's Twisted or Ruby's EventMachine. The author was probably using one of the frameworks available in Node such as Express.js, Railway.js, or Geddy.