LibreWolf (Firefox) Hardware Acceleration on CachyOS (Archlinux)
Configuring LibreWolf/Firefox for NVIDIA GPU hardware Acceleration on CachyOS - Archlinux
My thoughts, musings, and researches in coding, software, and life.
Configuring LibreWolf/Firefox for NVIDIA GPU hardware Acceleration on CachyOS - Archlinux
When screenshot diffs are worth the overhead in a frontend suite, and when they become a flake factory that trains the team to approve blindness.
Year-end judgment on the 2025 tooling arcs, what held up across types, lint, frameworks, and tests, and what I would not repeat.
How to E2E auth-gated journeys without hitting a real IdP every run, storage state, route stubs, and the lies that still slip through.
When Playwright page objects pay off, and when they become a second UI framework that flaky tests hide behind.
TypeScript 6.0 as a bridge release, prepare defaults and deprecations without treating tsgo or TypeScript 7 as today’s default toolchain.
Biome migration lessons from a monorepo cutover, what breaks, how to stage the handoff, and when not to migrate mid-incident.
What Biome consolidates versus ESLint + Prettier, practical first-look notes for a late-2025 monorepo, when you already run ESLint and Prettier.
Use branded and nominal types for IDs and tokens, when brands prevent real mixups, and when they are ceremony TypeScript does not need.
Practical Vitest setup trade-offs for monorepos, config composition, parallelism, and workspaces without turning CI into a flag dump.
Explicit criteria for choosing unit, integration, or E2E, and the failure modes of “only E2E” and “only unit” strategies.
Use the testing trophy as a judgment framework, where unit, integration, and E2E pay off, and what over-testing UI chrome actually costs.
Use conditional and template literal types for real prop relationships and token unions, practical frontend TypeScript, not trivia.
Put generics on component APIs only when they justify the complexity, constraints, inference, and when any is a design smell.
Migrate render-prop APIs to hooks with judgment, when composition beats prop sprawl, and when a render prop still pays off.
Type and ship polymorphic as / asChild primitives, flexibility versus accessibility and TypeScript cost.
Compose Tailwind classes with clsx and tailwind-merge, conflict resolution as policy, not string order luck.
Put typed variants on primitives with CVA, and stop variant explosion before product nouns leak into the design-system API.
Place error boundaries at route and widget granularity, recover without blank-screen religion or toast-shaped lies.
Own toasts with queueing, live regions, and clear rules for when not to toast , notifications as a product surface, not confetti.
Decision criteria for controlled vs uncontrolled inputs, and when form libraries earn their dependency weight.
Sidebar and mobile navigation with concrete breakpoints and focus management , when CSS grid/flex beat another layout component.
Compare accessible UI kits on a11y guarantees, styling escape hatches, and ownership cost, pick on axes, not logos.
Layer a UI system from primitives to patterns to domain components, and decide what belongs in a shared package versus app code.
Deepen the Query boundary, when remote data belongs in a cache versus local UI state, and how global stores fail when they absorb both.
Draw the server-state vs client-state boundary, cache keys, invalidation, and the failure modes that show up in real product UIs.
When type-safe routes are worth the overhead over framework defaults, and how TanStack Router fits beside RR, Remix, and Next.
Compare file-based routing conventions on clarity, nesting, and escape hatches, pick on axes, not logos.
What in React 19 is worth adopting mid-2025 versus what you can ignore - migration without rewrite religion.
Wire prefers-color-scheme, an explicit toggle, and persistence without a flash, and keep the result accessible.
Token taxonomy for color, space, type, and radius: CSS custom properties as the contract between design intent and implementation.
Migration criteria between global CSS, CSS Modules, and utility-first, a decision table for teams that need coherence without endless debate.
A practical HMR mental model for Vite-era SPAs, what updates in place, which breakage patterns waste hours, and when a full reload is the honest fix.
Practical Sentry setup for SPAs, what to capture vs ignore, PII discipline, and release health without vanity dashboards.
Client vs server secrets in SPAs: Vite VITE_* honesty, what actually ships to the browser, and the failure modes that leak credentials.
Measure ESLint cost before debating rules, profile slow plugins, use cache and concurrency with evidence, and keep CI from becoming a lint tax.
Compare Next.js, Remix, and React Router on navigation, data, and deploy axes , decision criteria without tribe membership.
When Astro islands beat a full SPA, ship mostly static HTML, hydrate only the interactive pieces, and keep React where it pays off.
When a Vite SPA should grow server rendering, what SSR plugins actually own, the complexity tax, and when a meta-framework is the honest next step.
A minimal Vite + React SPA that stays honest, what the scaffold buys you, how I structure routing and env, and the moment a meta-framework pays off.
Decision criteria for single-page vs multi-page architectures, navigation, data, SEO, and team shape, without turning the choice into a framework war.
Which strict flags change day-to-day React and Node work, what breaks when you flip them, and how tsc, the editor, and the bundler each read your tsconfig.
A file-by-file TypeScript migration that keeps CI green, the sequence I use after JSDoc stops scaling, and the failure modes that turn leaps into rewrites.
Comparing husky, lint-staged, and nano-staged on DX and speed, what each owns, where hooks become a tax, and the stack I keep for frontend monorepos.
A practical migration from .eslintrc to eslint.config.js, what breaks in a monorepo, which gotchas matter, and the flat layout I keep after the move.
Shared ESLint and Prettier configs as packages, keeping package boundaries clean so lint stays a maintainable contract, not a copy-paste museum.
An explicit comparison of JSDoc-checked JavaScript and TypeScript, migration triggers I trust, and the trade-offs that actually show up in day-to-day work.
Using JSDoc as a bridge, what checkJs actually catches, what it quietly misses, and how I keep annotations from rotting into noise.
An honest case for JS-first small tools, when skipping the compiler is discipline, and the concrete moments it stops scaling.
Concrete pnpm workspace layout, peer-dependency traps, and the install failures that taught me to stop treating the lockfile as optional reading.
When a monorepo pays off versus when it is overhead, decision criteria from sharing UI and config without inventing a platform team.
How to properly use CSS custom properties (CSS variables) in React with TypeScript.
Create a reusable React template with Vite, Shadcn UI, and Biome.js for efficient development of small, specialized tools.
Dark and light mode is a feature that is supported by most modern web browser. This feature can be used in customizing how SVG is displayed.
My switch to Linux from Windows was smooth and rewarding, despite some compatibility frustrations. The customization and open-source joy make it worth the effort.
Use MDX to write content with React components in Next.js.
Exploring the benefits and challenges of using Next.js to build a personal website.
Syntax highlighting for Next.js site using rehype-pretty-code and shiki.
A guide on converting various image formats to WebP using the cwebp command-line tool and a custom shell script.
Switching from Windows to KDE Neon Linux, overcoming compatibility issues, and enjoying a customizable and user-friendly environment.