Weekly newsletter of Matteo Collina - Issue #1
1 - Adventures in Nodeland
Hi Everyone! I’ve started a newsletter to share my thoughts on technology, the advancements of Node.js and to keep all of you up-to-date of what I’m working on. This newsletter might be weekly, biweekly or monthly… we’ll see how it evolves in the coming months.
I’ve started to help my friend David Mark Clements on implementing the changes we planned for the new major release (v7) of Pino, v7 which will feature a new transport system. What is a logging transport? A transport will let you transfer your log lines from the current machine to a remote server for long term storage and analytics: a popular one is pino-elasticsearch. Previously, we recommended to run transports as separate processes: in v7, we will leverage worker_threads to run transports. Read more at https://github.com/pinojs/pino/pull/614 and https://github.com/pinojs/pino/pull/937. In order to support these new transports, I have started working on https://github.com/mcollina/thread-stream: a stream-like interface to send strings to another thread, leveraging a ring buffer. It’s fast and support a flushSync() operation.
Node.js Undici is progressing at high pace. Undici is a new HTTP client for Node written from scratch, it’s faster and more reliable. Here are the more relevant PRs:
- TLS session reuse across connections to the same host: https://github.com/nodejs/undici/pull/588
- Compile llhttp with WASM, instead of relying on Node.js core https://github.com/nodejs/undici/pull/575
- A website https://github.com/nodejs/undici/pull/585
- Mock HTTP requests https://github.com/nodejs/undici/pulls/587
- Redirect support https://github.com/nodejs/undici/pull/597
Fastify has reached v3.14.0, fixing a few bugs and adding new features. We fixed a compatibility problem with webpack and we marked the serverless use case as supported. We added fastify.printPlugins, which is incredibly useful with complex applications.
In the Fastify community, we shipped a new version of fastify-multipart, fixing a long-standing bug (https://github.com/fastify/fastify-multipart/issues/196 https://github.com/fastify/fastify-multipart/pull/207). fastify-autoload gained a new forceESM option https://github.com/fastify/fastify-autoload/pull/144, useful in combination with typescript and native ESM. I would also like to introduce you to a new Fastify plugin adds support for Vite, a new frontend toolkit from Evan You.
As you might know, I’m Technical Director at NearForm. After the investment by Columbia Capital, we are hiring all profiles: https://grnh.se/5c39f3d43us. I have interviewed a 2-5 people every week for the last couple of months, and things do not seem to slow down! I might starting to have interview fatigue - it’s really hard work.
I have also been working with a few clients on production issues and software architecture in general. I have found that if you are using https://github.com/nodeshift/opossum, the Node.js circuit breaker implementation, you have to call .shutdown() otherwise it would leave forever, creating both a memory leak and “stealing” a bit of CPU work every second.
That’s all for now, thanks for reading! Did you like this issue? Let me know at twitter (@matteocollina), my DMs are open.