Well the week was last week, and while it was not as successful as I would have liked, it was a very productive week.
http://en.wikipedia.org/wiki/Eating_your_own_dog_food. The week was very valuable to me in that I discovered several bugs in the node-perfectapi package. I also discovered some new features that would be helpful, so that was great because it will help me make the product better.
My design had a couple of flaws. That’s not so bad really – in my experience at least, a design seldom survives coding without some changes. Luckily they were not major flaws – I needed one more component to better manage the load on user-facing endpoints, and I needed to add something to support configuration of the deployed services.
Although the pieces are all working together, it is not yet a usable solution. For one thing, there is only a publish function, no way to update or remove packages. For another, you really need to be able to configure services for them to work.
Learning new things
This was one of the major gains for me – I learned all about Redis. It was not pretty. The node-redis module I used works really great, but it is at a very low level. Coding against Redis feels a but like coding in assembly language. Concatenating strings to form keys feels wrong, as does the process of having to create my own indexes, and do my own serializing and deserializing of objects. There is definitely a market for modules that take the Redis experience and add a layer of abstraction in order to lower the workload.
I also discovered the async module. Without it, coding against Redis in Node.js is next to impossible. Really, it is ridiculously hard. Painful like hard exercise (but without the health benefits).
Another discovery was testing with mocha and should. This was also a little frustrating at times, because one page (albeit a long page) of mocha documentation really does not cut it. However once I got the hang of it, it was nice to have some tests running.
I’ve invested enough in this that I think I will continue to improve it until it is usable for my purposes. Not in one week though
I’m also working on creating an AMI image for Nodester. While I rejected Nodester for my own purposes (it does not have the features I wanted), I still would like to contribute a little to that project.