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.

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.