John Hughes — Web development and other interesting things

Hello. My name is John Hughes and I am a web developer, occasional web designer, and lapsed ecologist. This is my website where I write about web design and development and anything else I find interesting.

Latest posts

Brutalist web design

David Bryant Copeland has coined the phrase brutalist web design to describe what I have been thinking of for a while as a mostly default approach. He explains it better than I could, but at its core is the principle that HTML on its own provides usability, accessibility, and speed and that we should think carefully before we change or even remove these benefits.

What we wished for

Microsoft Edge is ditching its own rendering engine in favour of Google’s Blink engine. Everyone loves Google and Chrome, so this is a good thing, right? Perhaps not. As Wilto reminds us, we have been here before.

WordPress excerpt ellipsis

An ellipsis is the sequence of dots that appears at the end of something that has been truncated. In WordPress, the default ellipsis added to excerpts is surrounded by square brackets: “[…]”. If you don’t like it, you can change it with a filter.

Remove WordPress parent theme templates

WordPress lets you extend themes by creating “child” themes. If the parent theme includes templates that you do not want to appear in your child theme, you can use a filter to remove them.

Ignore committed files in Git

You can prevent files from being added to a Git repository by adding them to a .gitignore file. However, if a file was previously committed to the repository and you want to remove it and ignore it from now on, you need to perform an additional step.

Easy label definitions for WordPress custom post types and taxonomies

When you define a new custom post type or taxonomy in WordPress, you need to set labels for all the different buttons and links in the interface. This is usually a tedious process of writing each label individually. Here is a function to make the process quick and easy instead.

Completely reset a Git repository

If you have added files to a Git repository since your last commit and you want to completely reset the repository to that last commit, you need to run reset and clean.

Hide the WordPress content editor with Advanced Custom Fields

You can use Advanced Custom Fields to hide the main content editor in WordPress. However, this becomes unreliable when you have multiple custom field groups. Here is a more reliable method using a single, dedicated field group to hide the editor.

Bash prompt tricks

Did you know you can customize your Bash prompt? The possibilities are endless, but here are few simple tricks for displaying some more useful information in your terminal prompt.

How to install software in Debian and Ubuntu

There are lots of different ways of installing software on Debian and Ubuntu. Here is a quick overview of the most common methods of adding software packages to Debian-based Linux distributions and when you might want to use them.

Principles of adult behaviour

Here are John Perry Barlow’s 25 principles of adult behaviour, written in 1977, emailed to his friends in 2007, and shared by Jason Kottke following Barlow’s death in February 2018. I am reproducing them here as much to remind to myself as to share with others.

SVG and CSS flag icons

Flag Icon CSS is a wonderful collection of SVG country flags, including CSS for easy integration with your site. I can’t believe it has taken me so long to find it. Thanks to Lipis for putting this together!

TLDR pages

If you want to know how to use a particular terminal command, you can read its man page. But that might take all day. TLDR pages are like man pages, but they’re short, practical, and easy to understand. I can strongly recommend them.

Modern JavaScript for ancient web developers

I really enjoyed reading Modern JavaScript for Ancient Web Developers by Gina Trapani. And it’s not just for the ancients—there are so many useful points and links, even an experienced front end developer could learn a lot from it.


I recently discovered SVGOMG by Jake Archibald. It acts as a GUI for SVGO, an incredibly useful SVG optimization tool. It you do anything with SVG images on the web, check it out.

You might not need JavaScript

You Might Not Need JavaScript demonstrates some clever, and some less well known, HTML and CSS techniques that might just make some of your JavaScript redundant. Together with You Might Not Need jQuery, it shows just how much you can do with web standards in a modern browser. Worth remembering!

An explicit guide to Git

For those times when you’ve done something wrong in Git and you have no idea how to fix it, Katie Sylor-Miller’s dead simple Git commands might just save you and your project. There’s also a Twitter account. Warning: explicit lyrics.

A complete guide to flexbox

Where would we be without CSS Tricks? Chris Coyier’s complete guide to flexbox is exactly what it says it is: an invaluable reference for all things flex. I would be lost without it.

SSH aliases and Git

If you use SSH from the command line, you can use aliases to avoid having to remember usernames, domains, and IP addresses. You can also use those aliases with anything else that communicates via SSH, including Git.

File systems for removable storage

I recently wanted to reformat a memory stick so I could move a big file between two computers. It should have been easy, but instead it sent me down a rabbit hole of options for file systems. Here is what I found.