Blog
This is where I intermittently share my explorations, guides, and rants on web development and adjacent topics.
2025–
My blog is currently on hiatus indefinitely.
2024
- CSS light-dark()
- Your CSS reset should be layered
- "Web components" considered harmful
- A practical guide to using shadow DOM
- When will Apple focus on Safari?
- Some use cases for revert-layer
- Dynamic server islands
- Server-side custom elements
2023
- React Server Components: the Good, the Bad, and the Ugly
- CSS-based state management
- Making live regions easier
- A custom element base class
- Web components
- HTML: The Bad Parts
- Different ways of defining custom elements
- Some use cases for display: contents
- Presentational shadow DOM
- Simple tabs
- Publishing dual ESM+CJS packages
- The definitive guide to using Bun
- Hover triangles
- A portal custom element
- Making tooltips work on touchscreen
- Building a tooltip using the Popover API and web components
- What is a component anyway?
- Web components are not components
- .hello-world
- Stop using client-side routing everywhere