On a high-DPI screen, a chat can stop half a pixel off the bottom. The gap is too small to notice, yet the browser stops following new messages. Here’s why, with a demo and a small fix: www.kripod.dev/blog/half-a-...
Kristóf Poduszló
Kristóf Poduszló
@kripod.dev
Software engineer with a special interest in accessibility. Builds for the web, mainly using React and Tailwind CSS nowadays.
105 followers278 following50 posts
Nobody walks into a meeting and says "Hi, I'm Sam, I'm in debt." Or in therapy. Or gay. Yet here I am, telling the whole internet. www.kripod.dev/blog/im-gay-...
Ten years of accessibility links in a private note. One question kept coming back. Who decided this, and where do I go to disagree? There’s almost always an answer, and it’s rarely where you’d look first. www.kripod.dev/blog/accessi...
Kristóf Poduszló reposted
One thing that I'm particularly delighted about was a great GitHub engineer partnering with the accessibility team to quietly push this out. A lot of people use GitHub via the command line and email, and folks there often forget it: github.blog/engineering/... www.osnews.com/story/144892...
envista loads your .env files. The right ones. Cascades by mode, in Vite’s order. Searches upward, so nested packages find the root .env. Node’s util.parseEnv does the parsing. envista is the last mile. Zero deps. github.com/kripod/envista
I was a bit hesitant getting this off my chest but here goes nothing 🙈
Kristóf Poduszló reposted
Kristóf Poduszló reposted
I made an accessibility error when coding up some tooltips. Here's where I went wrong, and how you can avoid making the same mistake: jakearchibald.com/2026/my-tool...
Kristóf Poduszló reposted
Fontastic Space is a free tool to help you find the mathematically optimal font pairing. It give you pairing score on multiple categories (including anatomical comparison of ascender, cap height, x-height and more) fontastic.space/
Kristóf Poduszló reposted
Kristóf Poduszló reposted
Given recent exploits, we set out to harden our GitHub Actions. Our approach to syncing workflows across multiple repos made it easy.
Kristóf Poduszló reposted
Really cool idea 🤯 - Install this web font - Just add plain text to the DOM - It renders a chart using font ligatures No JS, no hydration FOUC franktisellano.github.io/datatype/
Kristóf Poduszló reposted
Kristóf Poduszló reposted
🎨 I gotta say, my latest is a little treasure trove: what even is `contain`?! csswizardry.com/2026/04/what...
Kristóf Poduszló reposted
Excited to open source Async History Stack: an undo/redo system I've been using for a while. ⏳ Async-friendly 🚫 Abortable entries 🚦 Merges, batches, chained operations 🌱 Works with anything github.com/kettanaito/...
Today marks the first illegal Budapest Pride march 🏳️🌈 🇭🇺 Just a reminder how brittle democracy can be, despite the citizens becoming more inclusive over time. Evil triumphs when the good do nothing…
For as long as I live, I'll never get over the fact that we've walked on the moon, harnessed the sun's power, and made it possible to send messages around the planet in mere seconds... ...yet we're still so stupidly primitive we think where you were born should determine what rights you have.
Kristóf Poduszló reposted
Styling HTML form controls is something web designers & developers have wanted for years! My team is working on a solution — apply `appearance: base` and switch to a new interoperable consistent default control. Then override it using new pseudo-elements. See the details: drafts.csswg.org/css-forms/
Kristóf Poduszló reposted
Here's the math needed to adjust a color's lightness and eliminate the gray area where WCAG2 and APCA conflict on black/white foregrounds. Yes, it's CSS. And yes, it's blazingly fast. Usage: background: oklch(from <color> var(--_ak-safe-l) c h);
I spent hours exploring the color ranges where APCA and WCAG2 contrast algorithms differ. Then I found a site that shows these discrepancies, with the gray area of the chart marking the disagreement range. That's the zone Ariakit Styles will avoid. Thank you so much, Lloyd Kupchanko!
Reduce should never be used with a non-primitive accumulator imo. We have more semantic alternatives like: • Object.fromEntries() + entries.map() • Object.groupBy() / Map.groupBy() Even for primitives we’ll have Math.sumPrecise() soon ⏳ github.com/tc39/proposa...
I love Array.reduce, but I find myself writing less of them as the browser primitives get better. Map + Object groupBy is one place you can now get rid of reduce for www.youtube.com/watch?v=1bfK...
Visually-hidden elements should be preferred over explicit labeling. Despite being aware of that, I could never explain the “whys” before this article.
📝 New post! `aria-label` and `aria-labelledby` aren't allowed on divs, spans, and other static text elements out of the box, and *most* screenreaders won't announce them. #accessibility #a11y
Had to use Safari for browsing the @npmjs.bsky.social ‘Versions’ tab of @astro.build The ‘astro’ package has 1,000+ releases and the associated page just froze while searching on Chrome: www.npmjs.com/package/astr... Perhaps the ‘content-visibility’ CSS property could help? web.dev/articles/con...
Just upgraded kripod.dev to Astro v5. While the migration took some effort, I could pull it off in one go thankfully to the well-written guidelines. It took less than an hour, running stronger than ever 🚀
Astro 5.0 is here. Content layer, server islands, simplified prerendering, type-safe env, @vite.dev v6. All stable. Go see what you can do 👇 astro.build/blog/astro-5/
Kristóf Poduszló reposted
I wish the @tailwindcss.com will revise some changes before releasing v4, especially concerning accessibility. It’s such a responsibility to get things right at their scale. Perhaps advanced features like breaking out of atomicity might be put behind a flag or at least discouraged by the docs? 🤔
Wrote my own thoughts on Tailwind 4. There’s a lot of good, some ok, and one terrible addition. I also added some thoughts about things that are longstanding issues in Tailwind that should be fixed. nmn.sh/blog/2024-11...
‘Reflow’ deserves more spotlight as a WCAG criterion. Visitors of a website should be able to browse content comfortably on a 320×256px viewport. That equals 400% zoom on a 1280×1024px screen but such an enlargement may also consist of 200% text-only + 200% UI zoom. www.w3.org/WAI/WCAG22/U...
Also, @joshwcomeau.com wrote extensive guidance on the subtleties of px vs. rem www.joshwcomeau.com/css/surprisi...
I never really found an ESLint config that’s fairly strict without going overboard So I went through hundreds of core + @typescript-eslint.io rules 1 by 1, hand-picking the severity and options for each. This project culminates all my years of experience with JS/TS so far github.com/kripod/eslin...
So ironic how JavaScript is among the most forgiving languages and yet TypeScript offers mind-boggling safety & convenience features built on top of such a flexible base.
I'll remember the world before and after this PR: github.com/microsoft/Ty... The new era of conditional types checking is coming in TypeScript 5.8!
“You either die a hero or you live long enough to see yourself become the villain.” Not quite literally but it’s so disheartening to see past role models showing their true colors.
True story: 14 years ago I wrote one of the letters of recommendation Guillermo needed to get a visa so he could live and work in this country. And now here he is congratulating the party of mass deportations. What the fuck, Guillermo. What the fuck.
Updated socials on my blog 🦋 to get rid of that confusing ‘X’ icon in the corner. It’s a great relief 💆 www.kripod.dev
You are up to date.