Getting out of your comfort zone with Node.js

This post has been automatically generated. I use this blog to collect links that I have bookmarked. All activity is automated.

A story of getting out of the comfort zone with Node.js

After weeks of long talks and digging about mobile analytics it was finally that time of every project to choose the platform, the technology to build what we have been dreaming about all this time.

Having used PHP for all my previous web based projects, I have my own comfort zone just like all of you. I have my WAMP server that I won’t easily give up, I have a huge/handy collection of code snippets, I have all the experience about numerous frameworks like CakePHP, Smarty, CodeIgniter etc. But things were different with Countly. We were about to build a realtime, pretty complex and open source platform. I could easily visualize the codebase getting out of control, the performance problems along the way and the entire realtime struggle we would face if we choose PHP. It was time for a change…

So we decided to build Countly on Node.js and lived happily ever after, I wish we did that 🙂 We started with Tornado so Python was the new deal. A whole new world with all the non-blocking confusion for a new-comer. I started with the API and things were going pretty smooth. Built the first prototype (pretty similar to our current API) and we were all amazed with the test results from Apache JMeter. It was faster than we had ever imagined even on a pretty simple server. Till that day documentation was enough to build things but how was the Tornado community like? That was the big question I needed to ask way earlier than building a working API. Tornado did not have a growing community, actually any community I could find of… I believe Facebook’s open sourcing the project gave it a strong pace in the beginning but later on people just stopped using Tornado, stopped developing modules, plugins etc. It was not the right time to reinvent the wheel (I love to do so most of the time) since building a complete analytics platform is probably one of the most complex things you can ever do on the web. So I needed to give up another slowly forming comfort zone of mine… For a good cause though.

That’s the time we met Node.js. Although I knew it for a while, I just had this prejudice about writing server side code with JavaScript. Don’t get me wrong, I love JavaScript and I have been hacking around with it more than I did with any other language. After getting my lesson from Tornado, this time I did the research. I checked out the community, explored a ton of repos on Github, checked Stackoverflow for Node related stuff and I must say, I was more than satisfied with what I saw. There were a lot of cool and exciting projects on Github, all actively developed (which makes you wanna fork them all :)), questions on Stackoverflow were always getting attention & answers, Node itself had a pretty good documentation and module architecture (God bless NPM) so I started all over. I was able to migrate the Tornado API in a short time. We once again saw the fascinating performance results from JMeter and I was very glad that we finally found the ONE for Countly. Everything started to fall into place one by one and after about 4 months of active development we were finally ready for the day to share our precious with the world. I can easily say that up to day I did not have any hardship developing on Node and I’m pretty pissed off with myself not trying Node earlier.

What’s the bottom line of this story? Never ever be afraid of getting out of your comfort zone. You will be amazed with the opportunities new platforms and technologies have in store for you. Come join us today and let’s build an amazing analytics platform for example 🙂

— Onur

  1. andrewmunsell liked this

via Hacker News

Leave a comment

Filed under Auto

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s