Intro
Thoughts on web development, design, and making things for the web. Sometimes tutorials, sometimes experiments, and occasionally something else.
Blog
- Better Line Breaks With CSS balance and pretty
Use text-wrap balance for short headings and text-wrap pretty selectively for longer copy without hard-coded line breaks.
- Why 100vh Doesn’t Always Fit a Mobile Screen
Choose svh, lvh, dvh, or a flexible min-height when mobile browser controls make 100vh an awkward fit.
- Keeping a Website Usable When JavaScript Fails
Build content, navigation, and forms on working HTML so one failed script removes an enhancement instead of the whole page.
- HTML Features That Can Save You Some JavaScript
Use native disclosures, dialogs, popovers, form attributes, and responsive images before rebuilding their basic behaviour.
- Why My Personal Website Does Not Use Analytics
I do not need visitor profiles to publish articles, projects, and photographs, so my personal site collects less and loads less.
- The HTML Details That Make Forms More Accessible
Build clearer forms with visible labels, autocomplete, connected help and errors, fieldsets, and visible focus.
- When a Control Needs aria-label
Use aria-label for genuinely unlabelled controls while keeping visible text and native elements as the first choice.
- Making Links Easy to Recognize
Make links recognisable with underlines, clear focus states, useful text, and behaviour that does not surprise the reader.
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.