Matteo Collina & David Clements: Companies Should Enable Their Devs to Contribute Back to Open Source

We interviewed Matteo Collina and David Mark Clements, Node.js Performance Specialists working for NearForm and holding a full-day workshop “From zero to a REST API with Node.js” at Amsterdam JSNation on June 6

Matteo Collina and David Mark Clements have plenty in common: both started programming since they were little kids, both have written and co-authored books on Node.js, worked together on multiple open-source projects, and share similar views on the future of Node.js and open source. In this interview, they talk about their careers, favorite OSS projects, upcoming books, and current projects they are working on. Matteo and David are coming to Amsterdam to hold a workshop on Node.js at JSNation Conference, June 6, 2019.

Hello Matteo & David, and welcome to the interview with JS Nation! Can you share your story? Tell us about yourselves.

Matteo: The world of software development has always been part of my life since I was a kid: my dad was typing C64 from magazines, and I was sitting on his lap. Somehow, my brain learned programming as its own language. I “see” code, I don’t think about it.

David: Similar to Matteo, coding was part of my formative years. I wrote my first line of code at the age of five and was fluent in BASIC by the time I was 9 years old. I used to get up early on a Saturday morning and go to boot fairs (yard sales) to find old Ataris, Commodore 64s, and programming books.

Why do you call yourself software engineers rather than developers?

David: In practice, there is no meaningful distinction. The only thing I’m interested in is whether you can solve problems without creating more problems than you solved.

Matteo: I do not think there is a big difference between the roles. I think the title Software Architect is more descriptive: somebody that can reason at a system level and see the impacts of decisions down the line. Moreover, Architecture has an art/design angle, which is also very important on software.

Matteo, your Ph.D. thesis was “Application Platforms for the Internet of Things: Theory, Architecture, Protocols, DataFormats, and Privacy.” How did you become interested in IoT?

Matteo: I’ve always been interested in distributed systems, and the IoT posed some new challenges due to the real-world limitation of battery life, network speed, cost of devices. I’ve been the one of the first to theorize a multi-protocol IoT platform, and now all cloud platforms ship it.

You both have worked with a wide range of technologies over the years. But what are your favorites and why?

Matteo: Ruby is the best language of all. Unfortunately, the features that make it so are/were extremely underperforming. I typically use Node.js and C/C++.

David: While I have a soft spot for Pascal, I discovered JavaScript in 1995, and I’ve loved it ever since.

David at React Amsterdam

Matteo, you’ve recently been promoted to the position of a Technical Director at NearForm. Can you briefly share your career progression?

Matteo: I worked for one year at an Italian software dev company. I was not satisfied with my job, and my career projections and compensation: I needed more interesting challenges. I also wanted to have an impact in the Open Source community and share my ideas through conference talks: I felt I had something to say to make our lives as devs less miserable.

After I failed several interviews, I ended up enrolling in a Ph.D. school as a way to get out of the Italian job market. I picked Node.js as my tech stack to have a fast development cycle compared to Java or .NET. I couldn’t use Ruby, as it was too slow for my needs.

In my endeavors in the Node.js world, I got to join the Level community and I learned how an OSS community grows and succeeds long-term. I popularized the MQTT.js library (used by all cloud providers in their SDK) at NodeConfEU 2013, and I met Cian O’Maidin and Richard Rodger (NearForm founders) and they convinced me to join NearForm at the end of Jan 2014.

