Blog
Articles about web development, design, performance, and related topics. Subscribe via RSS to keep up with new articles, or browse by topic.
- Figma vs Sketch in 2024
A practical 2024 comparison of Figma and Sketch, focused on collaboration, platforms, offline work, and handoff.
- What to test when Facebook ads aren't working
Improve Facebook ads with a clear objective, useful creative, controlled tests, reliable measurement, and budget decisions based on outcomes.
- Making Digital Advertising Decisions With Data
Use campaign data to find useful audience segments, test ads, and spend the advertising budget where it has a better chance of working.
- The Apps I Actually Use Every Day
A straightforward list of the default apps and services I use for mail, notes, photos, work, and everything in between.
- Native CSS Nesting Without Sass
Use native CSS nesting to keep related selectors and media queries together without turning the stylesheet into a maze.
- Font sizes and spacing that scale with CSS clamp()
Use CSS clamp() to create fluid type and spacing with sensible minimum and maximum values.
- 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.