Nodejitsu

Save time managing and deploying your node.js app. Code faster with jitsu and npm

Working at Nodejitsu

About the author

Name
Location
Worldwide
nodejitsu nodejitsu

Hey, I am Nico Reed and I work as an intern at nodejitsu. I am majoring in math with a minor in computer science at BYU. I have been hacking on several of nodejitsu's projects in the last two months and here are some of the things I have done:

Right off the bat on the very first day, I got assigned to modifying the blog code. If you go to the blog homepage and look at the very awesome RSS feed button on the right, that was my very first thing I did for nodejitsu. It took a few hours to do the very simple two line change, but in the process I learned Wheat, Haml and more about Github and I got the change pushed to production the very same day!


Later, I was set on bug fixing duty for haibu. Haibu can be described as the "node.js application server" at nodejitsu. Haibu's job is to spawn up the applications, make sure that they stay up, and clean up after the applications terminate. We run thousands of Haibu servers and communicate with them through simple RESTful requests. There was a bug related to an unclean exit where Haibu would get killed, but the children would never get cleaned up. Charlie gave me a few pointers on the relevant files and the general structure of the code and then left the rest up to me. This is where I learned about better structuring node.js programs. I came from a fairly dominate background of php as well as being a young self-taught programmer, so I was used to a very adhoc organization technique, so aside from fixing an important production issue, I also got to see and work on properly structured code.

At nodejitsu, through the database api, users are able to provision various no-sql databases from places like RedisToGo, CouchIris, and MongoHQ. Originally there were three code bases to provision a database from each of these services. However, my task was to integrate these three code bases together into one library that abstracted away the different libraries. After the refactor, I implemented the library in the core stack, so it could be accessible through the api interface. This allowed me to allow jitsu to interface with these providers to easily provision and deprovision databases. In case you have not heard of it, Jitsu is the command line tool to manage your apps on the nodejitsu cloud. It also has well written code that uses several tricks ( and CLI libraries like: prompt, cliff, nconf, colors, optimist ) to make writing new commands super easy. These changes are currently in the pipeline, so sometime soon, you will see the database service exposed to you and hopefully it will be fully functional!

Another large task I've been working on is integrating the MailChimp api into the entire nodejitsu stack and API. During my first week, I got assigned to working with the MailChimp API to provide methods for users to do basic subscribing and unsubscribing of emails. Later, I got assigned to integrating the api I had just created into develop.nodejitsu.com. This was quite a bit of work which involved managing the MailChimp keys, learning the client-side code which used Porter and SugarSkull, and getting all the errors to propagate correctly to the user. This project will have a few more tricks up its sleeve, but already, you can see the fully functional implementation at develop.nodejitsu.com under the addons tabs.

More recently, I got placed in charge of managing the open-source project cliff. The primary enhancement I made was to the documentation. I gave many examples of how to use each of the functions and showed you the output in full color detail. I also changed how the length of a string was being calculated, so now you can use the console escape codes to color your output and the padding will be correctly calculated. Go ahead and check it out: cliff

Aside from all these projects, I've also been working with a few people at nodejitsu on a new community geared project which has not yet been released. There has been quite a bit of effort put into it and hopefully this new project will be really helpful to the node community!