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 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.)