Meet the people who make Node.js: Colin Ihrig

Vladimir de Turckheim
Node.js Collection
Published in
8 min readMar 20, 2017

Colin Ihrig is probably one of the key member of the Node.js community. He is a member of the TSC, the CTC and a collaborator to libuv.

You can follow him on Twitter and Github to follow the current and future state of Node.js (and much more).

I have the chance to know him through the hapi.js community and he kindly accepted to answer my questions.

Hello Colin, can you introduce yourself?

Hi Vladimir! Sure thing. My name is Colin Ihrig. I’m a member of the Node Core Technical Committee (CTC) and Technical Steering Committee (TSC). I’m also a libuv collaborator and hapi.js core team member. My current day job is to work on Node core, pretty much full time, at nearForm. I also do some personal open source work and side projects at Continuation Labs.

Do you have any hobbies?

I like traveling and seeing new things. When I was younger and less busy, I enjoyed martial arts and skydiving. I’d say programming has also been a long time hobby, even if it is technically my job. I remember teaching myself HTML and JavaScript as a teenager.

What is your educational background? How did you become a developer?

I have a Bachelor’s degree and Master’s degree, both in Computer Engineering, from the University of Pittsburgh. In grad school, I was doing research on design automation tools and FPGAs. I always preferred doing “web stuff” more though.

As an undergrad, I had a chance to co-op at a company that was doing all of their automated regression testing using HTML applications. The server was even written in JavaScript. It was years before Node existed, though. We were using ASP Classic. I got hooked, and knew that’s what I wanted to do full time.

My tuition was paid in grad school by writing and maintaining some Java Server Pages for the Associate Dean of the School of Engineering. I was also lucky enough to get a graduate internship at Intel. I did some more backend JavaScript development there. Node existed by then, but I was still figuring it out, so I went the ASP Classic route again :-)

What is your professional background?

After school, I worked for a local company where I was basically a professional web scraper. The work was awful, but I was learning a lot about Node. Up until that point, I had been using Node only for personal projects. In the evenings I was writing and editing JavaScript articles for SitePoint. I decided to write a book, which ended up being Pro Node.js for Developers.

After the book was done, I was still unhappy at my job, and caught wind of Walmart’s Node Black Friday tweets. I started following Eran Hammer, and saw that they were hiring. I decided to apply, since I really had nothing to lose. I ended up getting the job, and spent the next ~1.5 years at Walmart. I was really excited because Walmart was really relevant in the Node community at the time. I got to work with, and learn from, some really good developers there.

While I was at Walmart, I decided to start digging into the core codebase. My first PR into core was actually to fix a discrepancy in the fs module that I found while doing research for my book. After I had been contributing to core for a while, Eran noticed and asked if I was interested in working on core during business hours. Of course I said yes. Unfortunately, things started to change at Walmart, and a lot of the prominent Node people left the company. Eventually, I got picked up by nearForm, which is where I currently work. Between Walmart, nearForm, and Node core, I’ve been really lucky to work with many of the top Node developers in the world.

When and how did you start using Node.js?

I found out about Node in 2011, while I was at Intel and searching for a more modern approach to server side JavaScript. I started using it personally at that point, but didn’t become a full time professional until 2012. I haven’t looked back since.

Can you tell us about your personal/side projects?

I have a handful of modules on GitHub and npm. Unfortunately, none of them have made me rich or famous. I wrote and maintain the ESLint setup used across the hapijs organization. Outside of that, some of my personal favorites are:

hapi-gateway — Automatically deploys hapi route handlers to AWS Lambda. You can also opt to run them locally. When your hapi server shuts down, it can tear the lambdas down for you too. I wrote this mostly to get around using AWS API Gateway.

credit-card — A credit card number validator. I recently found out that zeit’s now was using this, which kind of blew my mind.

toolbag — This uses Node’s preloading feature to augment your application and runtime, without changing your actual code. For example, you can do things like blacklist modules, remotely control a process, or simply report runtime data, all without modifying your source code.

