Accessibility
Partial Accessibility Is Sometimes Worse Than No Accessibility at All
Partial accessibility does not split the difference between working and broken. It often delivers an outcome worse than total inaccessibility, because it fails you only after you have invested in the promise that it would not.
Half-finished accessibility is not half a win. Half-done accessibility tells the world you knew about accessibility and decided to ship it half-unfinished anyway. There is also a legal dimension to this story that organizations consistently underestimate.
Partial accessibility creates a paper trail. The accessible parts of your site demonstrate that your organization has the knowledge, budget, and technical capacity to comply with WCAG — some of the time. The inaccessible parts, sitting alongside the accessible ones, demonstrate that the failure to comply elsewhere was not due to ignorance or impossibility. It was a choice. That distinction matters in a Title II investigation, Title III demand letter, Section 504/509 complaint to a federal funding agency, and before a judge.
Plaintiffs’ firms love partially complete patterns because they foreclose the most common accessibility defenses: that the standard was unclear, that remediation was infeasible, or that the organization was acting in good faith and had not gotten to it yet. An accessibility statement on a home page that links to an inaccessible application is not evidence of commitment. It is evidence, period. Organizations that ship partial accessibility are often handing, without realizing it, the strongest evidence in the case against them to the opposing counsel.
CSS
CSS-DOS - An entire ’80s PC in a stylesheet
An 8086 CPU, chipset, 640 KB RAM, floppy drive, keyboard, mouse and screen — in one .css file. It’s a morbidly obese 300+ MB of spec-compliant CSS, abused beyond recognition: some of the most delightfully painful and wasteful code ever cursed to exist.
It boots Microsoft Windows 1.01 and its namesake MS-DOS, and runs real ’80s software. Yes, it runs DOOM (barely).
GitHub repo here.
24 CSS Link Hover Effects: Free and Easy to Copy
A curated collection of modern, copy-ready CSS link hover effects, from subtle to expressive.
How to scale elements and their layout with CSS "zoom"
You probably know that you can use the scale function scale() or even just scale property to transform and change an element's size.
The thing with scale is that it only changes visual appearance and the layout size of the target element remains the same.
Today I learned there's also the zoom property. zoom "really" scales the element and its layout.
How to create awesome staggered animations in CSS
Learn how to create staggered animations in CSS using sibling-index() and sibling-count(), with practical examples, fallbacks, and accessibility best practices.
Rombo | Animation library for Tailwind CSS Library
tailwindcss-motion is a Tailwind CSS Plugin made at RomboHQ. It’s a simple, yet powerful, animation library with a simple syntax.
Vivace | animate with attributes
Compose entrances, springs and staggers directly in your markup. A tiny engine handles when — scroll, hover, click, focus — and pure CSS handles how.
JavaScript
I stopped destructuring everything
I used destructuring every object in JavaScript. Here's why keeping objects intact often makes code easier to read, debug, and maintain.
SolidJS 2.0: A React Developer's First Look at Signals and Async
SolidJS 2.0 lands first-class async, a new Loading boundary, and signals. Here's what caught my eye after years of writing React.
html2realpdf - Generate a real PDF, not a screenshot
Generate selectable, searchable, vector-based PDFs from HTML in the browser. Written in Zig, compiled to WebAssembly, and packaged with a typed TypeScript API.
Screenshot-based PDF tools turn a page into an image. html2realpdf keeps text as text, links as PDF annotations, fonts as embedded subsets, and supported graphics as vectors.
The text includes Unicode mappings, so people can select, copy, and search the result. Tools and LLMs can read the document text without first running OCR. Text-heavy documents are also often smaller and stay sharp at every zoom level.
See the CSS support matrix for the current layout and rendering coverage.
Testing React Server Components: Vitest Patterns for Async Boundaries and Mock Strategies
React Server Components change how applications render: components run as async functions on the server, not the client. Testing them requires different tools and patterns. This tutorial builds a testing strategy on three tiers: unit tests for extracted business logic, integration tests for Server Components with mocked boundaries, and E2E tests reserved for hydration and browser-dependent behavior.
UX
UX Components
A practical guide to UX components — what they are, when to reach for them, and when to choose something else instead.
Miscellaneous
The AI strategy trap
The strategy for these AI companies is to get their product embedded into as many of your workflows, products and habits as possible before anybody starts seriously asking, who is going to pay for it all?
The monetary, environmental and ethical costs of AI are real, and somebody eventually has to pay them. Right now, that somebody paying for it is an investor betting on future dominance. But, make no mistake, once all that venture capital money dries up, we as the users of the product will be footing the bill.
NameThat — the visual dictionary of UI
See the element, learn its real name, and prompt your coding agent with precision. Double-press any word on the site for a plain-English definition.
FracturedJson Web Formatter
A JSON formatter that produces human-readable but fairly compact output.