Matteo Collina Profile Banner
Matteo Collina Profile
Matteo Collina

@matteocollina

41,968
Followers
3,419
Following
949
Media
42,247
Statuses

@platformatic Co-Founder & CTO, @nodejs TSC member, Lead maintainer @fastifyjs , Board @OpenJSF , Conference Speaker, Ph.D. Past: @nearform . Views are my own.

Forlì, Emilia Romagna
Joined August 2008
Don't wanna be here? Send us removal request.
Pinned Tweet
@matteocollina
Matteo Collina
26 days
With Node.js usage growing by almost 40% year on year, the demand for a unified solution to simplify and streamline Node.js development is clear. In our latest @platformatic release, we're addressing key Node.js development pain points
Tweet media one
4
10
83
@matteocollina
Matteo Collina
2 years
Are you in trouble hiring software engineers? Hire them in Nigeria. Everyone that is figuring out how to do this will have a massive advantage in the talent war.
171
1K
3K
@matteocollina
Matteo Collina
27 days
We are rewriting @nodejs in @typescript
140
168
2K
@matteocollina
Matteo Collina
2 years
fetch() has shipped in Node and now people are complaining that it does not work like node-fetch πŸ€¦β€β™‚οΈ. However, EVERYBODY said they wanted more standard-compliant APIs from Node.js.
57
94
2K
@matteocollina
Matteo Collina
1 year
Douglas Crockford does not go light on all the additions to JavaScript and we program for the Web today.
Tweet media one
50
156
2K
@matteocollina
Matteo Collina
4 years
Don't trust any software architect that do not write code anymore.
34
298
1K
@matteocollina
Matteo Collina
2 years
The most disregarded principle of Software Architecture is extremely simple: Code that change together should stay together.
34
202
1K
@matteocollina
Matteo Collina
3 years
I'm stunned by how simple my @nodejs http client 'Undici' has become. It's also twice as fast of the old 'http' module in core. It's stable, and you should use it right now.
Tweet media one
36
235
1K
@matteocollina
Matteo Collina
2 years
Redis is the β€œget out of jail” card of all Software Architect. The time I spent studying and learning how to use it shaped a good part of my career.
24
96
1K
@matteocollina
Matteo Collina
2 years
We are cooking something new for @nodejs v18. It has been a long time in the making (!) and I’m really super excited about it. Hint: you have been all asking for this for years.
65
108
1K
@matteocollina
Matteo Collina
2 years
Something recently clicked. Developer Experience is a part of Software Architecture.
30
160
1K
@matteocollina
Matteo Collina
3 years
If you are the CEO of a company and you complain that @nodejs (or any other Open Source project) is lacking a certain feature, you are implicitly saying that you do not want to allocate any budget to the maintenance of a key piece of the platform you rely on. You should do better
22
165
1K
@matteocollina
Matteo Collina
2 years
The recommendation I give everybody starting up in tech is: read the source. Are you using a library that you like? Read it. Have you got a bug you can’t solve? Read the source of the dependencies. Somebody is pitching a framework as magical? Read it. No matter what, read code.
24
238
1K
@matteocollina
Matteo Collina
3 years
Node.js v16 is coming and the biggest news is that it ships with a fat binary for MacOS... you’ll soon have a native build for those fast M1s!
11
103
1K
@matteocollina
Matteo Collina
9 months
TypeScript is growing a bit in me, I find it great satisfaction when everything is typed. However, how do you justify spending an afternoon to get a type right, while you can slap an any on it?
231
71
983
@matteocollina
Matteo Collina
5 months
Call me a junior
@ParsaNasirimehr
Parsa
5 months
@ThePrimeagen Let me try: Using print statements in code instead of using the debugger means your job title shouldn't be above Junior.
82
5
223
20
39
825
@matteocollina
Matteo Collina
4 years
Using "WTF" in issues on Github is really disrespectful. I really do not understand why these people are so upset for something that is free?
36
76
778
@matteocollina
Matteo Collina
20 days
Imagine having one of the most recognizable logos in the database ecosystem. And then changing it to something anonymous.
21
26
790
@matteocollina
Matteo Collina
2 years
I’m quite surprised a significant part of the industry does not write automated tests or find them useful. They are a fundamental design tool for me and I almost can’t code without. Do you write tests?
137
36
778
@matteocollina
Matteo Collina
2 years
If your SSR takes longer than 200ms (I'm generous), it's better to render on the client.
34
45
673
@matteocollina
Matteo Collina
2 years
According to the State of JavaScript, @fastifyjs is the @nodejs backend framework with higher developer satisfaction. I'm extremely proud of what we achieved as a team.
Tweet media one
18
86
667
@matteocollina
Matteo Collina
3 years
> What have you done this week? I made @nodejs HTTP server almost 20% faster. (I’m omitting the fact that the 20% was actually there before and we lost it between v14 and v16-pre). Anyway, I’m proud πŸŽ‰πŸŽ‰πŸŽ‰
20
41
639
@matteocollina
Matteo Collina
4 years
Turns out (website) is built using @nodejs ❀️
@kevinwolfcr
Kevin Wolf
4 years
Deno relies on @vercel GitHub integration. 😍
Tweet media one
3
7
151
34
59
634
@matteocollina
Matteo Collina
2 years
I'm not always excited by a new minor release of @nodejs . This time I am and you should too! Node.js v18.11.0 ships quite a few new features. Let's unpack them.
10
96
617
@matteocollina
Matteo Collina
3 months
Quite a few people have asked me what HTTP client I recommend for Node.js. In concert with my frriend @ArrowoodTech , we have prepared a benchmark for you to decide.
Tweet media one
31
69
613
@matteocollina
Matteo Collina
5 years
I’m a Technical Director @NearForm now! πŸ˜±πŸš€πŸŽ‰
94
11
588
@matteocollina
Matteo Collina
3 years
. @nodejs is fast and easy to use. The fact that your JavaScript libraries are either 1) buggy 2) slow is not a problem of JavaScript. Simply put, those libraries are not well written. Rewriting everything in another language is unlikely to solve either problems.
26
68
569
@matteocollina
Matteo Collina
3 years
I’m the proud father of baby Zoe! 😍
121
2
544
@matteocollina
Matteo Collina
8 months
@jessfraz A few reasons: 1. Node.js has no budget of its own, and npm is maintained by a tiny team. Most of the investment being made are in adding capabilities or things more secure, not making things faster. (Making things faster does not make anyone more money, it’s abit of tragedy of…
23
43
537
@matteocollina
Matteo Collina
3 years
The best way for you to have a bug fixed in a Open Source library is to… πŸ₯fix it yourself and send a PR! πŸŽ‰πŸŽ‰
14
57
516
@matteocollina
Matteo Collina
2 years
. @v8js surprised me again today! I've received a casual PR to one of my modules. The pattern I have been using to instantiate new objects in JS could be drastically improved. is a thing and it's incredibly fast.
Tweet media one
13
94
509
@matteocollina
Matteo Collina
2 years
Most teams do not know how to manage a @nodejs application at scale regarding memory. Here is a simple fact: V8 GC will consume all memory that it has available. Configure a memory limit and do not recycle your instance if it hits 80% of memory usage - it's totally normal.
15
52
515
@matteocollina
Matteo Collina
1 year
Yesterday in my stream I was asked why I'm not using jest to test Node.js applications. Here is the quick explanation: an Error is not an instance of Error.
33
58
495
@matteocollina
Matteo Collina
2 years
In case you forget: never cache JavaScript promises.
34
52
495
@matteocollina
Matteo Collina
1 month
CORS is my goto interview question
@whitep4nth3r
Salma
1 month
no one knows CORS
7
2
71
47
27
487
@matteocollina
Matteo Collina
4 years
I’m 36 πŸŽ‚!
104
2
485
@matteocollina
Matteo Collina
2 years
I think something we should revist is @nodejs shipping its own Types instead of downloading them from DefinitelyTyped.
16
17
485
@matteocollina
Matteo Collina
3 years
Random Dev on Github: "How many years devs should wait for this feature?" Me: As long as somebody implements it. Are you volunteering?
19
41
479
@matteocollina
Matteo Collina
2 years
Big life update! Today is my last day as @NearForm Chief Software Architect. NearForm is the best professional services company in the world and an amazing place to work at.
57
12
481
@matteocollina
Matteo Collina
3 years
Repeat with me: I will not use @nodejs v6 in production.
Tweet media one
14
40
475
@matteocollina
Matteo Collina
10 days
Open Source does not mean free support for your product or clients.
22
36
471
@matteocollina
Matteo Collina
3 years
I have become a meme. Watch till the end 😍. (This is likely the highest peak of my career, I should probably retire now) cc @fastifyjs
@dabit3
nader dabit
3 years
138
610
3K
20
32
448
@matteocollina
Matteo Collina
3 years
I’ve spent the last hour with my daughter (1 day) sleeping in my arms. I’m totally in love.
30
1
436
@matteocollina
Matteo Collina
3 months
To whom it may concern: if you complain that Node.js is slow and you have not invested a dime in improving it…. hear this: Node.js is built by volunteers. Bugs don’t get magically fixed, as much as money does not grow on trees. Invest in the commons.
16
46
426
@matteocollina
Matteo Collina
2 years
. @deno_land is now supporting npm. I’m really glad they had a massive change-of-heart regarding npm and @nodejs . I’m thrilled! This means all the stuff I built is now available there too! We should get @fastifyjs supported soon.
17
56
426
@matteocollina
Matteo Collina
4 years
Node.js is currently helping companies generating BILLIONS. I'm pretty proud of all @nodejs core collaborators :).
4
47
409
@matteocollina
Matteo Collina
2 years
I'm proud to announce that @platformatic first tool is now Open Source: Platformatic DB! It creates REST and GraphQL APIs from your database schemas, keeping it customizable via @fastifyjs plugins.
48
92
414
@matteocollina
Matteo Collina
3 years
A lot of folks consider Node.js a product. It’s not. It’s an OSS community that maintains a JS runtime. If you want something to happen, come and contribute.
8
43
401
@matteocollina
Matteo Collina
4 years
Software developer spend most of their time reading code, not writing it.
18
69
401
@matteocollina
Matteo Collina
9 months
One of the fundamental principles of OSS is that *you* are the last maintainer of all OSS you use. This means that if your OSS dependencies fail, you should be ready to take over. Today there are very few companies in the world that can afford that. Therefore it’s in your best…
@_msw_
@[email protected] πŸπŸ¦€πŸͺπŸ’Žβ˜•οΈπŸ§πŸ˜πŸŒ²
9 months
Unpopular opinion: one is doing nothing wrong when using Free and Open Source software in full compliance with the license, never asking for more than what was voluntarily given, and never "giving back". Even if this competes with the original authors in marketplaces.
26
29
176
16
50
402
@matteocollina
Matteo Collina
3 years
The key reason fetch() is not happening in @nodejs is that it is a gargantuan amount of work that no company is willing to sponsor. node-fetch does 80% of what’s needed and it is extremely easy to install.
21
46
396
@matteocollina
Matteo Collina
2 years
If you are working on the Web, you need to know CORS.
42
25
393
@matteocollina
Matteo Collina
2 years
Would you consider writing unit tests a skill required for Junior, Mid-level or Senior devs?
206
16
390
@matteocollina
Matteo Collina
2 years
Using a dependency built with Typescript completely disrupt my flow. When it's JS, I can quickly jump in inside node_modules, make a few modifications and tests my theories. Most TS projects don't ship their sources, so doing these "quick hacks" is not possible.
45
29
390
@matteocollina
Matteo Collina
2 years
Today I’m thinking that as the JavaScript community we should have done better. There are *so many JS developers* out there that do not have a basic understanding of how promises work. Sigh. Do you know any confs that would like to have us delivering a workshop on the topic?
37
41
387
@matteocollina
Matteo Collina
2 years
It's ha been a while since I did a talk on @nodejs performance. Would you be interested in watching it?
32
3
386
@matteocollina
Matteo Collina
5 years
Unpopular (?) opinion: Object-Relational-Mapping create more problems than what they solve. They help you in the 80% part that's easy, and slow you down in the 20% part that is actually hard (where you are going to spend 80% of the time anyway).
72
86
381
@matteocollina
Matteo Collina
2 months
Wow! AWS released their own JS runtime! The devil is in the details, and this is only tailored to be a runtime for Lambda. I’ll definitely tinker with it! Instead, why didn’t work to optimize Node.js and contribute back?
32
30
382
@matteocollina
Matteo Collina
4 months
Do you know what powers @nodejs fetch()? It’s a library called undici! It has 25 open issues tagged β€œgood first issue”… would you mind helping us?
9
52
367
@matteocollina
Matteo Collina
8 months
I *really* like what @jarredsumner is doing with Bun, but I'm a bit frustrated by their compatibility claim with @nodejs . It's not fully compatible, and many inner details are different. This results in many random issues over my repos asking for fixes for Bun incompatibilities,…
Tweet media one
12
25
368
@matteocollina
Matteo Collina
3 years
I just did a quick benchmark of crypto.randomUUID() vs the uuid module on Node v16. 17 millions ids/sec vs 2 millions ids/sec. TL;DR migrate to Node.js v16 and use crypto.randomUUID(). Congrats @jasnell for building and shipping this!
12
44
365
@matteocollina
Matteo Collina
5 months
The event loop is core to Node.js performance, but things can go wrong. In this article, we took a look at the event loop, its importance and utilization, best practices & the math behind synchronous response processing.
2
71
367
@matteocollina
Matteo Collina
4 years
Me: I would love to have time to study X, code Y or write Z Me in lockdown: let’s play videogames/watch netflix, I can’t focus
11
23
356
@matteocollina
Matteo Collina
4 years
I'm not capable of learning a programming language (or framework) from ground up. I need to built something with it and this normally means skipping through a lot of "fundamentals" which I would fill at a later time.
27
27
357
@matteocollina
Matteo Collina
6 years
The best recommendation that I can give to a junior engineer: read the source. Docs could be out-of-date, or misleading. If you think there is a bug in a dependency, check the code. You will be in the best position to fix it. Learn to read code.
15
114
355
@matteocollina
Matteo Collina
2 years
We have experimental watch mode! You won't need nodemon or equivalent anymore to watch and restart your application.
7
15
357
@matteocollina
Matteo Collina
2 years
New @fastifyjs t-shirt: do you like it?
Tweet media one
29
7
349
@matteocollina
Matteo Collina
2 years
First day of a new life! πŸš€πŸ’₯
23
2
354
@matteocollina
Matteo Collina
4 years
I can’t understand why so many devs like ORMs (or ODMs) so much. DBs are so powerful and can do so many amazing things.. why would you decide to not leverage them at their best?
88
59
352
@matteocollina
Matteo Collina
5 months
Devs: we want the safety of TypeScript TS: every minor might include breaking change DefinitelyTyped: every release might include breaking changes Module authors: it's okay to ship breaking changes to types in minor releases Developers: your minor update broke our build!
42
23
347
@matteocollina
Matteo Collina
5 years
Today has been an emotional intense day. Tomorrow will be worse. To recover I’m at home coding something just for fun - as you taught me, Dad. Godspeed, and see you on the other side.
74
2
344
@matteocollina
Matteo Collina
2 years
Here is my recommendation to all my fellow npm module authors: don’t drop support for CJS and go esm-only. The community is not ready to migrate just yet.
25
49
340
@matteocollina
Matteo Collina
2 years
Hey Folks! Check out @platformatic ! It's the new company I've founded with my friend @lucamaraschi . Here is a quick video introducing ourselves!
77
68
341
@matteocollina
Matteo Collina
6 years
. @nodejs 9 is 15-20% faster than Node 8 at our "bare http" benchmarks. So much improvement in so little time. @v8 6.2 rocks.
5
170
334
@matteocollina
Matteo Collina
4 years
One more fantastic day in Open Source land. User: "I have this very important bug that I need fixed yesterday" Me: "Would you like to send a pull request to fix it?" User: "No, I do not have the time". ... Do you think it would be fair to ask if they were willing to pay?
41
23
339
@matteocollina
Matteo Collina
2 years
Fun facts about IP networking and @nodejs : most people believe localhost 🏑 is one IP address. localhost usually resolves to TWO addresses, 127.0.0.1 (IPv4) and ::1 (IPv6). The order in which those are resolved is dependent on the operating system. These days ::1 comes first.
3
56
333
@matteocollina
Matteo Collina
3 years
I'm stunned by how nice the @nodejs fs/promises API is.
Tweet media one
8
37
339
@matteocollina
Matteo Collina
8 months
Dev on GitHub: > i can't use this library anymore because of such little thing. Me: > Would you like to send a Pull Request to address this issue? Remember to add unit tests.
18
12
336
@matteocollina
Matteo Collina
1 month
I want to personally thank @vercel and @cloudflare for providing the hosting and cdn that made this possible.
@nodejs
Node.js
1 month
πŸ’πŸš€ The redesigned is live! - Fresh look - Comprehensive search - New learning resources - APIs & downloads unchanged - Improved contributor DX Stay tuned for more details in upcoming posts. Explore, share, and give us your feedback!
104
343
2K
6
18
331
@matteocollina
Matteo Collina
3 years
Prisma is the most interesting thing in database access happening in the Node.js space. I’m usually against ORMs but I recommend you to check this out and evaluate.
19
58
332
@matteocollina
Matteo Collina
6 months
Would you use GraphQL in your next project?
@zeeg
David Cramer
6 months
Still can’t believe we all got tricked into using graphql
214
337
4K
222
19
322
@matteocollina
Matteo Collina
2 years
If you do not know what the N+1 problem is when working on a database or an API... go study! You'll thank me later!
16
36
327
@matteocollina
Matteo Collina
2 years
At #OpenJSWorld2022 I won the award as β€œLeading By Example” for 2022. I’m flattered! Thank all of your for noting for me.
Tweet media one
15
9
322
@matteocollina
Matteo Collina
9 months
I'm stunned by the performance of node:test on Node.js v20. A simple test takes 15ms to run on my machine. The same equivalent test takes 20ms to run on tap and 202ms to run on vitest.
16
27
320
@matteocollina
Matteo Collina
2 years
The dominance of Mac and Linux in the developer market makes it EXCEPTIONALLY HARD to support Windows users. I'm not sure how could we still be inclusive (windows machines are cheaper) and at the same time keep innovating our libs.
60
24
315
@matteocollina
Matteo Collina
1 year
One of the simplest principles of software development is > Things that should change together should be together For example, this means that your routes should be defined in the same file as your handler, and your validations/schema should be there too.
33
39
312
@matteocollina
Matteo Collina
2 years
Always include a complete example on how to reproduce your problem. signed, all your OSS maintainers
10
33
309
@matteocollina
Matteo Collina
3 years
My daughter is 1 month old today πŸŽ‚
15
2
296
@matteocollina
Matteo Collina
2 years
Here is a reminder that writing the documentation of a software project is hard work. It’s also deep technical work.
15
33
298
@matteocollina
Matteo Collina
5 years
One of the things of upgrading your @nodejs runtime is that it gets faster. v12.11.0 can provide around 20% more throughput when serving http requests compared to v10.16.0. Good news v12 is going LTS next month!
7
84
293
@matteocollina
Matteo Collina
3 years
89% of developers using @fastifyjs would use it again! Thanks for the trust folks!
Tweet media one
11
26
286
@matteocollina
Matteo Collina
2 years
Should I start a weekly coding twitch? Have you got any recommendations for setting it up? *Really* thinking about it, I want to show I’m coding @nodejs , @fastifyjs & @platformatic in the open.
31
11
291
@matteocollina
Matteo Collina
2 years
Today's regret: use ESM for a @nodejs application. The tooling is just not there yet. Sigh.
20
17
289
@matteocollina
Matteo Collina
2 years
I hate merge conflicts.
27
21
277
@matteocollina
Matteo Collina
2 years
I don’t like ORMs and I quite like SQL. However massive-js is quite fantastic:
22
36
279
@matteocollina
Matteo Collina
2 years
In Node.js, mocking whole modules is an antipattern. You know it will cause problems in the future, however most people do it anyway (and keep using global state). Sigh.
17
37
271
@matteocollina
Matteo Collina
11 months
Dig mud and be happy
Tweet media one
16
2
273
@matteocollina
Matteo Collina
6 months
If you use Node, this blog is for you! We took a look at: β€£ General best practices β€£ Module management β€£ Dependency injections β€£ The drawbacks of singletons for holding state variables
Tweet media one
3
46
271