- Something that’s been on my mind recently is the idea that there are no shortcuts if you want to make progress as an engineer—or at anything in life, really—in the long term. You can vibe code or copy from Stack Overflow if you want, and it might make you productive for a while. But at the end of the day, there is no substitute for putting in the work: reading the docs, asking questions, being curious, and digging until you really understand it. It’s not always fun or exciting, but it works. I like this analogy to magic tricks:
The only “trick” is that this preparation seems so boring, so impossibly tedious, that when we see the effect we can’t imagine that anyone would do something so tedious just for this simple effect. […] I often have people newer to the tech industry ask me for secrets to success. There aren’t many, really, but this secret—being willing to do something so terrifically tedious that it appears to be magic—works in tech too.
-
Use the HTML
outputtag to represent “the result of a calculation performed by the application, or the result of a user action,” and get assistive technology support for free 🎉 -
CSS colors have come a long way! Do you know what
oklch, relative color, andlight-darkdo? Or that there’s a better alternative torgba? Catch up on these topics and many others with the Pragmatic Guide to Modern CSS Colors. -
In TypeScript, the
Extract<Type, Union>type is a utility that pulls out from a union type only those members that are assignable to another specified type. Useful for narrowing types! It’s similar toPick<Type, Keys>, except that it works on the shape of a member instead of its property name. -
ESLint is preparing for another major release, expected to land in early 2026. v10 will drop support for Node 20 and the legacy
.eslintrcconfig format. If you’re still using them, consider upgrading soon. -
AI Coding Sucks is your permission to ignore the AI hype for a while. Conveniently, VS Code now allows you to disable AI-related functionality with a single setting.
-
Vite+, the Vite team’s vision of a Go-style all-in-one toolchain for building, testing, linting, and formatting JavaScript projects, is available in early access. It will be a commercial product, albeit “source-available” and with a “generous free tier.” It remains to be seen what that means for licensing and using it in our projects 🤔
-
A first look at Remix v3, the successor to… Remix, which is now React Router 🤷♂️. There are some interesting approaches here, as well as some I find baffling—such as getting rid of reactivity and relying on a manual call to
this.update()instead. Watch the full demo at Remix Jam for more details. -
Overtype, a lightweight Markdown editor component. Had to include it because I 100% subscribe to their guiding principle: “Built with the radical idea that sometimes dumb ideas work.” 💯
-
If you automate the setup of macOS, you’ll appreciate this thorough guide for changing macOS user preferences via the command line.
Notable releases:
-
React 19.2, bringing new components and hooks for easier pre-rendering and more ergonomic handling of event listeners in
useEffect. Here’s a very brief introduction to the changes (“for haters”), and here’s a longer and more in-depth discussion featuring one of the React maintainers. -
React Compiler 1.0, promising to optimize your code for you and largely removing the need for manual
useMemos anduseCallbacks. -
Node 25, enabling WebStorage APIs by default and adding
--allow-netto the permissions model. -
Firefox 144, shipping View Transitions, meaning they’re available in all browsers. They also published a beginner-friendly guide to get you started.
-
GitHub Copilot CLI, joining similar terminal-based AI agents.