Saturday, May 21, 2011

I'm too old for node.js; maybe

I got up today excited to do a bit of hacking since my desk is now cleaned and workspace is optimized for getting into flow. It took longer than expected to get to a steady state due to the new job, the move, the wife breaking her ankle, and exploring the awesome city of Seattle.

I started sketching out what I wanted to do today, and it required good S3, SQS, and EC2 libraries. And, I wanted to do it in node.js. The thing I wanted to build, well, I can't talk about it. But it is super cool.

The library support I wanted from node.js wasn't what I needed, and so there I was with a decision. Should I

(a) roll up my sleeves and do the whole github thing and get shit fixed
(b) say "fuck all" to the community and write a better more awesome library set
(c) mock up with a silly prototype
(d) scrap the thing and give up

The answer is C, I was done in ten minutes with the prototype. The idea makes me happy, and I can go back to bed where my wife which would ultimately be a better move than dicking around with code on a Saturday morning (boobs > code, deal with it). Should I decide to commit to the project more this weekend, then I'll probably do it in Java. Why? Because Java has rhino which is good enough for what I need. And, eventually, if my idea pans out, I may just throw away rhino and use antlr to do the serious business of writing what I ultimately need (because me + antlr = magic).

Answer B is what I would have done before I did start-up #2 (the one that made money), and this tends to be the reason why there are so many half-baked things in the Open Source community. In fact, there is a phase when you are young and you are compelled to create things. You have to prove it to yourself. Until you prove it to yourself, you tend to make the worst code ever (and also, most potentially, the most innovative code). The proof that I could create was when my first "product" was sold for $60k. All my code before the start-up was shit even the first "product", and while I feel bad for selling shit. Most shit that is sold is, well, kinda shitty to someone (That's why you need marketing, to find people that don't think your shit is shit). All my code during start-up #2 is meh. All my code now, well, it's production-worthy.

Answer A is what I would do if I was an active technology co-founder. Most old-school business guys don't understand open source. I'll write a blog post up on that one day. For now, just consider that this is a very good option provided the community lasts for long. That's the open source gambit. I think node.js is a young man's game. It's awesome and full of potential, but it will require a lot of work and reinventing many wheels to get to production worthy-ness. The libraries need to stabilize further before I can build on them (standing on the should of giants?) and do my research with them, and I'm not really willing to commit large portions of my time rewriting/fixing libraries that already exist in other languages. So far, beyond really awesome IO, node.js isn't that sexy for research.

Answer D is not really an option for me since I'm obsessed about seeing and feeling my ideas work and studying consequences. Until I get some half-baked crappy solution out the door, I can't be rational about and see it for the steaming pile of shit that it may (or the revolution of awesomeness that it could be). Until I test, taste it, and see it, I don't know. This is a fault about me. I also like to tell people about my steaming piles of shitty-code.

So, where do I stand on node.js? Node.js is awesome, and if I was a start-up CTO again, then I would be using it hard-core. Why? It is virgin territory and building with, promoting, and helping the community will build up your technology brand. Node.js helps a start-up more than established companies on two fronts: PageRank effort + recruiting. Google's PageRank is life-blood for many companies, and not having it can be bad and expensive. A link from the technology community is worth the weight of a fat baby in gold. Recruiting young-eager programmers is a key part of any companies strategy for growing and being successful. Building on node.js makes your company super sexy to young-eager programmers. For start-ups, this helps them rationalize a hit to their fair market value since they get to have sex with node.js on a daily basis (happiness is strange like that).

Now, I'm an old man with big and or important questions. And, while I find node.js to be that sexy chick at the programming bar, I find myself married to big and important questions which require mature and establish languages and platforms. So, when I fuck up, I know its me and not everything else (unless I've stumbled on a bug which should be rare, but more importantly easily observable in a mature platform). These are fundamentally more important than squeezing a bit more compute/io utilization out of a machine since I'm tackling problems that need to depend on a lot of production-worthy code.

Until you youngsters get your shit straight and make node.js mature, I don't have the time to fuck with it. So, I'm jumping back in the C# and Java camps with static typing and mature sexy code, and when I need awesome IO, I'll use erlang because erlang is awesome.

No comments:

Post a Comment