View profile

Adventures in Nodeland - Issue #41

Matteo Collina
Matteo Collina
Happy new year folks! This week activity was focused on catching up on a few tasks that were left to be done.

My “big” holiday project has been to collect all the links to my past talks. I wanted to do this for years and I never took the time and effort to push through. However with NearForm growing so quickly I needed to have a central place where all this info was collected. It was really hard assembling all the memories and links of the last 7 years.. and I’m pretty sure I forgot a few. What a magical trip on the memory lane - I miss all the friends I made along the way.
GitHub - mcollina/public-speaking: Matteo Collina's portfolio of public speaking engagements
I would like to thank Liran Tal to assemble gigsboat, the utility that helped me assemble the list of talks.
GitHub - gigsboat/cli: Do you have a boatload of speaking gigs? Use this CLI to manage them all!
process-warning
This week we have renamed an old module, fastify-warning, to process-warning. This module has nothing special about Fastify and we also use it in pino and other modules. It’s very useful and you should use it yourself to add custom error codes to your module - like Node.js core does!
GitHub - fastify/process-warning: A small utility for creating warnings and emitting them.
Node Clinic
Back in 2018 I lead a team to build Node Clinic (https://clinicjs.org/), a swiss-army-knife tool to help diagnose and solve performance issues inside Node.js applications. I launched it to the world at JSConf Asia 2018!
Matteo Collina: My Node.JS Process Is On Fire - JSConf.Asia 2018
Matteo Collina: My Node.JS Process Is On Fire - JSConf.Asia 2018
Back in November my teammate Rafael updated it to support Node.js v16.
Release v10.0.0 · clinicjs/node-clinic · GitHub
Then last week he woked hard to fix support for Linux perf as it never worked well: it’s great and it shows many more details than the CPU profiler. Our CPU profiler is based on an “old” utility that David Mark Clements and myself developed in London at the beginning of 2016 - 0x. So the fix happened there:
linux: fixes perf profiling stacktraces by RafaelGSS · Pull Request #244 · davidmarkclements/0x · GitHub
I have also took the liberty of updating all the deps and adding back the CI integration - as the old Travis stopped working.
Updated deps and added CI by mcollina · Pull Request #246 · davidmarkclements/0x · GitHub
Unfortunately we also had to see some feature go. The Node.js flag we used to support dtrace on Mac OS X stopped working in Node v16, so I just removed the support.
Kernel tracing is not supported anymore as --perf-basic-prof is limited to Linux by mcollina · Pull Request #245 · davidmarkclements/0x · GitHub
Finally I shipped a new version of 0x with all the changes: v5.0.0.
Release v5.0.0 · davidmarkclements/0x · GitHub
Rafael updated clinic flame with the support for kernel tracing:
feat: add kernelTracing option by RafaelGSS · Pull Request #154 · clinicjs/node-clinic-flame · GitHub
…and we shipped a new major of Clinic!
Release v11.0.0 · clinicjs/node-clinic · GitHub
News
I took some time to reflect on my career during this break, and something really clicked. I have naturally gravitated to tool building and developer relations during my job as a Software Architect. I came to the conclusion that it is not by chance: a software architecture primary customers are the developers that are going to work on it.
Matteo Collina
Something recently clicked. Developer Experience is a part of Software Architecture.
After that tweet, Dave Shanley recommended me this article he wrote a bit go that resonated extremely well on what I think about software architecture.
In this second article about Developer Experience and Architecture I learned a new topic - funnily enough I came to the same conclusions ages but couldn’t find a mathematical model for it: files that changes together should stay together.
How About DX-Driven Architecture? - DEV Community
Will you use SQLite as your main database in 2022? On the cover it’s just an embeddable database..so how can we make it reliable and survive crashes? How can we scale it? Here are all the answers:
Did you enjoy this issue? Yes No
Matteo Collina
Matteo Collina @matteocollina

I write about my journey as a core contributor of Node.js, as an author and a maintainer of many modules - including Fastify and Pino. In addition, I speak at conferences, and I will add links to all my talks in case you missed one.

In order to unsubscribe, click here.
If you were forwarded this newsletter and you like it, you can subscribe here.
Created with Revue by Twitter.