Coffeescript, VowsJS, & Asynchronous Testing

Before releasing my coffeescript RRD library, I needed to write some tests around it (RDT: Release-Driven Testing). I went with Vows (in coffeescript), and I had no problems writing tests around the few synchronous (gasp) functions, but the asynchronous parts just didn’t work. At first, I punted on it, and switched my vows from coffeescript to javascript (which all the docs/examples are in). Later, when I came back to it, I was able to figure out the problem, and a dirty hack to get around it. Continue reading Coffeescript, VowsJS, & Asynchronous Testing

Fork & Extend vs. Build Your Own, a NodeJS Example

For Hot or Not, I wanted to leverage as much existing code (open-source libraries) as possible, so I could focus on the more interesting application logic. I found a library to work with the database (RRD), but there were a few things about it that didn’t fit my needs, so I ended up releasing a new library. What follows are the reasons I decided to build my own solution, and the downsides to that course of action. Continue reading Fork & Extend vs. Build Your Own, a NodeJS Example

Beyond NoSQL: Using RRD to store temporal data

Recently, I’ve worked on two projects (Power Hungry, Hot or Not) which (among other things) collect write-once data over time, and graph the results. The projects collect very different data, but this task was painful enough in postgres that I ended up switching to a temporal database for the second go, and it made the data collection & querying much easier. What follows is a brief discussion of the problems I faced with postgres, and how moving to RRD solved them. Continue reading Beyond NoSQL: Using RRD to store temporal data