At NearForm I worked in all possible roles, as there was only 14 of us at the time (now it's about 140 people). I started as a Software Developer and then Software Architect. I worked on projects across the globe, from New York to Jakarta. I’m also one of the key public figures of NearForm. I’ve been on the Node.js Technical Steering committee since July 2017. I’ve also been elected a voting member of the OpenJS Foundation Cross Project Council.

After two years, I realized I had achieved most of the goals I set myself on my first job: I was working remotely and people all over the globe are using the software I built. I asked myself how I could create 10 times more impact, I’d have to focus on another thing that I loved: enabling other developers to succeed. In my new role as a Technical Director, I would be able to support several teams at once to deliver amazing things.

David, so far you’ve published 3 editions of “Node Cookbook”, Matteo, you co-authored “Javascript: Best Practices.” Any other books coming?

David: Node keeps moving forward, the introduction of ES6 Modules into Node 12 (coming October) will demand the 4th edition. I should probably contact my publisher soon. Other than that, a friend and ex-colleague are writing a book about AI, which I’m badgering him to let me write a guest chapter for!

Matteo: I also co-authored Node Cookbook: Third Edition, edited by Packt. I do not have any new writing endeavors planned, but I’m actually thinking about it.

What were the recent projects you participated in? What are you currently working on?

David: My most recent technical leadership project was bootstrapping a developer team as part of a digital transformation initiative for a ticketing platform. It’s always thrilling to exceed expectations by accelerating development to a pace the client hasn’t experienced before.

I’m heavily involved in creating a new Node.js Certification in partnership with the Linux Foundation — protip, if you read Node Cookbook 3rd edition you’ll be well prepared for the Exam. We should be launching later this year.

In OSS, my latest project is ESX. Through a variety of consultancy engagements, it became painfully apparent that React SSR rendering is a bottleneck for many companies. ESX is a complimentary drop-in module that significantly reduces the overhead of SSR by improving the actual rendering algorithm. I’m also co-author of Pino with Matteo, the fastest JSON logger for Node.js.

Matteo: Recently I’ve been working with Protocol Labs to design a new developer tool: it has been amazing working with some designers as well as protocol engineers. I’m planning to do some more work on Node.js, as there are some key areas that I want to improve before Node 12 goes LTS.

What’s the future of Node.js? Do you think any other environment will ever make it obsolete?

Matteo: Definitely! I hope Node.js will end up like Java or COBOL. Companies will have their system built on this runtime for a long time. There is still a lot of innovation that we can do in Node.js before this happens. Node.js needs to improve on how we deal with Isomorphic code/Web interop, and how to support WASI.

David: This depends heavily on the community and core contributors. Due to its small core philosophy, the Node ecosystem is heavily relied on and this means that some of the hazards to progressing the platform may actually be more to do with how the ecosystem adapts. On top of that, WASM could be the game-changer that will either leave Node.js behind or become the wave that drives Node.js forward.

Matteo at Node Interactive

What’s your involvement with open source?

Matteo: I spend between 1 and 2 days per week working on Open Source. I am involved in Node.js as a member of the Technical Steering Committee, and I’m maintaining readable-stream, one of the most downloaded modules on npm. I’m also one of the lead maintainers of Fastify.

David: Other than the aforementioned ESX and Pino, I’m also the author of 0x, which is a profiling tool for Node.js that reduces the steps for creating a flamegraph from 7 to 1 and makes flamegraph generation possible on macOs (it wasn’t previously possible).

My favorite OSS projects are about eradicating common pain points that I’ve identified or anticipated through consulting work. The type of technical challenges businesses tends not to have incentive or capabilities to solve in a generic way (or even at all) because it’s not their core business. This work generally manifests as either tooling or libraries that remove common bottlenecks.

Another example is fast-redact, which is the fastest known Node.js module for redacting sensitive information before data leaves the process. I wrote this in light of GDPR, knowing that if I didn’t, redaction would likely become a bottleneck for a lot of people. Then we baked it into Pino so that logging redaction was guided, trivial to implement, and stayed fast.

What future can you predict for the open source movement?

David: A lot of OSS projects started as hobbies, but the inherent value has lead to some unfortunate scenarios and I think we need to manage that as a society. I’m in a very privileged position where I’m paid to work on Open Source, but not everyone has that privilege. Subsequently, you see public burn out, Github activity used for KPI’s in assessing employees and (some might say) exorbitant value leeching by large market players from small independent programmers.

I think the future will see attempts to redress this balance, followed by resistance and maneuvers against those attempts. It will probably get messy but eventually, I’m hopeful that the various communities will reach an equitable arrangement. The alternative is for organizations to preempt all of this by directly paying independent OSS programmers to work on whatever they want, whenever they want — but that’s extremely difficult to justify as a business case. It is, however, exactly how this whole ecosystem came to be.

Matteo: The future of Open Source is tied with its own sustainability. The number of developers consuming Open Source is growing fast because of the great demand on the market. However the vast majority are not contributing back — and this creates a support burden for the OSS developers. Every company should play their part and enable their devs to contribute back!

You’ve given lots of talks over the recent years. What was your last or favorite talk about?

Matteo: I did my favorite talk as the closing keynote at Codemotion Rome 2018: There is no such thing as luck. In this talk, I walked through my journey in Open Source, my failures, and fighting imposter syndrome. I’m waiting for a chance to present this again!

David: My last talk was a lightning talk about ESX, at React Amsterdam.

Lightning talks are actually quite challenging to prepare for, how do you distill something you’ve worked three months on into 5 minutes. I do relish that kind of challenge though. My favorite talks, however, are any talks I’ve done with Matteo. The best one is “The Cost of Logging”.

What do you do in your free time?

Matteo: I really like to travel the world, and I have a huge list of places that I want to visit!

David: When your hobby becomes your job it’s something of a double-edged sword. My free time is often engaged with attempting to counteract the risks of sedentarism. I haven’t been for a while, but rock climbing is a passion of mine. Since moving to Amsterdam I’ve been thinking of getting a boat… but it seems like a big commitment. I also like to read paper books, for nostalgia.

Are you excited about the upcoming JSNation conference in Amsterdam this year?

David: Super excited, partly because I feel like letting people know about pitfalls before they get there is a nice way to improve the world if only a little. As for the workshop, we’ll take everyone from zero to RESTful and it’ll be low-overhead and high-speed to boot.

Matteo: In this workshop, David and I are going to walk participants through building Node.js applications. We are going to talk about the main difference between a browser environment and a Node.js environment. Later on, we are going to talk about Promises, callbacks and error handling. During the course, we will also build a simple REST API based on Fastify.