Skip to main content

Node, Heroku and the joy of coding


Over the winter break I was working on one of the little projects that I use to try out cutting edge technologies.  This time I really wanted to get my deeper with Node.js, Express, Request and Heroku.

I have an old website, www.nationalvip.com,  that was basically a shopping cart for nightclub reservations. My interest in nightclubs waned and I really didn’t pay much attention to it for a while. The site still got visitors but it was developed in PHP by extending Magento.  Old code base and complicated modules killed any desire to touch that code.  I decided that I am going to change the direction of the service and make it totally informational based on open web services that are available from FourSquare, Twitter and other social services.

I am not going to spend any time talking about how to create an app using Express, Node.js and Heroku.  There are plenty of blog posts that help you get started with those technologies. I will spend some time talking about the difference in how developing and modifying a project feels.

My background is mostly with C#, Java and C++. Given my “baggage” I found the following differences in development flow pretty remarkable:

#1 Calling REST API without wrappers
Node.js and Request library make calling REST services ridiculously easy.  I generally use an API Explorers like the one from FourSquare, Mashery and DocuSign and see what elements of the request or return I need to reference. There is no need to generate proxies and maintain them.  You can visually see and get exactly what you need.

#2 Deploying using Git
Git deployment to Heroku is a game changer.  In Java days I used to sweat how I am going to FTP to my servers, remember where on a particular linux distro I need to deposit my ROOT.war and then SSH into it to bounce the tomcat.  Now pushes are seamless.  All I need to do is git push heroku master.

#3 Ability to reuse open source CSS and JavaScript using EJS.
When creating my app the default was Jade, but I really wanted to be able to reuse CSS and Javascript so I went with EJS.  JavaScript libraries, JQuery templates and other components are all over the internet.  With Jade I would have to rewrite a lot of these examples, but with EJS I was able to implement a lot of elements by just copying and pasting.

In conclusion the ability to produce and maintain an app with these new technologies is not only fast but also very pleasant.  Less time is spent configuring, updating, debugging and translating.  More time is spent creating, experimenting, measuring and having fun.

Post a Comment

Popular posts from this blog

Lessons from my 9 Year Journey with DocuSign

After over 9 years at DocuSign I am taking on a new challenge.  It’s been phenomenal seeing the
company grow from from 25 to 2000 employees.  DocuSign has changed the way the people do business and I am proud of it.  The next chapter is going to be heading up software development at Tempo Automation - a 25 person startup that is changing the way people produce electronics.  While I am extremely excited about the future, this is a good time to reflect on my journey and share the things that contributed to the success and things that I will do differently next time around.
1: Focus on the Customer One of the key things that contributed to the success of DocuSign and my personal career is relentless focus on the customer success.  From the very beginning our CTO has taken meetings, listened and prioritized requests and feedback coming from customers.  People who could not be bothered by customer requests didn’t last long.  As a result over time our engineering team retained and reward…

Highly Effective Software Teams

A few weeks ago our Board of Directors asked me to present my assessment of the state of software.
 I was hired to organize and grow the software team and the directors wanted to know what kind of a team we needed to build.  I was hoping that I can just reference an article somewhere that would give me the answer, unfortunately I didn’t find anything suitable. During my research I did find some great material that will be helpful if your job is to put together a highly effective software team.
A highly effective software team has the following key characteristics: dependable, committed to shared goals, passionate about technology, respectful and compassionate.  These are not limited to technology industry, it can easily apply to finance, medicine, or sports as well.  Below is the summary and references that I found. Dependable If you are creating a software product, you need to deliver your software to your users.  Your users need to know that you are able to solve their problems on …

SDET / QA Engineer Interview Checklist

After interviewing and hiring hundreds of engineers over the past 12+  years I have come up with a few checklists.  I wanted to share one of those with you so you could conduct comprehensive interviews of QA Engineers for your team.

I use this checklist when I review incoming resumes and during the interview.  It keeps me from missing areas that ensure a good team and technology fit.  I hope you make good use of them.  If you think there are good questions or topics that I have missed - get in touch with me!


SDE/T or QA Engineer interview checklist from Mike Borozdin
If you like this checklist you might want to check out these posts:
Emotional Intelligence in Software Teams  and Good-bye manual tester, hello crowdsourcing!