Blog
Articles about web development, design, performance, and related topics. Subscribe via RSS to keep up with new articles, or browse by topic.
- Aligning Nested Layouts With CSS Subgrid
Use CSS subgrid when items inside a nested grid need to align with tracks from the parent grid.
- Loading videos only when they're needed
Delay video downloads with preload settings or Intersection Observer, depending on whether the video waits for a click or plays automatically.
- Cutting Elements Into Shapes With CSS clip-path
Use CSS clip-path to reveal circles, polygons, insets, and other shapes without editing the original image.
- What Makes a Website a Progressive Web App?
A practical look at service workers, web app manifests, installation, and the cases where a Progressive Web App is worth building.
- A Vim Cheat Sheet for Commands I Keep Forgetting
A practical Vim cheat sheet for movement, editing, visual selections, search, files, splits, and the commands that are easiest to forget.
- Filtering Content With the CSS :has() Selector
Use CSS :has() and checkboxes to build a small content filter without JavaScript.
- The ABCD Framework for YouTube Ads
Use Attention, Branding, Connection, and Direction as a practical review framework for YouTube ad creative.
- Setting Up SSH Keys on Ubuntu 20.04
Create an SSH key on Ubuntu 20.04, copy the public key to a server, test the login, and only then consider disabling passwords.
- Installing Node.js on Ubuntu 20.04
Install Node.js on Ubuntu 20.04 with NodeSource or use nvm when a development machine needs several Node versions.
- Google Analytics 4 vs. Universal Analytics
GA4 uses an event-based model, so its users, sessions, conversions, and engagement metrics should not be compared directly with Universal Analytics.
- Jekyll vs Hugo: Two Good Static Site Generators
Compare Jekyll and Hugo by build speed, templates, plugins, built-in features, and GitHub Pages support.
- Writing for SEO Without Writing for Robots
Write useful SEO content by matching search intent, structuring the answer clearly, and removing the habits that make pages sound written for algorithms.
- Facebook Ads vs Google Ads vs Microsoft Ads: Start With Intent
Compare Facebook, Google, and Microsoft Ads by audience intent, reach, creative formats, cost, and the work each platform requires.
- Adding structured data with JSON-LD
Use JSON-LD structured data to describe products, articles, events, and other page content to search engines.
- What Google Search Console Is Actually Useful For
Google Search Console shows how Google crawls, indexes, and presents your site, along with the queries and pages producing search traffic.
- Mastodon Is a Network, Not One Social Website
Mastodon is a network of independently run social servers. Here is how federation, timelines, moderation, and choosing a server work.
- Improving Core Web Vitals Without Chasing a Perfect Score
Improve Core Web Vitals by fixing slow main content, delayed interactions, and unexpected layout shifts with field data as the guide.
- Figma vs Sketch: The Workflow Matters More Than the Feature List
Compare Figma and Sketch by platform support, collaboration, files, prototyping, plugins, and the workflow your team already uses.
- Eleventy vs Hugo: Which One Fits Your Workflow?
Eleventy and Hugo both build good static sites, but their languages, templates, and built-in features suit different workflows.
- What a Static Site Generator Actually Does
A static site generator combines content and templates before deployment, producing HTML files that a web server can deliver directly.