Yesterday
- As I was playing around with contrast-color(), I got a wild idea that you could use contrast-color() to invert its return value by nesting it: contrast-color(contrast-color(var(--some-color)). When would this be useful? Uh… Good question. I couldn’t come up with an example right...
This week
- In my first post on contrast-color() I demo’d using color-mix() to change a background-color on hover, but I will be honest… mixing black and white isn’t always what you want. It would be cool and helpful to coerce contrast-color() to return either 1 or -1 so that we could...
- Long term readers may wonder – VS Code, Ben? Really? Let’s not getting into that now, instead, just the issue before us. The problem before us is that we want to highlight just the active indent guide of the code in the editor. By default, VS Code highlights both the active...
- Every millisecond your JavaScript runs is a millisecond borrowed from your users. Here's how to be a better guest on the main thread....
- How to make a cigarette smoke effect using shaders and three.js....
Last week
- The setup for my notes blog looks like this: Content is plain-text markdown files (synced via Dropbox, editable in iA Writer on my Mac, iPad, or iPhone) Codebase is on GitHub Builds are triggered in Netlify by a Shortcut I try to catch spelling issues and what not before I...
- Here are some things I made in 2025: Pro-Wrestler or Roller Coaster A Fusion 360 Script for creating a Penrose Triangle in CAD A personal book recommendation tool, which used my archive of book reviews, the OpenAI API, and RAG techniques to give me personalized book...
- Making the most of inheritance when extending custom element classes....
- A reusable pattern for custom elements installation...
Two weeks ago
- I've created the <generate-html> Web Component, an LLM-powered tool that generates and renders interactive HTML or SVG images securely using Google Gemini or Chrome's built-in AI. It features a "Double Iframe" architecture for security, supports multiple providers, and has zero...
About a month ago
- A new way to allow elements inside a Shadow DOM to be targeted for accessibility or other reasons....
- My new hobby project....
about 1 month ago
- After almost 14 years on the Chrome team, Im moving onto a new chapter. Here is a look back at some of what we built together...
- Common JavaScript patterns....
about 2 months ago
- The Budget, 2026 Edition Let's cut to the chase, shall we? Updated network test parameters for 2026 are: 9 Mbps downlink 3 mbps uplink 100 millisecond RTT Regarding devices, my updated recommendations are the Samsung Galaxy A24 4G (or equivalent) and the HP 14. The goal of these...
- Try Grid Paper I’ve been getting into drawing dungeons on isomorphic grids. It’s fun but I was a little frustrated with the process of sourcing and printing out graph paper with an isomorphic grid on it. You have two bad options, basically: Download a low-res JPG you found on...
- I recently added a bunch of app icons from macOS Tahoe to my collection. Afterwards, I realized some of them were missing relational metadata. For example, I have a collection of iMove icons through the years which are related in my collection by their App Store ID. However, the...
2 months ago
- I'm looking for a new job....
Rows per page