I went on another job interview. This was another startup. Surprisingly, they were less clueless than the others.
One co-founder had a Harvard MBA, which translates into English as “I’m a retard.” However, he was intelligent and had the “abused productive” personality type. Actually, that’s a bad sign. If the non-technical cofounders have the “abused productive” personality type, then they almost definitely hired parasites and psychopaths to implement the website for them.
They had a short domain name, a common English word. That shows what big amateurs they are. They probably paid a ton of money for that domain. Every dollar you spend on a domain name is a dollar you don’t spend building your website. It’s much more important to have a good website than a good domain name. You should never pay more than the minimum registration fee for a new domain. However, clueless VCs will disagree, and their opinion is the one that counts, when it comes to raising capital for startups.
They said “We’re building our website in node.js.”
I briefly researched node.js. I was not impressed. Some of the stuff I write here may be wrong, but it was my first impression.
Node.js is an extension of Javascript, enabling Javascript to be used server-side.
Javascript is incredibly ugly. Why would anyone extend it to a full server-side language?
Node.js is single-threaded only. You use non-blocking calls and callback functions. In these days of multicore servers, why would anyone design a language to be only single-threaded? Plus, it’s a PITA to manage all those callback functions and debug.
With Apache, a new thread/process is spawned for each request. The PHP code then runs in that thread. The database calls are blocking calls; the thread sleeps until the call returns. If one thread is waiting for the database, that thread cedes the CPU via UNIX multitasking, and the other threads work.
The drawback is that spawning a thread/process is CPU expensive. (Actually, doesn’t Apache keep a pool of idle threads, only spawning new ones when necessary? If that is true, then the node.js criticism is completely wrong. Node.js’ “single thread model” is based on a criticism of Apache that’s outright false.)
However, unless your website is super-popular, it doesn’t make a difference. I doubt I’ll ever get enough traffic to push the limits of my Linode, even without any WordPress caching extensions.
With node.js, it’s only one thread. Instead of spawning a new thread, you have non-blocking database calls. Then, there’s a callback function when the database call returns. Internally, node.js processes all the callbacks, in order.
There’s another language that uses non-blocking calls and callback functions. It’s VB6 (Microsoft Visual Basic 6). My preliminary analysis of node.js is that it uses advanced VB6-like technology.
Node.js does have a lot of built-in libraries. If you want a basic node.js http server, you just include the http library, listen, and handle the request.
If you want to set up Apache/LAMP, that’s a full day of work. If you write an http server in C++, that’s a lot of code. With node.js’ libraries, you can get a basic http server running quickly.
Do you see the fallacy?
Yes, it’s nice that node.js gets a basic http server running quickly, via nice libraries. However, you still have to write the code for your application.
Clueless people get obsessed with languages and frameworks. No matter what language and framework you use, you have to write your application code. If you use a fancy framework, then you have to write framework-compliant code in addition to your program’s code. With node.js, you’re fiddling around with callback functions and manually managing timing, instead of letting Apache and the OS do it for you.
I wonder if a clueless person prefers to install and run node.js, rather than set up a full LAMP installation? It’s a lot more work to properly install and configure LAMP, than to install node.js and run that.
I suspect that the founders hired a parasite/psychopath to build their product. He’s focusing on hype instead of content, and picked the latest trend, node.js. However, unless I meet their CTO, I don’t know if he’s sane or a psychopath. Given that the non-technical co-founders were intelligent, I’m pretty sure they hired a psychopath.
The “beauty” of node.js is that it only spawns one thread that does everything. However, what if your website is super-popular? What happens once one thread isn’t enough? Then you have to add code to juggle requests between threads and servers. Now, all the advantages of node.js are flushed down the toilet, once one thread can’t handle everything. With Apache, I can upgrade from a 4-core server to an 8-core server and get double the power. You can’t do that with node.js, unless you write code to handle it, which defeats the benefit of using node.js in the first place. Yes, I can write my own thread pooling algorithm, but why not use Apache, which was already super-tuned by others? If I’m balancing my load among several servers, I can directly configure Apache to do that for me. With node.js, wouldn’t I have to manually add all the code for that? (There are some libraries planned but not finished, to address some of my concerns. However, they probably will eliminate any advantages of node.js in the first place.)
Node.js seems like exactly the opposite of the language I’d write. In these days of multi-cores, you need a language that handles multiple cores/threads/processes well. Node.js will only use one core, no matter what you do, unless you spawn multiple node.js instances.
I’m not ready to go all-out and say “node.js sucks”. The slogan for node.js is “It’s like Ruby on Rails, but it doesn’t suck like Ruby on Rails.” Is it true? Is it hype? Until I spend a lot of time working in node.js, I won’t be sure. However, based on what I read, I’m not sufficiently impressed with node.js to make me learn it on my own for my personal website. I’m sticking with LAMP, for personal projects, for now. I’ll only learn node.js if they wind up hiring me.
There was another amusing moment from the interview. There’s always a parasite/psychopath on the interview team. That’s a universal rule of The Matrix. This parasite was their “technical advisor, an idea guy”, i.e. someone who spouts buzzwords but can’t actually implement anything. This guy was a parasite, a psychopath-in-training. He’ll be a full-on psychopath once he gets another 10 years of experience manipulating people. He was sufficiently inexperienced that he didn’t notice that I was a potential threat to his gravy train. I’m sure I gave him some tips on improving his lying skills. If you’re the “idea guy”, it’s never your fault when the project ends in disaster, but you get credit for any success.
Amusingly, the “idea guy” had a CS PhD from MIT. I guess that proves one point. Even if you have a degree from a top school, that doesn’t mean you can actually write working code. However, this psychopath would never risk taking a job where he’d actually have to write code. He’ll always take a job as “idea guy” or “architect”, without having to actually code or do real work.
He compared node.js to Rails. I said that I was involved in a Rails disaster. (It definitely was a disaster. They did fire me for “not being a team player”, because I pointed out the disaster-in-progress, but went bankrupt anyway.) He said “WTF? Rails projects never end in disaster! You’re kidding me!” I didn’t mention that I wrote the #1 search result in Google for “Ruby on Rails Sucks!”
His reasoning was “A lot of VC money is spent on Rails. Therefore, Rails must be awesome.” When it’s a hype-based economy and not a value-based economy, a lot of capital can be squandered on stupid things. If you throw enough capital at a project, you might get it to work, even if you use Rails. Also, the psychopaths give each other positive feedback, when they all decide to use Rails.
That’s parasite logic. If you evaluate solely by hype, Rails is awesome. If you evaluate by content, Rails sucks. I’m so confident in my analysis “Rails sucks!”, that I can nearly conclusively say that you’re a parasite or psychopath, if you like Rails. It was amusing to look at the comments on my “Rails sucks!” post. Half strongly agreed with me and half strongly disagreed with me. That’s the divide of productive versus parasitic personality type.
I don’t know if node.js is awesome or a POS, because I haven’t used it yet. However, they were working on their website for 3+ months and had no working alpha yet. That sounds like a disaster-in-progress to me. If they hired a skilled psychopath, he’ll be able to keep making excuses until they’ve burned through their seed funding. They promised to show me their alpha during the interview, but they didn’t, probably because it isn’t ready yet.
I’m 99%+ sure that the “idea guy” advised against hiring me, but that the other two “abused productive” cofounders were interested. Those cofounders probably aren’t aware that their “idea guy” is faking it, so I’m SOL. They’d probably be completely insulted by the idea that he was conning them.
The “idea guy” will build a great reputation for himself. People will think “We’re lucky to have him!”, when he’s really an unqualified twit. That is the power of psychopaths. If everyone else is saying “X is a super-genius!”, then you’ll doubt yourself when you think that maybe X isn’t so smart. In the hands of a psychopath, an MIT PhD is very powerful. Most people would assume that MIT’s faculty is smart enough to not hand out PhDs to psychopaths, and would automatically assume that the psychopath is a super-genius. (I wonder if the top schools and their faculty are completely controlled by psychopaths? In that case, a psychopath will fit in perfectly, while competent people get frustrated and quit.)
I always evaluate someone independently, and have enough experience to know that credentials are meaningless. I have enough experience now to trust my own judgment, no matter what a piece of paper says. That’s also why, as an employer, I’d never use a screening test. I’d need to evaluate the personality type of the candidate, and you can only do that by seeing them or with a phone screen.
If the psychopath senses that you can see through him and are starting to question him, then he’ll fire you or make sure you don’t get hired in the first place. Therefore, there must be a parasite or psychopath on every hiring committee. That’s one of the rules of The Matrix. Unfortunately, that makes it hard for someone unplugged like me to find a job.
That’s one of the main reasons the system is falling apart. Almost everyone lacks the ability to tell the difference between a really skilled worker, and a really good faker. The psychopaths have set up the legal system and political system and financial system to be *EXTREMELY* psychopath-friendly. Most intelligent people are pro-State brainwashed to be susceptible to psychopath manipulation. However, by maximizing their theft, the psychopaths are causing the whole system to fall apart. You can’t make a psychopath understand “You shouldn’t steal so much. The whole system will collapse if this keeps up.” Even worse, by having nearly perfect psychopath control, it becomes very hard for intelligent people to find a job. “Grow your way out of a recession!” is impossible if psychopaths control everything.
Is node.js the next great thing? Is it another hype bubble like Rails? I’m leaning towards “hype bubble”, but I’m not making a full-on commitment to that statement, because I haven’t tried node.js yet.
In the days of multicore servers, it seems stupid to design a language that uses one core max. I’d be much more impressed with a language that promoted efficient easy use of multiple cores. That’s the biggest lacking feature of modern programming languages, support for multiple cores and multiple threads. For that reason, node.js seems like a bad idea. It’s the exact opposite of what I want, easy muticore support. With non-blocking I/O and callback functions, node.js shares all the worst features of VB6.
This bit was funny. According to that document, it’s illegal to say anything negative about node.js, because that’s misusing the node.js trademark! It’s like they knew they were designing a turd, when they said that you’re not allowed to say anything negative about node.js. Only an evil person would say “You’re not allowed to publicly say anything negative about my project, or I’ll sue you.” (However, they later say that certain types of criticism are allowed. Self-contradictory legal documents are amusing.)
Thanks a lot for getting coffee sprayed all over my monitor!
I have been in programming for 25+ years and every year there is the new wonder language. There must be 1,000′s by now, C/C++,Fortran, Pascal, Cobol, C#, Python, PERL, Ruby, F#, Haxe, on and on and on…… What I think the thing to do is, everyone create your own language. All these languages are just wrappers for C/C++ libraries and given a marketing name anyway.
I would suggest MotherF#$%ingC. Then when you go into the interview you can say, “I’m the world’s #1 expert in MotherF#$%ingC.” They will ask what is MotherF#$%ingC? You reply a new social networking langauge targeted for the urban environment. What is some of the syntax and semantics of MotherF#$%ingC?
Glad, you asked for example you don’t have a Home page you have a Crib page. You don’t have functions like String.length, You use MyBitch.String.howmuchyouholding outoome(). They will be so impressed especially the Harvard MBA’s you can I promise name your own price!
====
Requested edit:
have been in programming for 25+ years and every year there is the new wonder language. There must be 1,000′s by now, C/C++,Fortran, Pascal, Cobol, C#, Python, PERL, Ruby, F#, on and on and on…… What I think the thing to do is, everyone create your own language. All these languages are just wrappers for others C/C++ libraries and given a marketing name anyway.
I would suggest MotherF#$%ingC. Then when you go into the interview you can say, “I’m the world’s #1 expert in MotherF#$%ingC.” They will ask what is MotherF#$%ingC? You reply a new social networking langauge targeted for the urban environment. They will ask: What is some of the syntax and semantics of MotherF#$%ingC?
Glad, you asked, for example, you don’t have a Home page you have a Crib page. You don’t have functions like MyString.length(). You use MyBitch.String.howmuchyouholdingoutonme(). They will be so impressed, especially the Harvard MBA’s, with your up to date abilities, you can, I promise, name your own price!
Very good article.
Another point is that the community is very aggressive when we talk about the flaws of Node.
I really don’t understand why…
Node.js is the latest fad, replacing Ruby on Rails.
It becomes a self-selecting community. The people who focus on the hype and ignore the flaws will like node.js. It really is better than Ruby on Rails, but it’s still a POS.
Some people would say “Is this a good language/framework? It has some neat stuff but also has some flaws.” They get disgusted and move on to other things.
This page had an interesting observation. You can run ASP.NET in asynchronous mode like node.js, but that isn’t normally used. Asynchronous ASP.NET beats node.js, in terms of # of “Hello World!” pages per second.
I am 99% convinced that node.js is about hype rather than substance. Also, that startup did give me a rejection, which isn’t much of a loss since they’re probably doomed anyway.
I’ll stick with my PHP/LAMP for now. I am open to new things, but Rails and node.js are garbage.
Going back to your point “I don’t understand why the node.js community is a bunch of douchebags.”, you really need to understand productive/parasite/psychopath interpersonal dynamics. Once you understand that, you’ll understand why Rails and node.js can be so popular, even though they suck so much.
PHP is a language for amateurs.
The fact you can’t understand Ruby or Rails isn’t a flaw of the language or the framework. It is simply your stupidity.
I really like Ruby. Ruby is awesome. I’ve written tons of code in Ruby. But it’s all been for myself, to figure out an object model. The syntax is clear and minimal and the language has lots of great features. I first learned Ruby in 2001. When I want to write something serious I pick a real language like C++. That’s because all Ruby offers is a mercurial set of gems. (Yes, there is a tool to handle gems, but doesn’t that say something about the situation?)
In your other blog posting you mention how Rails sucks. Rails is very attractive. But it indeed sucks because it’s documented by idiots. Passing comments which are key to understanding aren’t explained. You’re running one version and all the web renders is results from 2007. irc#rubyonrails is full of onanistic douchées.
I thought about leaning Node.jiz. Thanks for the input, I don’t need another Rails experience.
wow. so everyone who doesn’t agree with your cock-eyed view of the world is obviously a parasite or a psychopath. you really need to take a step back and listen to the nonsense you are spouting. your article is so full of factual inaccuracies i don’t even know where to start. maybe you should put your LAMP stack aside for a few hours and take some time to actually do some research on scalable server design. node.js is far from perfect but it get’s a lot of things very right and has a lot of very smart people working on it. i really hope you don’t get the job because you will obviously just get fired again within a few months for not being a team player…
It must be nice being able to fit the technologies you use in a four letter acronym. I’m sure its easier for you, stick with it!
Interesting Article,
However if I were you, I would never have published it. Why you ask, because it proves that you are unable to find your behind with two hands. Now you might be right about the people across the table from you, but every bit of analysis you did is plain misinformed.
If you had any real idea, what you were doing, you would have done a more thorough assessment before spouting off. You would have had an in-depth look at the nodeJS source code. You would have then had deep hard think about the concepts involved. You would then have had a look at the nodeJS documentation. And after that you would have (presuming your intelligence is anywhere near what you claim) come to the realization that maybe you should rethink what you believe to know.
Now you might ask: “Why is he so confident in making these claims?” Well because I sam the CTO of a startup; we started out doing a prototype on a LAMP stack as a proof of concept. We have since been funded and have rewritten our site to be more easily able to expand. We did so by implementing all our back-end services in nodeJS and we did that in the time of 3 months, including redoing the front-end, and adding several verticals expanding our offering significantly.
Oh and yes, as a startup we are a small team and the CTO actually has to code. So I actually have a clear and present example of how things can turn out using nodeJS. Of course “disasters” can happen using nodeJS as well. Just like in Rails, Perl, PHP, or any other language/environment. In my time I have seen a bunch of disasters happening. One thing I noticed is that it never was really a problem of the language or the environment. Usually it was bad management, bad resource use, or a bad design.
If I were you, I wouldn’t take myself as the fount of all wisdom. I’d reevaluate my preconceptions and try to imagine a world where I was completely wrong. And once that is done, I’d try to get myself some actual experience and try to look at the bigger picture a bit. Maybe when you get another 10 years of experience under your belt, you’ll be able to find your behind with two hands; who knows, maybe you’ll even be able to find it with one.
You’re just a jerk, no wonder you’re in the job interview state..
I do have a job now. It’s with a company that isn’t going to be bankrupt in two years. I’m using ASP.NET and ASP and VB.NET. I’ve never used them before and I’m doing fine. (Actually, ASP.NET is very similar to PHP, except that the underlying language is VB instead of Perl-like PHP.)
I did look at the node.js documentation. It was unreadable garbage just like the Rails documentation. Why should I have to look at the node.js source code just to understand how to use it?
My article was probably discussed somewhere else. A bunch of people made negative comments at the same time.
If you’re writing small services in node.js, that might work. If you’re writing a complex application, it’s probably going to be a disaster. There’s no way my current employer’s application would work in node.js.
The node.js idiots still haven’t got a working website. They did say “It’ll be ready in a month”, and it still isn’t done. They updated their placeholder website from “Sign up and we’ll E-Mail you when we launch in late 2011.” to “Sign up and we’ll E-Mail you when we launch.”
The node.js idiots were all using Macs. The “Rails Advocate” from my old job had a Mac. I’m starting to be pretty convinced that if you’re a computer programmer and own a Mac, you’re probably clueless. That should be Apple’s slogan “A computer so easy to use, that even an evil person can use it.”
Yes, bad management is also a factor. Bad management is much more likely to chase the latest trend, rather than do things right. I’m convinced that node.js is the latest hot trend, hype over substance.
I saw one amusing code fragment. He had “self = this” in every function. You have to preserve the “this” variable for the callback, because “this” always refers to the current object. If you have “self = this” at the top of every function, that’s a sign that there’s something wrong with your language.
Callbacks are a disgusting way to code. It rapidly leads to a mess.
There was another amusing “feature” of node.js. If you have a bug in your code, then the entire server crashes! That was amusing and pathetic.
Philipp Dunkel sounds like a world-class douchebag. I hope I never work for scum like him again. Also, his website looks like a spam site. Just because you’re the CTO of a startup, doesn’t mean you actually know anything. There are plenty of VCs willing to waste money.
I’m still convinced that node.js and Rails are garbage. I’ll stick with VB/ASP or LAMP over node.js or Rails anytime. When evil people strongly disagree with me, I see that as evidence that I’m right.
I certainly can refuse all node.js and Rails jobs, and still find other jobs. It’s actually helpful. If a job ad says “Rails required” or “node.js required”, then I know they’re idiots and don’t waste my time.
I am openminded. I’ve noticed that “uses lousy languages” is highly correlated with “idiot/evil management”.
What a bunch of disinformed BS.
And another thing: just because your company did not succeed in implementing something in Rails doesn’t mean Rails suck. It means that the team you worked with sucks. I know of many many Rails projects that were successful.
I’d never give you a job.
I thought your original article was cute, and that you only wrote the article without actually trying node.js because you thought it would be ironic. However, this particular comment of yours seems to say (to my meagre understanding) that confirms that you have a fairly superficial understanding of all this language stuff. ;P You judge people by their choice of machine form factor? Do you even know what’s in a Mac? Ever heard of the LLVM? Oh god.
You seriously lack any serious understanding of the issues of web development, deployment and scalability.
It is a good thing you stick to toy environments and those that hold your hand.
You don’t understand Ruby, Rails, Javascript or Node.js how can you claim they are garbage?
There are over 230,000 active rails apps in the wild. I guess it is tough to develop in and deploy for um, just you.
Just because Rails is widely used, doesn’t mean it doesn’t suck. Microsoft OS is widely used, but it isn’t as nice as Linux. I stick with Windows on my desktop, because much software, especially games, doesn’t have a Linux port.
At one interview, they were using Rails. I should have refused the interview, but I figured I’d see. They had 50+ programmers, for a project where I thought 5-10 people should suffice. They probably had a product that mostly worked, but with huge expense and waste. That counts as a “successful Rails use”, but I saw a ton of waste.
Thank you very much!!!
being called a “world-class douchebag” and “scum” by you is something I consider a mark of quality and I believe most of the world would agree with me.
Aside from that: reread my earlier post and take the advice contained, to which I only add one piece:
Just because you spew vitriol does not mean you are not clueless, quite the reverse in fact.
I like node.js, but the author does have some valid points about some of the node.js pain points (albeit in an abrasive manner). Some of it is even kind of funny, especially if you’ve ever had to work with “difficult” people.
Well EACH NodeJS process is one threaded, but that doesn’t mean you should run just one thread! In production of NodeJS application, we usually use more than one process(usually one for each core). You can have a load balancer which redirects the requests to processes. By this way you can scale and use more than one server easily. Node also have native clustering support. Using one thread for the whole application is not a good idea, since if there’s any unhandled exception, that will kill the whole application. Beside the idea of using a load balancer, you can even use Hook.io which is a provides a fancy TCP, for different processes of your application to talk to each other. With hook.io you can have one process for each component, using multi-core advantage, you can even have an easier error management design. The only thing that I find NodeJS might not be good enough, is that it is not faster than C! Though thanks to V8, it executes JavaScript faster than PHP, python and ruby. You can even easily have your async modules written in C, that can expose the library API to JS.
Try doing 100,000 open websockets with PHP or ASP and you’ll realise why Node.js is the right choice for it.
How many websites actually have 100,000 simultaneous users?
Try writing something with complex business logic in node.js, and you’ll understand my point.
My experience with a Rails disaster was very educational. If node.js is the Rails replacement, I definitely want to avoid it.
I probably have more experience than most of the people advocating for node.js. By programmer standards, I’m an old man now. In most of my job interviews, I was the oldest person there, and I’m not that old!
If you have to install a bunch of other packages and tools to get proper behavior out of node.js, that’s a symptom that you’re building on a flawed foundation.
You have not convinced me that node.js is not hype over substance.
Anyway, you’re free to work with node.js, and I’m free to work for people who have a clue. At this point, we’re just calling each other names and not really having a discussion.
I only looked into node.js because of that job interview. They still don’t have a working website, and I know I could have done it by myself in a month. It reminded me a lot of the Rails disaster. I briefly researched node.js, and concluded it was garbage like Rails. In fact, many of the people who loved Rails are following the hype and moving to node.js. I wrote a post summarizing my conclusions, hoping to warn some of my regular readers. Some of them appreciated it, and one said that he avoided wasting time on node.js based on my recommendation. My old post was cited on a node.js discussion group, and now some people there are upset. All of the comments they made about me were name-calling without addressing any of my points.
There is one point that is true. If you’re an evil hiring manager, it definitely would be a disaster to hire me. Fortunately, I found a job working for people who have a clue and seem to appreciate me.
I have a new job working with VB.NET and ASP.NET. Those will definitely still be around in 5 years, so that’s good experience. I have no reason to investigate node.js anymore. PHP/LAMP/WordPress is fine for this website.
@alFReD NSH don’t even bother, leave the man along with his LAMP stack and hatred towards Node.js, Rails and Apple. I’m sure he knows what he’s doing #no #not_really
Sounds like you hot rejected to me
Yes, they rejected me. They still don’t have a beta for their website. I found a job with a business that isn’t going to be bankrupt in a year.
I’ve learned the hard way. It’s a bad idea to work for scum and idiots. I don’t feel bad that they rejected me. They’re going to get the outcome they deserve; their startup will be a failure.
Pingback: Revisiting the 2011 Predictions, Part 1 – tecosystems
Pingback: Windows Azure and Cloud Computing Posts for 1/4/2012+ - Windows Azure Blog
My first non-spam trackback!
Maybe I should E-Mail the CEO of the startup that was using node.js, and taunt him? He was pretty rude to me. He still doesn’t have a working website. I know I could have written it by myself in a month in LAMP.
I still say that “I have a Harvard MBA!” or “I’m developing my website with node.js!” translates into English as “I’m a retard!”
Decent article and you make some good points — thanks for posting. I am weighing the pros and cons of Node myself and like to hear both sides of the story. But I must say you have a huge superiority complex. Harvard MBA retards? Parasites/Psychopaths? From this article *you* are the psychopath type that I’ve worked with that thinks everything they touch is gold, and who won’t work on anyone else’s code unless you get to refactor it so its in your own image. It’s no wonder you were/are job hunting
It’s February now (4 months later) and they still don’t have a working website. My analysis, “They were retards!”, was correct. I know that I could have done it by myself in a month with LAMP.
Of course, “Those specific people were retards!” does not prove “Everyone who uses node.js is a retard!” I gave plenty of other reasons. PHP/LAMP or ASP.NET are superior to node.js. If it were my website, it’d be 100% PHP/LAMP, as is this website. My current job is a Microsoft/.NET shop, which is also a reasonable choice.
My projects at my new job have a greater complexity than their simple website. I’ve done both maintenance on other people’s garbage, and complete rewrites. At my new job, I’m rewriting old VB6 in VB.NET, but I don’t have the freedom to fix the design flaws in their database, making it a combination of both garbage/maintenance and new code.
From the viewpoint of an evil person, someone honest and intelligent is evil. I have the opposite viewpoint, correctly identifying evil as evil. I totally understand that an evil person would say that I’m evil. At that point, all we can do is call each other names. I don’t expect to convince an evil person. The target audience for my blog is the “abused productive” person trying to understand, and not evil people.
Yes, it is that black-and-white. Some people are just plain evil. Don’t make excuses for them. It’s painfully obvious to me now that I’m mostly unplugged from The Matrix.
I can try to find a situation where I’m not working for evil and not supporting evil people. Given the nature of the State, that’s practically impossible.
I do have a new job. It’s pretty lame, although I am getting some .NET experience. I expect that I should move on in another year or two. Ideally, I should start my own business (on-the-books or agorist-style), but that isn’t easy.
I’d like to find a way for the intelligent “abused productive” people to organize and avoid the evil people. If they do that, they should be incredibly productive. That’s one of the benefits of agorism.
In the present, most intelligent-but-abused people struggle to get by. They are manipulated into thinking it’s their own fault, due to the evil people controlling them (directly and indirectly).
Pingback: Flavor of the Day – Rob Fahrni
Wow, Maybe you are just a retard that can’t understand anything not written for retards.
Anyone who thinks PHP is a good language is clearly a retard since PHP was created by amateurs who built up a disjoint language full off illogically put together features, bugs and security flaws.
The fact you can’t understand Ruby and Javascript, two simple and easy to test and maintain languages says it all.
Actually, saying you can’t deal with calbacks shows you are single digit IQ retarded.
You are not intelligent, you are like Michelle Bachmann or Rick Perry, too stupid to know they are stupid.
If you’re a typical person who likes node.js, then it’s obvious that everyone who uses node.js is a twit.
I stopped reading at “full off illogically put together features, bugs and security flaws”.
Don’t ask me why, but even when it smells like troll, I can’t resist chiming in. While the tone of your article doesn’t sound much like you’re looking for a discussion, I’d like to at least attempt to address some of your points. I’m not a core contributor to node, but I’ve contributed several patches and am pretty familiar with the code base and philosophies, so I’ll try to address these from a non-”clueless” perspective.
First off, one of your early points that is built upon later in your article is that “Node.js is an extension of JavaScript, enabling JavaScript to be used server side”. This is actually pretty far off from reality. The only language in use is plain ol’ JavaScript, and absolutely no language extensions are used. Node.js provides a container for JavaScript (running on V8) with a set of core libraries that emphasize system and protocol level support for things like file system access, HTTP, etc. Node.js is not a programming language, it does not extend any other languages, it does not have its own interpretor, the code is not compiled/transpiled or otherwise munged to run on the V8 runtime.
I was going to skip over the “JavaScript is incredibly ugly” remark, but coming from a guy who settled on a project using VB… not sure I can help you there.
You mentioned that Node.js is “singled-threaded only”. This is incredibly false. I believe what you meant to say is that JavaScript has a single-threaded execution model. Node.js, on the other hand, offers several facilities for running tasks across n-number of threads and processes, each with their own separate context. The only hard rule there is no shared memory.
You also mentioned that Node.js’ argument against the thread-per-request model (e.g., Apache and 90% of the other servers out there) is that spawning threads/processes is expensive. This is also not accurate – the cost that Node.js attempts to eliminate is the context switching between threads. In IO-bound applications, the amount of PCB/switchframe/stack/heap/etc activity related to context switching is very disproportional to the amount of work being done (unless, of course, you’ve found an alternative model such as is employed by Node.js, Tornado, et al.).
You also state that this isn’t important unless your website is super-popular. High RPS isn’t the only use case for Node.js. It’s also useful for running on low-grade commodity hardware, or provide a service with long-lived persistent connections, or for sharing feeds across multiple clients without mucking with multi-threaded access patterns, or providing complete control over the HTTP lifecycle for HTTP nerds like me, etc…
And let me get this straight, it takes you a DAY to get an Apache/LAMP stack working? Moving on…
If I skip over the remainder of your comments referring to Node.js as a language or insisting that Node.js only allows single-threaded execution, then there’s pretty slim pickings. You did have an amusing statement in your comments, however, saying that “ASP.NET is very similar to PHP”. Different topic, of course, but this is pretty bizarre statement. How bizarre, depends on whether you’re using ASP.NET MVC or ASP.NET WebForms. Regardless, I suppose that once you get rid of your component model, and data bindings, and view state, and the page life cycle, and state management, and code behind, and virtually anything else that distinguishes ASP.NET from plain ol’ ASP, then ya… kinda like PHP, if you’re a troll.
Don’t bother FSK isn’t going to understand anything you wrote and will use his misunderstanding to fuel more idiotic rants
Hey man, you’re attacking something you don’t even understand. Node.JS wasn’t designed explicitly for building a web site. It takes Google V8, stirs in some C-extensions, and presto, you have a Swiss-army network utility. Sure, you can make web sites in it, and good ones, too, but you have to realize that wasn’t the explicit design idea. So it doesn’t come with a lot of that sugar in the box–you sprinkle it on there later.
The HTTP module can serve as either a web client or a web server. You could probably implement a web site around this module, but you probably wouldn’t want to. It would be tricky to figure out how to route requests effectively this way. If you are ever presented with a case of web sites being developed in Node.JS, I would encourage you to meet Connect and Express.
http://www.senchalabs.org/connect/
http://expressjs.com/
You can very effectively produce a small web site in Express, but do to the way you usually write Express MVC-controllers in a single file, I wouldn’t recommend using it for a very large-scale site. If you plan to do a large site with complex routing in Node.JS, try Locomotive.
http://locomotivejs.org/
I also recommend running the Node.JS web server on a port other than 80 and then using iptables to forward the request from port 80 to the actual Node.JS port. This eliminates much of the issue with trying to configure security policies to allow a user to listen on port 80.
One of the fun things about Node.JS is that in certain cases you can run the same scripts on both the server and the client. There is a DOM package that mimics the web browser behavior on the server so that entire scripts intended for a web browser can render a web page before it ever goes out over the wire.
ASP.NET can’t do that, sorry. In fact, much of the work involved in many of these “server-side” languages is that they have to always translate things back and forth. Web browsers run Javascript, so it is more natural to run Javascript on the server, too. Both the browser and Node.JS can use JSON with no effort at all.
I’m totally impressed with Node.JS, and I’ve recently become fanatical about it! I was never big on Rails, and PHP has always been a friend to me. I hate VB, and I’m no big fan of C, and I do like C#, and I love Node.JS! It’s such a handy thing to have. You can write tiny scripts on the fly, or write little scripts that do big things, and you can just combine things all day long and come up with wonderful mashups of code.
I encourage to mess around with it a little more. Get a feel for it before you go blasting it. There is a lot to be gained from using Node.JS. I have a feeling it isn’t going anywhere anytime soon.
By definition, nothing I write on my own blog is trolling. I would be trolling if I went to the node.js discussion groups and started calling them a bunch of losers.
Yes, it did take me a day to get LAMP set up. I’d never done it before. There were a lot of other little security things I set up. (Disable root via ssh, disable default mysql root account, disable default WP admin account, etc.) I still do some tweaking from time to time. If I was a full-time admin, I probably could do it much quicker.
Also, “You did not convince me I’m wrong.” is not the same as “I’m not openminded.” I did some brief research on node.js, and concluded that it was a POS hype-over-substance like Rails. I’m very good at telling the difference between people who know what they’re doing, and people who chase hype. At that interview, they were clueless and chasing hype. If they are typical of node.js users, then most of them are doing it wrong. It certainly is likely they were using node.js wrong.
I still say that node.js is unsuitable for anything more complicated than a small service. If all you’re writing is a simple service, you can use any language. And if performance is all you care about, it only takes a little longer to use C with non-blocking calls.
Even if node.js is lousy, it certainly is possible that it could be popular and widely used. If you have a lousy language and throw enough labor at it, you might even get something that sort of works.
I mentioned this counter-example already, and I’ll cite it again. That guy showed me his code. He had “self = this” at the top of every function, to preserve “this” for the callback. When I saw that, my reaction was “This is wrong.”
Wow, what can I say that wasn’t said so succinctly by others on this thread…
If you thought the node.js documentation was “unreadable garbabe” it means you didn’t understand it. Otherwise it would have just been “garbage” and you’d have more than just wantonly unfactual statements to use as criticisms.
Node.js != VB6, ASP.NET != VB, ASP.NET != PHP, and C is not slightly more time consuming than node.js. Statements like that are how programmers can tell the difference between people who know how to program and those who look at syntax.
The only thing you’ve managed to concretely point out is that you couldn’t write a complex application in node.js because you don’t understand it. Other people work on massively complex applications in node.js on a daily basis, including myself without any problems of complexity.
So, one guy’s less than stellar programming practice means JavaScript is wrong? First, “this” refers to the calling scope not the object. Second, “var self = this;” is only necessary if you need to maintain a reference to a parent scope from within a closure and JavaScript is not the only language that offers this construct. But this has nothing to do with node.js and everything to do with lexical scoping.
Have you ever written a web app? Worked with dom events? Used jQuery? they all require/use callbacks for a variety of tasks, and they’re all pretty succinct ways of doing event driven functionality. Maybe the lead to a mess when you write them…
Wow, the ignorance is making me light-headed. First there’s a global exception handler to prevent the server from crashing (look for uncaughtException in the docs, it clearly explains the purpose.) Second, only the process crashes, not the entire server, and only if you don’t use any of the existing utilities to restart the processes on error. And finally, your ASP.NET application will crash in the same spectacular way when it hits a runtime error, so how exactly is this a problem with node.js?
node.js is a fully functioning stack of its own accord. No other libraries are necessary for proper behavior, only node.js. And anything you can say about node.js requires X for blah, can also be said about LAMP stacks.
Is this because you tried to write complex business logic in node.js and stumbled through it? I believe you said you lightly reviewed it one day before a job interview. Complex business logic is written on the client side in JavaScript for a number of applications that run on LAMP stacks like GMail. So what about node.js makes this impossible that is otherwise possible in a browser?
Just about every point you’ve made has been addressed as invalid here with supporting facts. If you really know that node.js is flawed, you should provide some examples, perhaps some code samples. At the very least some warranted statements.
Fortunately I won’t have to worry about hiring you because you’ll never apply to one of my job applications.
How would you know whether or not setting up nonblocking services in C is easy or not.
There is no way you have any meaningful understanding of C. If you did you wouldn’t post idiocy about how you think Node.js works.
If it takes you more than an hour or two to set up LAMP, you flat-out suck.
You have been ranting for a while now,trying to pretend you are an expert web developer but this is the first time you have set this up.
You are seriously deluded.
So sick of the “I’ll just do it with LAMP stack” or you “MUST” use the LAMP stack. Holy shit that lame piece of turd that is PHP keeps getting propped up as the best thing ever invented. Please open your brain to learning something new. Sick and fucking tired of the company founders who don’t know that LAMP is not the only way to build an application. BTW self = this is a very typical paradigm, to preserve the scope of ‘this’ inside a function. Want to find out more about javascript, just listen to Douglas Crockford on YouTube. PHP has sucked for a very long time. Go read the PHP documentation for some of the absolute worst examples of user contributed code examples to understand why. As to setting up LAMP being hard, when has this ever been hard? Setting up LAMP can be done in your sleep. The reasons NOT to use LAMP become more clear once you stop swimming in the PHP hole.
Exactly what I have been saying for a long time. One of my friends has become obsessed wit node.js and express. Agreed, node.js can be useful as a web socket server. but people are trashing Lampp stack completely for node and mongoDB.
I can understand including a few pieces of code to get a decent chat application, but trashing LAMPP Stack for node? Retarded!
Try doing anything that is even slightly memory extensive with node, and you’ll see how non blocking it actually is. Plus, the obvious drawback is: when something goes wrong, your only thread collapses and you’ve got a few days of down time right there, until you can get it back up. Even a simple memory outage can cause the whole thing to crumble like it never existed. In case of PHP, it will simply destroy the worker thread, and declare so.
Node, on the other hand will go down the minute somebody finds even a slightly innovative way to crash it.
And then the whole non blocking function calls, there’s a reason we accepted serial processing as a standard and that reason was: coherence.
Well in all fairness, LAMPP might have its flaws, but that doesn’t mean we have to keep inventing languages.
And node, really? I can crash a node server in a few minutes. It won’t just not work correctly, it will crash. When was the last time apache crashed when some programmer just forgot to do some validation? node, boom kaboom.
Now, node has its uses alright, but replacing LAMPP stack, really is not one of them.
Its a realtime framework, let’s keep it that way
Notice the two extreme reactions. The people who disagree with “node.js sucks” are very hostile. The people who agree with me seem reasonable.
If you are handling a lot of quick small requests, then node.js may be appropriate. However, you can do non-blocking http calls in C, C#, VB.NET, or ASP.NET.
If you have complicated business logic, using node.js seems wrong.
I’m definitely willing to learn new languages. In the past few years, I’ve learned PHP and VB.NET and ASP.NET After a few hours of research, I concluded that node.js is hype-over-substance just like Rails. Node.js gives off the same “vibe” as Rails.
“FSK doesn’t like node.js. That proves he’s an awful programmer.” sounds a lot like “FSK doesn’t like Rails. That proves he’s an awful programmer.” I know that I’m competent.
How the fuck are you competent when you have shown repeatedly that you do not understand web development.
You are one of those annoying bastards that think they are good while producing shit.
You are so bad, you can’t tell you are bad
This guy also has good arguments against Node,or having the same language on the back and front-end.
You should check it out:
http://blog.ianbicking.org/2011/03/30/js-on-server-and-client-is-not-a-big-deal/
That was interesting. “You can share the same code on client and server!” makes little sense, because the client and server are doing different things.
However, that guy did give an overall favorable review of node.js. I didn’t like node.js, but I only did brief research. Node.js seems best for many quick tasks, but you can do non-blocking socket calls in other languages.
There was another interesting bit in the comments on that thread. It was about nosql. Unless you have *HEAVY* data load, there’s not much benefit to nosql. With nosql, you lose transactions and all the other nice things your rdbms does for you.
1.) Unified language stack > TOBS (Tower of Babel Stack)
2.) I’ve seen PHP code so horrible, each Apache spawn would take up 512MB on production. The language attracts fuck-ups the same way cocaine attracts hookers.
3.) Ngnix is single thread and it can hold its own against Apache very well.
4.) Redis is single thread(ish) and, when properly setup, can give AMQP a run for its money.
Can anyone point me into the direction where a LAMP stack can push notifications down to a client? No? No one? Still need those cornball AJAX keep-alives? *chuckle*
Old guard schmucks. Your procedural brains are archaic.
Your name and E-Mail address (yourMom@myFemaleImpaler.nut – not visible to others) lends a lot of credibility to your comment. That’s typical for people who like node.js.
I am currently looking up node.js vs Apache like servers. However, I am specifically looking for a situation where real-time push notifications are possible (and efficient).
Therefore, currently I am neutral between node.js and Apache. That being said, despite what you say, node.js users seem more reasonable and friendly that the node.js haters.
Yes this particular comment you replied to is a bit aggressive, but no more than some of your comments.
Furthermore, I have trouble reading any of your comments that aren’t covered in insults. You either insult the previous poster (without actually countering ANY of the points they post) or node.js without arguing why (other than the original post).
From JUST your attitude alone, I am currently leaning towards node.js. But remember, I am focusing on the need for real-time push notifications. And you don’t really want to hold open threads on Apache, it’s not designed for that.
Your comment shows lots of ignorance. You normally don’t use *JUST* Apache to write a web service. You use Apache+C or Apache+PHP or Apache+Perl or Apache+Java (or others). (I did find something called axis and an Apache scripting language, which also sort of counts as another language. That wouldn’t be a good idea for something complicated.)
Funny that you ignore the fact that single threaded apps run as well or better than multithreaded one.
You are stuck in web development circa 1997 and have no will or capability to learn modern techniques.
What you said about node.js it’s very interesting. I’m currently learning node.js just because I love javascript. I started with it a couple of weeks ago and I can extract some conclusions.
It’s still a VERY VERY immature environment. It’s true that you can find modules for every thing you can imagine, but there’s no definitive framework to build a serious website. Too many libraries/plugins/modules it’s definitely good but you can easily feel lost because you don’t know which module is the best and the most important, where to find it. The only public module list it’s a wiki page on github; are you kidding me? can’t you publish a decent official repository? (i’m not talking about npm, this is just a download manager). In this sense, node.js has a lot to do. They write a wrapper for the V8 engine with a basic functionality to communicate with the OS layer, and they’re done. NO!
A single-threaded language in the age of multi-core CPUs it’s more a drawback than an improvement. It’s impossibbbbrrruuuuuu to scale well. According to node.js we should stop buying multi-core CPU and continue with the ultra hot single-core CPUs? What a great idea. I’m going to throw away my i5-2500K, just a second… ok, I’m done.
The only benefit I can see to it is to be able to install it as a personal webpage (:D) to show to your buddies and say: “Hey look at my page. It rocks because is written in javascript. It’s cooler than your shitty awkward PHP.”. It can also be used as a replacement for Windows CLI. Thats good.
It’s my first experience with a hyped language. yay!
For me, the only possitive thing that node.js has is the JavaScript language. If it had been written with another language, it’s probable that now after 2 years it would be dead.
Anyway, I’ll continue reinventing the wheel writting the tenth version of the same module. Just for fun and for learning new technologies.
And you’re the psycopath.
Node.js will never be “mature”, because the people who really want a mature language will use something else.
Node.js is not a language. You fail right out of the gate.
What you said is right, we should focus on using real multi-core power instead of trying to reinvent what already exists. It’s like in few years everybody will know how to write code in a cool-buzzed-facebook-money interepreted language but nobody will know anymore how to write code in C/C++. I exaggerate a little but not that much actually
Pingback: Vlad Nevzorov's blog
Node.js puts the emphasis on evented IO. This can optimize the processor usage by preventing threads from waiting around for IO operations to complete. The actual javascript code (or coffee-script, etc.) is executed on a single thread, but that is unlikely to be a bottleneck. Even if it is, the bottleneck, you can spawn more instances.
Just like you, I used to hate JavaScript before, because JaveScript is very slow, and also a lot of JavaScript developers always wrote nasty code, they never know how to manage system resources and computer how to work. With flexibility of JavaScript language, many developers do programming job that’s just like a baby do.
But I really love JavaScript now, since I researched the V8 JavaScript Engine and Node.js. Google got a good job on JavaScript engine and JIT integration, to improve JavaScript performance. Not only V8 become faster, Node.js also has a pretty good mechanism of module, easy to write C/C++ Add-on to extend any functionalities for Node.js application.
So if you are familiar with C/C++, Node.js is the best language for you.
In my opinion, Node.js can do ANYTHING well right now. We can add new APIs with C/C++ to do that JavaScript cannot do, such as multi-threads and system programming.
For web purpose, node.js has different design to process requests. In fact, Non-blocking model was proved that good performance for web service, even better than Thread solution, handling thousands of request is not difficult for Node.js. In order to use multi-processor or multi-core, Node.js has already support API to do fork to spawn more instances.
Most of this article is based on false assumptions and things that are outright not true. Since everyone has google, I’m not going to bother explaining why, but, really this article is fiction.
Dude, the retard and the psychopath is you. Makes me wonder how anyone would hire someone like you. Did you get fired already? I wouldn’t be surprised, if so.
I can’t see a single thing to suggest that the author actually TRIED Node.js. Regardless of the outcome, your method is to paste theory onto theory. You are “Thinking about” something which is easily testable. There is a reason they don’t give degrees in “Computer Philosophy”.
While it does seem like you might’ve dealt with some idiots in the situation you described in your article, I don’t think your conclusion about node.js is very fair.
When I write web applications I usually use PHP. I have a lot of experience with PHP so I can write decent scripts quickly and easily. I’m sure there are valid criticisms of PHP, but many of them (there are too many function aliases! it’s sloppy! etc) are irrelevant to somebody who knows the language.
I recently started working at a new job with a team that’s making use of node.js for some of their web applications. Since I barely even knew what it was before I started, I’ve spent the last few days researching and learning to use node. I was, like you, skeptical of node at first, but closer inspection and further acquaintance has shown that it is actually a nifty piece of software.
For people used to developing in PHP, node might take some time getting used to. It’s been a little frustrating at times. But contrary to what you might’ve said, node is actually very powerful. It has very high performance, rivaled mainly by C/C++ and Java (yes, Java isn’t the slow piece of shit it used to be nowadays). In fact, the company I work for uses it precisely for this reason and also because it allows for rapid development. Better yet, you can actually incorporate C or C++ code into your node scripts, which opens the door to capabilities that might not be attainable using javascript solely. As for your comparison of node to VB6, I can tell you that node is cleaner and more sophisticated than VB6 was. A shitty amateur who could poorly write node-based scripts that work could also write shitty PHP or ASP scripts.
I can only encourage you to avoid assumptions and sweeping generalities. While it is true that staunch proponents of certain technologies can often be ignorant nutjobs, the fact that there are node evangelists doesn’t mean that node itself is bad. Try node out for yourself, should you desire, and rid yourself of these preconceived notions, lest you stoop to the level of the uninformed “psychopaths” you so enthusiastically denounce.
Those specific people were doing it wrong. They described their product to me, and I know I could have built it by myself in a month. It took them more than 4 months, and their website isn’t that great.
I was involved in a Rails disaster. They weren’t using Rails correctly, and Rails was unsuitable for that project, and Rails itself is a POS. I researched node.js, and it reminded me a lot of Rails. There was a lot of hype, but not so much in terms of useful documentation. For example, the php.net website is much easier to use and search, compared to anything I found for Rails or node.js.
As a practical matter, I can refuse all Rails and node.js interviews, and there still will be plenty of other jobs. I briefly researched node.js, and concluded I didn’t like it. Some of the comments here are really hostile, which is interesting. I just wrote a summary of that interview and my conclusions after briefly researching node.js.
Some people are evil. An evil person would say that I’m evil. I’m confident that I’m mostly in tune with the truth now. That’s why Rails and node.js are popular even though they suck. They are attractive to evil people, who evaluate based on hype and not technical merit. That’s also why people are so hostile. If you’re running a scam, you’re very hostile to people who question your scam.
You are delusional.
People who agree with you are PHP amateurs.
“WTF”, you’ve certainly proved you are an ignorant twit, making 9 comments on the same post. I have “comment moderation” enabled.
The extreme amount of hate on this post certainly has convinced me that evil people prefer node.js, and I’m better off sticking to other things.
This video was interesting. The speaker had an annoying voice, but he had some interesting points, and also some mistakes.
On one job interview, I mentioned node.js. The interviewer mentioned a criticism I hadn’t heard before. “Node.js leads to I/O thrashing, when all the callback functions return at the same time.”
I never comment on blogs, this is a first. I cannot believe that you find ASP.NET / MVC enjoyable and quality at best as well! What documentation do you need for node, if you look at the API or *gasp* read a book and have a firm knowledge of real Javascript not using jQuery to do animations than perhaps you would see the strengths. A lot of us work on sites that get over 100,000k concurrent hits, hence the reason we do not use PHP / MySql … Rails is great for what it was meant to do, who cares what the community acts like? Balmer was just appointed as the worst CEO by forbes, what does that say about MS? Should all .NET developers stop using C# because he threw a chair at a Java guy? Your arguments make literally no business sense in any regard. Some of the highest trafficed sites on the web are using Rails, and chug along just fine. And when the time comes to scale, some go with Scala / Clojure / C on the backend, just like your beloved .NET (which other than MS sites, the only ASP.NET site I have even heard of these days still is Match.com that is high in traffic). I think you need to understand long-polling a little better to know that you do not need 100k + concurrents to have that many active sockets, imagine if you have 20k users per every 10 minutes, but they keep an active tab open, are on a mobile device, etc… What do you think is pushing those updates to the user? It sure as hell isn’t PHP with Ajax calls, its a custom library (or Backbone / Ember) bound to an event that is listening to a callback from some kind of ASYNC programming methodology … Node / EventMachine / Twisted … Go do some research before you spew shit.