lambundaler — A bundling tool for AWS Lambda. It helps you do things like write and test lambda functions locally which depend on native modules, but then deploy the correct binaries to AWS. I use this to deploy the bcrypt native module in my dragonzord and tigerzord modules.

Why did you join the TSC?

The short answer is, because I was invited and I felt honored that core developers much smarter than me thought I could help.

The CTC focuses more on the core project and its technical aspects, while the TSC is more about process and administrivia within the Node Foundation.

The longer answer is that back when io.js was a thing, I was invited to join the Technical Committee (TC). Simultaneously, I was one of the handful of people still working on joyent/node. Eventually, they merged back together. If I recall correctly, the TC became the TSC, which then became the CTC, which then splintered into today’s CTC and TSC. The CTC focuses more on the core project and its technical aspects, while the TSC is more about process and administrivia within the Node Foundation.

What are your achievements within the Node.js community that you are most proud of?

I’m most proud of getting invited to the CTC. Like I said earlier, I felt honored, and took it very seriously. I had similar feelings about being invited to be a libuv collaborator. I really like C, but wouldn’t necessarily classify myself as a C developer, so getting that invite was really cool.

(http://docs.libuv.org/en/v1.x/)

I’m not sure if this counts, but I’m also proud of getting hired at Walmart when I did. I was just some developer from Pittsburgh with no standing in the Node community, but somehow got to join the #nodebf team that was building hapi.

What are the future challenges (technical or community related) you see in the future of Node.js?

I think the large majority of Node’s challenges, whether technical or community related, are about scale. I don’t mean scaling an application. I mean scaling with the size of the userbase, which is bigger than anyone probably ever anticipated. From a community standpoint, how do we make Node approachable to so many experience levels, cultures, and personal backgrounds? For example, right now there is a discussion going on about having an official Slack or IRC channel. With so many conflicting points of view, how do you make a decision?

From a technical standpoint, something as simple as changing an error message has become a semver major (breaking) change. There are so many users and modules out there, that even changing an error message can potentially break a lot of code. You have to also consider the fact that dependency trees can be very large, and propagating fixes from deeply nested dependencies can be challenging.

There are also many philosophies about what Node should be. Should it be the bare minimum surface area possible, and defer everything else to userland (npm modules)? Should it be a kitchen sink of features? Should Node core continue to evolve, or should it only update V8 as needed? Should Node support VMs other than V8? These are all real questions that need to be balanced from a technical perspective. If you follow the Node issue tracker or the right people on Twitter, then you know that we’re still trying to figure all of these things out.

What do you think the Node.js ecosystem will look like in 5 years from now?

Node is present in so many spaces like IoT, serverless, and front end toolchains. Additionally, some companies are only beginning to move to Node.

That’s a tough one. Tech changes so fast. It’s possible that no one will use Node in five years. Realistically, I think Node will continue to grow. I’m not sure if it will continue 100% growth each year, but I certainly wouldn’t be surprised. Node is present in so many spaces like IoT, serverless, and front end toolchains. Additionally, some companies are only beginning to move to Node. Then there is the npm registry. Have you seen modulecounts.com? Granted, a lot of modules on npm are not production ready, but it’s still an awful lot of code. With the Node Foundation in place, upcoming initiatives like the Node certification program, and a growing ecosystem, I think it’s very safe to make a five year bet on Node.

Any final thoughts?

First of all, thanks Vladimir for reaching out to interview me!

Second of all, remember to never block the event loop.

For my final thought, I’m going to plug Node’s test coverage. If you’re interested in contributing to Node, but don’t know where to start, head over to https://coverage.nodejs.org/. You can see where Node core is missing code coverage. Write a test to add some missing coverage, and open a PR. I’d love to see more of those PRs. We’re currently around 90–91%, but I know we can do better!

Thanks a lot to Colin for answering my questions!

Remember you to follow Colin on Twitter and Github.

If you liked this interview, please Recommend it and share it. It will encourage me to interview the other people who make Node.js.

--

--

Vladimir de Turckheim
Node.js Collection

JS enthusiast, software engineer, world traveler. AppSec and QA!