
Senior frontend engineer at @evilmartians. I build interfaces, component systems, and frontend architecture for products that need to last.
Lisbon
Joined January 2011
- Tweets425
- Following190
- Followers232
- Likes1.8K
Pavel Grinchenko retweeted
Nano Stores finally has a website!
We've seen huge growth thanks to LLMs. Not having a site was embarrassing.
nanostores.net/
Check out the design: fresh and personal. Too many modern sites look the same. No React. Just Astro.
Thanks to @YodaPunk and @valbelaziorau!
Pavel Grinchenko retweeted
Debugging multi-layer CSS gradients/masks in the DevTools is painful, so I built a tool to help me visualize each layer. It works for CSS art/drawings, too.
Check it out: lab.ishadeed.com/tools/gradi…
Pavel Grinchenko retweeted
Vite+ 1.0 is here 🚀
A single `vp` CLI for managing your Node.js runtime, package manager, and frontend toolchain. Built on top of Vite, Vitest, Rolldown, Oxc, and tsdown.
All with a single config.
Free and open source under the MIT license.
Start with `vp create` or migrate with `vp migrate`.
voidzero.dev/posts/announcin…
Pavel Grinchenko retweeted
My colleague Yuri Mandrikov and I have developed a framework that enforces the design system for AI agents and prevents the slop from leaking into the codebase.
evilmartians.com/chronicles/…
Pavel Grinchenko retweeted
We turned San Francisco into our childhood favorite 8-bit game to welcome you to the SF Ruby Startup Conference this year! 🌉
Irina Nazarova (@inazarova) built The Pier.
This is a special place where you can turn yourself into a cute chibi character, meet other attendees, and collect gems in exchange for coins. 💎
The SF Ruby Conference is all about you. Come join the fun, collect points, and earn rewards.
Get your ticket today: luma.com/sfrubyconf2026, and don’t forget to share your chibi portrait with us!
Pavel Grinchenko retweeted
I’m looking for my next role.
I’m a software engineer and product designer with deep experience in databases, sync engines, frontend systems, performance, and UI/UX.
Open to full-time or contract work, remotely or in Berlin.
Details in reply ↓
RT for reach 🙏
Pavel Grinchenko retweeted
The @evilmartians blog now includes skills for AI agents.
Say you liked the advice in one of our articles and want to apply it to your project. Now you can install the skill from the article and let your AI agent put it into practice.
evilmartians.com/agent-skill…
Pavel Grinchenko retweeted
Nano ID 6.0 is out. We made it 4x faster, and our JS implementation now beats the native C++ crypto.randomUUID().
github.com/ai/nanoid
Orhan Aydoğdu came up with the trick for nope-id and let us port it to Nano ID.
github.com/ai/nanoid/pull/60…
How it works ↓
Pavel Grinchenko retweeted
TypeScript 7.0 is out 🎉
It's the 10x faster Go-based port 🔥
🔷 `tsc6` is for side-by-side API access
🔷 --checkers sets checker thread count
🔷 --singleThreaded keeps parsing/emit/checking together
🔷 TS 6.0 deprecations are hard errors
🔷 API access is planned for TS 7.1
📣 The moment is here. 📣
TypeScript 7 is officially released! 7️⃣
devblogs.microsoft.com/types…
Pavel Grinchenko retweeted
Astro 7 is here! A new Rust compiler, a new Rust Markdown/MDX processor, Vite 8 and more. Get ready for 60%+ faster builds.
astro.build/blog/astro-7/
Pavel Grinchenko retweeted
TypeScript 7.0 RC is out 🎉
It's the 10x faster Go-based port 🔥
🔷 `tsc6` is for side-by-side comparison
🔷 --checkers sets checker thread count
🔷 --singleThreaded keeps parsing/emit/checking together
🔷 TS 6.0 deprecations are hard errors
🔷 API access is planned for TS 7.1
📣 TypeScript 7's Release Candidate is now out! 📣
The new native port is almost here. Try it out on your codebases, and make sure your team is ready for the upcoming 7.0 release!
devblogs.microsoft.com/types…
Pavel Grinchenko retweeted
VoidZero is joining Cloudflare.
Our mission stays the same: to make JavaScript developers more productive than ever before. Vite, Vitest, Rolldown, Oxc, and Vite+ remain MIT-licensed. Evan and the VoidZero team will continue leading them.
Cloudflare shares our commitment to open source. Together, we can keep investing in the tooling developers rely on every day, while bringing the Vite ecosystem and Cloudflare’s platform even closer together.
Pavel Grinchenko retweeted
Same schema. Same Worker. Same bundler.
😑 Zod: 26.75 KiB gzipped
🤩 Valibot: 2.72 KiB gzipped
9.8x smaller... on edge runtimes, that's less work on every cold start.
New post on why 👇
valibot.dev/blog/dependency-…
Pavel Grinchenko retweeted
The theming you saw in the video is one CSS variable: --theme-hue-override.
Every color token (UI + syntax highlighting) derives from one hue thanks to OKLCH. Change one number, recolor the whole site. Try it live: psd-coder.github.io/astro-pi…
Separate thread on the color math coming!
Pavel Grinchenko retweeted
Martian Mono turns 4 today! To celebrate, we're open-sourcing its sibling: Martian Grotesk.
That's right — Martian Grotesk is now free and MIT licensed → fully open source. We're excited to see it in use out in the world!
👉 Font files and source code: github.com/evilmartians/grot…
Pavel Grinchenko retweeted
Pavel Grinchenko retweeted
Let’s talk about designer ↔︎ engineer interactions in Harmonizer
harmonizer.evilmartians.com
Harmonizer is primarily built for designers. But eventually, engineers implement the palette in the project.
There are two main ways to hand off the palette to developers.
Pavel Grinchenko retweeted
A year ago, we created the first color palette with consistent chroma, hue, and contrast: figma.com/community/file/128…
Today, I’m excited to share a WIP of our composer for generating custom palettes tailored to your needs. The release is coming soon.


















