Blog posts

All 161 of my blog posts, most recent first...


Positioning popover elements (pseudo-anchoring)

The connection between communication languages and programming languages

Making a selected value readable when the text is long

When should we use components and when should we just use HTML?

The development burden of user choice

Not enough or too much data

Please stop using flags to represent languages

Why should we care about Web Accessibility?

Learning TypeScript

Rebranding Tips - Part 4 - Typography

Rebranding Tips - Part 3 - Colours

Rebranding Tips - Part 2 - Brand Names

Rebranding Tips - Part 1 - Logos


What to Validate on a Form

Pronunciation of Terms in Web Development

How Widespread is Ad Blocking?

Practical Tips to Reduce your Carbon Footprint

WordPress to Eleventy - Part 2, The How

WordPress to Eleventy - Part 1, The Why

Who'd be a front end developer?

Prototyping in CodePen

UI Performance - Critical Rendering Path Optimisation


CARPET - A Front End Checklist

How I'd Learn Front End Web Development Now


Emmet - Write HTML and CSS Faster

Progress Indicators

New Image Formats - WebP and AVIF

Transitioning to Modern JavaScript


Learning to Write Code that is Good Enough

Reasons for Developers to Have a Blog

The Dangers of Logic in CSS

Clicking Off Things to Close Them

Tips for Working from Home

Print CSS Tips


Switching APIs

Safer Passwords

Edging Out of IE Support

Performance Perception Trick: Processing Lists Faster

Should Designers Be Able to Code?

What Techies Tweet

When to Reach for a Framework (and When Not To)

Hiding UI Elements


What I Learned in 2018

The DOM Diet and Year Pickers

Why Are We Making Web Development So Hard?

Learning Experiences as a Freelancer

Super Fast Tree View in JavaScript

Stop Linking to Nowhere

Google Analytics - Why You Should Replace IDs in URLs

Experiment: Font Size vs Colour Contrast

Making Icons Accessible

A New Found Appreciation for Images on the Web

How to Be a Good Designer

Lightning Fast Filtering in JavaScript

Accessible Colour Contrast

What I Learned in 2017


Native Browser Controls Rule

Do IT Qualifications Hold Value?

Shared User Accounts

Setting Performance Targets

To DOM or Not to DOM?

Speed, Usability and Speed

Component World

Different Conditional Syntaxes in JavaScript

Hacking Borders

Take a Tour

Why It's Still Worth Learning Bootstrap

Presenting Multiple Layouts

Measuring Front End Performance

Front End Performance Enhancements

Precision Level in CSS

The Welsh Language Conundrum

Pet Hate: Click Here

HTML Semantics - Header or Sidebar?

Reorganising Data Client Side

Measuring Readership

Talking to Machines

Learning the Right Things

International box-sizing Awareness Day

iOS vs Android vs Windows in 2017

Opera Neon - First Impressions

Snark Overflow

Blogging Nostalgia

The End of the EU Cookie Law

Cut the Crap!

What I Learned in 2016 (Part 3)

What I Learned in 2016 (Part 2)

What I Learned in 2016 (Part 1)


Code Neat Freak

Is UX Design Really a Thing?

Displaying Options in a UI

Emotional Response

Let Off the IE9 Leash

A/A Testing

Click Fear

Bad Web Dev

When to Hide and When to Disable

Getting Feedback on Codepen Demos

Beautifying Native Form Elements

Star Wars Mini Projects in Codepen

Web Animation Tips

Mother Nature in Web Design

Lazy HTML :(

Ordering CSS Properties A-Z

What to Look For in a Web Designer or Design Agency

Can I Track It?

Google Maps - The Bits They Don't Tell You

Tools of the Trade

Learning Flexbox

Loading More Items

Boosting Web Performance

Bilingual Equality with a Splash Page

Website Redesign -

Setting Default Styling for Custom UI Components

What I Learned in 2015


Easier Colours in Web Design

Developing in Codepen

Questioning the UX of an App I've Never Seen

Forgotten Passwords


What I Learned in 2014: Part 3 - The Best of the Rest

What I Learned in 2014: Part 2 - Javascript and Google Maps

What I Learned in 2014: Part 1 - HTML, CSS, Fonts and Images

If Facebook had a Yawn Button

My New Website


How to choose the right web host


How to pick the right domain name

Static Website or Content Management System?


Good web design – following conventions

Fighting Spam

Twitter explained simply

Web traffic through quality links


My website is 5 today!

Monitoring your Marketing with Unique URLs

Don't put all your eggs in Google's basket

Hits schmits! What do Web Statistics really mean?

Need a website? Confused about what you need? Read this.

My Firefox Add-ons

Online ways to launch a website

Web Development - it's not like building a shed

The new language of Social Media

Marketing through Facebook, for free

My Software Preferences

Moving from Print to Web in Stages

Amazon - design a 4 year old can use

Google's Personalised Search


I want an ecommerce site. Maybe you don't?

eMarketing Award Distinction :)

The Cheap Web Design Market

The Information Hungry Search Box

Website Design - the Finishing Touches

Basic Website Integration

Web Design for the non-designer

Beat the Credit Crunch - Move Online

Content Management Systems explained

Web Design for Different Screen Sizes

Links, link exchanges and strategies

What is a website visitor worth?

Google Chrome - first impressions

The Web 2.0 concept - the basics

The CIM eMarketing Award