Our Technology Stack
To fully explain our technology choices is more or less impossible. For one thing, they're constantly evolving with the technology itself. For another, this is a blog, not Principia Mathematica — we want to inform, not stupefy.Put another way, we're going more for Leibniz than Newton. That said, we're going to try explaining ourselves anyway.
First, let's consider what our stack looks like. As of this writing, we use CoffeeScript as our main programming language. On our servers, we're typically running Node. For storage, we use ElasticSearch.Crazy, right? Not really. Remember, premature optimization is the root of all evil. More on this in another post. We use Redis for messaging and configuration management. We use Amazon for cloud computing.We're also experimenting with Joyent. They're doing some pretty interesting things. And I suppose those are the big things.
An Existential Crisis
As it happens, part of the appeal of Node, at least for us, was CoffeeScript. I'm not sure we would be using Node if it weren't for CoffeeScript.I consequently find the general disdain for CoffeeScript amongst many Node fanboys mildly amusing. So … what is it about CoffeeScript that we find so appealing?
Part of the answer to that is, of course, Node. Lest we go in endless circles, I'll summarize and then we can move onto other reasons. CoffeeScript allows us to develop in one language across both the client (the browser) and the server (Node). We can easily reuse code, which is particularly useful for presentation-related code. We can do single-page apps or generate HTML pages on the server — and use the same code for both.
The Importance Of Being Expressive
And, Also, We Really Like Arrows
Next time around, I'll talk a bit about why we like Node. We get a lot of questions about this. The answers may surprise you.