Intro
Thoughts on web development, design, and building things for the web. Practical notes, experiments, and lessons learned along the way.
Blog
- Using HTML Attribute Values Inside CSS With attr()
CSS attr() reads HTML attributes for generated labels and typed calculations. Use working examples, check support, and handle missing or invalid values.
- Smarter Responsive Calculations With CSS round()
CSS round() snaps responsive values to useful steps. See rounding strategies, spacing scales, and a column calculation, with browser support checks.
- What the Browser Already Does Without a Framework
Before adding a frontend framework, check what HTML, CSS, forms, responsive images, preferences, and browser navigation already provide.
- Why I Keep Fonts, CSS, and JavaScript With My Site
Self-hosting CSS, JavaScript, and fonts keeps critical dependencies versioned, predictable, and close to the page that needs them.
- Does a Small Website Actually Need a Cookie Banner?
Start by inventorying storage, analytics, advertising, and embeds; a site with no optional tracking may have nothing to ask consent for.
- How I Organize My Hugo Site
A predictable Hugo structure for content, page resources, layouts, assets, static files, and configuration.
- When to Use Hugo Shortcodes or Render Hooks
Use render hooks to change normal Markdown output and shortcodes for custom content with meaning Markdown cannot express.
- WebP vs AVIF vs JPEG for Websites in 2026
Choose an image format by measured size and visual quality instead of assuming the newest option always wins.
Projects
- Media Cheat Sheet
Social media image sizes, video and advertising specifications, and downloadable templates in one place.
- ShutterCount
Check your camera’s shutter count from an original JPEG or RAW file with a free browser tool.
- The Colophon
A curated collection of creative website designs, with details about their layouts, technologies, and fonts.
- Shelf
A Chrome extension for saving visual ideas, screenshots, and web references in a private, local library.