View profile

fetch() is happening and other Adventures in Nodeland - Issue #45

Matteo Collina
Matteo Collina
Hi Folks! This edition is quite special as I’m covering a bit of a big news: at the Node.js HTTP mini-summit we decided to ship undici fetch() implementation. I have also included some more releases of my modules and a few interesting reads. Enjoy!

I spoke at JS Poland last week! I really wish I could have been on that stage with Gerard!
I spoke at JS Poland last week! I really wish I could have been on that stage with Gerard!
Last week we did the HTTP mini summit to discuss the future of the Node.js HTTP APIs. We covered so many topics that it would take a long time to summarize them. You will find the meeting notes at in the next few days. In the meanwhile, here is the video we recorded.
2022-01-27-Next 10 years of Node.js - HTTP Mini Summit
2022-01-27-Next 10 years of Node.js - HTTP Mini Summit
The first major outcome of that meeting is that we agreed to ship Undici fetch as global fetch in Node.js as experimental. You can follow the evolution of that PR at:
lib: add fetch by targos · Pull Request #41749 · nodejs/node · GitHub
In order To ship that change, Micheal “targos” had to simplify bundling of the wasm components of Undici. The fix is included in v4.13.0, which also adds blob: and about: uri support in Undici fetch.
Release v4.13.0 · nodejs/undici · GitHub
What are the key principles that inspired the design of Node.js? Here is a fundamental piece from Isaac, the creator/founder of npm and once-benevolent dictator of Node.js. In this “old” article, Isaac describe how to avoid Zalgo when designing asynchronous API. The same principles apply to today’s world: as I very often point out, async function resolves asynchronously. Read up:
This edition of Adventures in Nodeland also sports a couple of releases of 0x that fixes several problems of past releases and improve the support to Node.js v16 sparkplug:
Release v5.1.1 · davidmarkclements/0x · GitHub
GitHub - davidmarkclements/0x at v5.1.2
This week had a good flurry of activities on Mercurius cache, building up on the work we released in the last few weeks. Specifically we added types, automatic skipping of subscriptions, and better logging for errors.
Release v1.1.0 · mercurius-js/cache · GitHub
This weekend I updated two modules of mine, openapi-graphql and mercurius-auto-schema to GraphQL v16. Given that openapi-graphql is written in TypeScript, it was a bit of a rollercoaster for me: I would say that TS was indeed very useful in failing the build until I fixed all the errors.
Release v2.0.0 · mcollina/openapi-graphql · GitHub
GitHub - mcollina/mercurius-auto-schema
This week pino shipped only a couple of updates: added the types for the new ‘sync’ option of pino-pretty and a few bugfixes in pino.
Release v7.5.1 · pinojs/pino-pretty · GitHub
Release v7.6.5 · pinojs/pino · GitHub
What GraphQL client should you use? I would place my bets on urql or graphql-hooks. Here is a success story of a migration from Apollo Client to urql, read up:
Why I (finally) switched to urql from Apollo Client - LogRocket Blog
Here are a couple of content pieces from Gergely Orosz that are very relevant to our industry today. First, should engineers lead projects? Second, companies should treat engineers as “curious problem solvers, not mindless resources”.
Gergely Orosz
Should software engineers lead projects?

My framework on deciding:
What Silicon Valley "Gets" about Software Engineers that Traditional Companies Do Not
I could not publish this edition of Adventures in Nodeland without including the article from NodeSource where the analyze the cost of Application Performance Monitoring in detail using Fastify and Autocannon. TL;DR NSolid does not introduce any significant overhead, while DynaTrace adds more overhead than DataDog. Thanks Adrian for the link to Fastify.
Security vulnerabilities are tricky: very often something innocuous that gets committed in 2009 could show up as a significant vulnerability in 2022. Here is the story of pkexec:
A bug lurking for 12 years gives attackers root on most major Linux distros
Very recently I found myself looking for a good explanation on how to write great docs for platforms and libraries. This blog post from Megan is a great intro to the topic.
Docs for Everyone! | Megan Sullivan
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.