Latest posts

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.

Create Linux packages from source with CheckInstall

If you have Linux for a while, you might have tried installing something from source. However, removing it again can be a slow and tedious process. CheckInstall makes it easy to manage software installed from source by creating standard binary packages first.

JavaScript NaN is a number

This just caught me out so I thought I would share it here as a warning to others. In JavaScript, NaN is a number. Seriously. The property that specifically means “not a number” is a number.

More reasons to switch to HTTPS

There are lots of good reasons to switch to HTTPS. It protects your users and your site from third-party interference, it lets you use the much faster HTTP/2 protocol, and it might even give you a little SEO boost. For more details, and even more reasons to switch, check out Scott Helme’s recent post on HTTPS. And, thanks to Let’s Encrypt, switching to HTTPS is now both free and extremely easy.

Run JavaScript on window resize

The JavaScript resize event fires continuously while the window is resizing, which is a problem for responsive web design. Luckily, it is easy to implement a custom event that only fires after the window has finished resizing.

You still might not need jQuery

I spotted a link to Chris Ferdinandi’s post on ditching jQuery recently and I really enjoyed reading it. It reminded me of You Might Not Need jQuery and You Might Not Need jQuery Plugins, both of which are excellent resources for writing vanilla JavaScript. I often end up using jQuery for simple tasks, but the potential impact on performance makes native JavaScript look a lot more attractive.

Normalize headings redux

A little while ago, I wrote a PHP class to promote and demote headings in HTML content so that they fit in with the surrounding document outline. Since then, I have found a much simpler method, using regular expression substitutions with callbacks. As a bonus, here is how you do it in four different languages.

Making web pages go fast

Performance matters, especially for the current generation of multiple megabyte websites being pushed down flaky mobile data connections. Andrew Smales has posted some really useful tips on making web pages go fast. Take note!

Even better media queries with Sass

In a previous post, I described a Sass media query mixin that makes it a bit easier to generate CSS for old versions of IE that don’t support media queries. The idea was to use a global variable to decide whether or not to surround the CSS rules with min-width media queries. Modern browsers get a mobile first responsive site and old versions of IE get the equivalent of the largest breakpoint.