Top picks — 2024 March


Million Lint is in public beta

I haven’t had a change to try this out myself, but they tout themselves on the website as as "ESLint, but for performance". I rarely have to use React devtools to identify perf issues, but using and making sense of the flame-graph can be daunting. Since this is a VS Code extension and a plugin for your React app it looks like it might help me find perf issues before they start effecting users.

The DevRel Went Down to Georgia

I love the chaotic 90’s aesthetic of this website.

Please Stop Sending Me Nested Dependency Security Reports

Security issues sound scary so I get why this happens, but most of the time they’re not a real issue:

These excessive reports are produced because traditional scanners such as npm audit and Dependabot don’t have a way to indicate which API(s) in a package are impacted by a reported issue. That means every downstream package that directly or transitively relies on an impacted package -even if they never use the impacted APIs- will get a security report.

Make sure to also read the linked post by Dan Abramov if you haven’t already.

Announcing TypeScript 5.4

Probably the most useful change in this update is the addition of the NoInfer utility type. But the change I’m most excited about is the auto-import support for subpath imports (e.g., the imports key in your package.json). I’m excited for two reasons. Firstly, hopefully, it will mean fewer people will use the path mapping in tsconfig.js, which was annoying because it was a TypeScript feature and not all tooling supported it. But the second (and more important) reason is that it was a community contribution from Emma Hamilton, whom I’m lucky enough to work with at Thinkmill!

Modern Font Stacks

Who knew there were so many great native font stacks? I think I might switch to using one of these instead of using custom fonts like I currently am.

Maybe sometimes you should use pixels

Interesting case against the conventional wisdom of using rem for almost everything since it respects users base font-size. Josh W Comeau wrote a similar post last year.

I still think I’ll continue to mostly use rem units, but both posts make some good points and are worth reading.

No Maintenance Intended

Lucky for me, I haven’t written anything popular enough to receive maintenance requests. But if I did, maybe I would add this badge to the README.

require(esm) in Node.js

This is experimental for now, but could be huge if/when it becomes stable.

Radix Themes 3.0

Some really great additions in this release, in particular I thought the Skeleton component was clever.

Kuto, a reverse JS bundler

Clever use of circular dependencies (usually considered a bad thing) to enable hoisting for non-hoistable code.

Welcome to Canva, Affinity!

This looks like a big play from Canva to directly compete with Adobe. I sure hope they don’t ruin the Affinity apps in the process.

The two companies have made a joint pledge to continue to offer perpetual licenses, amongst other things.

So far I’m cautiously optimistic.

The Case for Design Engineers, Pt. III

This one really summed up the way I think about making software.

Over the course of making anything, new understandings will always arise. And if you’re unable to shift, evolve, and design through the process of production, you will lose out on these new understandings discovered through the process of making — and your finished product will be the poorer because of it.

Optimizing Javascript for fun and for profit

I found this super interesting to read even if I only fully understood about a third of it!

On disabled and aria-disabled attributes

I’ve been guilty in the past of going too hard in the direction of using aria-disabled for everything and never using disabled, but Kitty makes some good points here.

Once again, the correct answer is always “it depends.”

Social media: