Writing

Notes on sustainable web development, performance tips for websites and apps, as well as a few other musings.

Illustration of speed dial adjusted to the right, with rocket taking off on mobile and laptop in the background.

Testing a web page with PageSpeed Insights

PageSpeed Insights is a free performance testing tool by Google. In this post we’ll cover the basics of testing a web page with PageSpeed Insights, as well as how to understand the different test results.

Female protestor holding up cardboard sign with the words 'Less is more. It's eco-logical' painted on it.

“Use less. Use green. Buy green.”

By using less power, using green power, and buying from green suppliers businesses and individuals alike can reduce their carbon footprint. How would we go about applying this same thinking to website performance and sustainability?

Colourful video static

Approaches to video on the web

Video is becoming an increasingly critical part of the online experience. So how can you include video on a web page without hurting Core Web Vitals, performance or digital sustainability?

Website performance charts for several websites.

Using Treo's free Site Speed Test

In this post we'll look at how you can use Treo's free Site Speed Report to better understand real-user performance on your site, and make the case for performance in your organisation.

Illustration of two people moving charts on a monitor.

Core Web Vitals meets sustainability

Everyone wants to make sure their website's Core Web Vitals are up to standard. What if we told you that some of the very things you'll do to improve your site's Core Web Vitals can also help make it more sustainable!

The user interface of the Webflow site builder.

Improving Webflow Core Web Vitals

Webflow makes it easy for content creators and marketing teams to build stylish websites fast. But this can come with the risk to publishing a site with poor Core Web Vitals. This post covers some of the things to look out for when building with Webflow.

COP26 banner with purple globe. Glasgow COP26, in partnership with Italy.

COP26.org: A quick sustainability check

With COP26 about to take place in Glasgow, let's take a quick look at how the COP26 homepage holds up in terms digital sustainability. What's its carbon footprint, and can it be improved?

Close-up photo of iWatch measuring health and fitness

Tracking real Core Web Vitals scores

There are a few options when it comes to keeping track of your website's real world Core Web Vitals scores. In this post I'll cover some of the services or tools you can use, and some things to be aware of.

Inline skates on a wooden floor.

Using Cloudflare Workers to inline external CSS

Loading CSS from external files can slow down your site's initial paint, potentially hitting your Core Web Vitals in the process. In this short post we'll look at how using to use a Cloudflare Worker to inline the content of external CSS files.

Wind turbines standing in a grass field in Spain.

Reducing website carbon emissions

As our thirst for data, connectivity, and content grows, so does the portion of global carbon emissions attributed to the internet. In this post, we'll take a look at the steps frontend developers can take to make sites more efficient and better for the planet.

Pressure gauge in a box screwed into the wall.

Stress testing site performance

As developers, we're normally building and testing websites on devices with decent specs, so testing how your site performs over a slow network or on a low-powered device is one way to help ensure real world performance.

grey steel buckets on wooden floor

Proxying AWS S3 content with Cloudflare Workers

Using resources hosted by a third-party can seriously hurt website performance in a few ways. In this post, we'll cover how you can use a proxy to reduce the performance impact when hosting content in AWS S3 bucket.

white and black signs pointing in direction of various cities

Proxying Cloudinary image requests with Cloudflare Workers

Using resources hosted by a third-party can seriously hurt website performance in a few ways. In this post, we'll cover how you can use a proxy to reduce the performance impact when hosting images on Cloudinary.

Building a fast, sustainable personal website

This case study explores the design and development decisions I made when redesigning my personal website. These decisions help to deliver perfect Lighthouse scores and improved website sustainability.

Letter tiles spelling out 'WordPress' positioned between a mobile phone and a laptop.

Frontend tips to speed up your WordPress website

WordPress powers over 40% of the internet. It's a powerful platform that makes content creation possible for more people. In this post we'll cover some simple performance optimisation tips you can use to make your WordPress website faster!

Readle App - 500+ German Stories for Beginners to Advanced

Readle - App Optimisation & Consultancy

Having worked primarily on website performance, the chance to work on Readle's native mobile apps was a new challenge. Here's how we improved app speed and delivered greater user satisfaction.

Graffiti art of a black security camera painted in a white frame.

This website is a FLoC-free zone

I switched analytics away from Google late last year. Now, I've also added response headers that will exclude this site from FLoC calculations too.

white windmills in open fields during the daytime

The environmental case for website performance

What's the link between a faster website and climate change? In this post I'll explain how you can help the environment by focusing on website performance.

CSS programming language

CSS can probably do that

Rather than immediately reaching for JavaScript to handle on-page interactions, why not stop and think Could CSS do that? You'd be surprised, it probably can.

Screenshot of the Fathom Analytics dashboard (Source: Fathom Analytics)

Google Analytics Alternatives

There's an increasing number of privacy-focused alternatives to Google Analytics. This article covers a few options you can use to keep your website visitors information out of the hands of digital advertisers.

Person holding black android phone scrolling Twitter.

Optimising embedded content

Embedding content from Twitter or YouTube is pretty commonplace these days. However, the code these services provide isn't always the most optimised. Here we'll look at a few ways you can optimise pages on your websites that have Twitter/YouTube content embedded within.

White photo paper with printed icons in black and white.

Web icons in 2021

This post is taken from Optimised, the fortnightly web performance newsletter I run. In it we look at the different options that you can consider, and why you really should be using SVG in 2021.

Person holding black Android smartphone with Google search page on screen.

Core Web Vitals and Google Search

Core Web Vitals are a set of page experience metrics that will be making up part of Google's the search ranking mix from June, 2021. So, what exactly are they?

Person lazing under quilt blanket.

Lazy-loading embedded iframes

Lazy-loading iframes can lead to data savings for your users, faster page loads, and quick interactivity for your site.

Image with text 'Optimised' centered

Introducing Optimised

Optimised is a fortnightly newsletter focused on the ways website performance and optimisation can help your customers, your business, and the planet.

Weights in on the floor in a gym.

Reduce the Weight of Your Web Pages with the Picture Tag

Images often combine to make up the largest group of resources on a web page (in terms of file size). Therefore, optimising images is one of the easiest steps any website owner can take when looking at improving the performance of their website.

Photo of comma separated data.

Generate CSV Files from Data with 11ty

Eleventy is one heck of a powerful, incredibly flexible static site generator. This short guide will show you how you can generate CSV data files using Eleventy.

Photo of book and computer keyboard.

Boost branding and engagement with Open Graph meta tags

When we share content on social media we want it to be read. This blog posts introduces how Open Graph tags can be used to present eye-catching, consistenly branded shared content across social media platforms.

Screenshot of the redesigned DisplayLink homepage

DisplayLink - Homepage refresh & navigation improvements

A project which saw me redesign and rebuild DisplayLink's homepage and website navigation. A key driver was the desire to declutter the homepage and make different parts of the website easier to reach.

Photo by Pixabay on Pexels.

A quick guide to easy web performance wins

This post stems from a conversation I had with a good friend of mine last week. We were talking about how to boost website traffic, and conversions. As I explained to him, and as we'll get to in this post, there's more to the game than just fresh, keyword laden content.

Photo of a bonfire at night.

Dark Mode toggle for Svelte

This quick code note will go through creating a simple component in Svelte that allows us to switch the theme of our website between light and dark.

View overlooking Taipei city and Yangmin Mountain National Park in Taiwan.

Freelancing in Taiwan during the COVID-19 pandemic

As a freelancer, and someone who was working remotely in the months before COVID-19 you'd think not a lot has changed for me since. In this post I go through what life is like in Taiwan, and how the coronavirus pandemic has also led to a change in my daily working habits.

Screenshot of rotating buttons taken from the Markdown Cheat Sheet app.

Rotating buttons in CSS

Here's a really quick little code note that shows how to create rotating buttons using just a tiny bit of JavaScript and some CSS.

Banner for Markdown Cheat Sheet, the first Svelte app I made.

Building my first app with Svelte 3

After doing a few tutorials last month, I finally got around to creating my first app in Svelte. In this blog post I go through some of my first impressions on the framework as I start building with the training wheels taken off!

Screenshot from responsive tables Codepen by Fershad Irani.

Two options for making responsive tables for your website

I recently found myself having to create a website that presented a lot of data in tabular format. This post goes through two approached that I tried out. Firstly, using table markup and horizontal scrolling, and then looking at how it can happen with CSS Grid.

Screenshot of styled custom dropdown

Make a styled, custom dropdown

I was working on a recent project that required me to create a customized select dropdown. It had to clearly, neatly show two sets of data (jobs and locations), and look good in the process.

Image of working remotely from a cafe

What I've learnt in two months working remotely.

On the back of Buffer's 2019 State of Remote Work report, I take a look back at my transition from being office-bound to location independent. What's met my expectations, what's surprised me, and what challenges I've faced.

Cover image showing the final landing page created in this tutorial.

Build landing pages to promote webinars across different time zones

With the global nature of broadcasting online, many events - from sports tournaments to webinars - require promotion across multiple time zones. In this tutorial, I'll cover how to create a simple set of multi-time zone landing pages for a webinar series.

Photo by Fabian Grohs on Unsplash

Passing multiple arguments to an Eleventy custom filter

While working on a recent project, I came across a small problem. I needed to convert an event time from UTC to a particular time zone. I was building my website project using the Eleventy static site generator, so I felt that a custom filter would be the best solution to this problem.

Logo for Portable Text

Presenting Portable Text

In this code note I cover a couple of ways to build upon Portable Text for presentation.

Technology photo by Andrew Neel on Unsplash

Why I now run my website on Netlify and Sanity

Recently I moved my entire website from Heroku to Netlify. The key driver was to remove the $7 monthly cost of running on Heroku's 'Hobby' plan. It's also allowed me able to make the website more performant without losing the ability to add and manage content. Oh, and I was also able to build this blog into the newly migrated website pretty quickly too!

A photo of me while traveling in South Korea

'Hello, world.' A little bit about me.

This will hopefully be the first of many blog posts in which I cover content spanning web development, running a business, freelancing, and just general musings. Here's a little bit more about me, my hobbies, my past lives professionally and what I'm doing these days.