A dive into serving brotli compressed assets

Addy Osmani’s talk about performance at the last FFConf had a small segment on serving brotli compressed assets, as opposed to gzip. The claims are that brotli produces smaller filesizes than gzip, so if you want to squeeze some extra performance out of your site, then just switch over and reap those rewards! The talk, however, was light on the implementation details. Well, I decided to take a look to see how easy the switch would be.


I’m not going to extol the virtues of encrypting your site and enabling HTTP/2. The advantages should be pretty obvious by now. The real issue is that when you’ve got your site(s) and your clients’ site(s) encrypted, you’re left with local development versions of the sites which are now at odds with the live version. And it’s always best to mirror your dev and live environments as much as possible to avoid those last-minute deployment panics. Like when I deployed the all-new Clearleft site only to find I hadn’t updated the image links to HTTPS so none of them loaded. Queue a frantic 10 minutes of find and replace throughout the site templates while people were telling me the site was b0rked. Fun times.

Using NPM as a Build Tool

A year or so ago, I came across this post by Keith Cirkel, How to Use npm as a Build Tool and it stuck with me. At the time I was transitioning to gulp from grunt both personally and for Clearleft projects. We had a discussion about the feasability of going full NPM and decided that using gulp was still the best for us. There are plenty of great reasons to use grunt or gulp and we will continue to do so at Clearleft, but for my personal site I decided to experiment with pure NPM. And in so doing, show how easy it can be, particularly for small sites, to set up some simple tasks.

Games of Shame

Some time around the last Steam sale I knew I couldn’t keep buying games I never intend to play. Or, at least, do not have time for. If I cared about the game, I would have bought it sooner, really. Instead, all I could feel was the burden of games unfinished. The list of which was ever growing. So I decided to make a literal list of those unfinished games and try to beat them before moving on. Or at least make a good dent. And here is that list. My games of shame:

The Proposal

Some of you may know that several weeks ago I got engaged to my amazing girlfriend. However, I am not the type of person who does things… traditionally. Proposals are infrequent but special events, not unlike weddings themselves, and I wanted to treat it as such. But not boring special. Anyone can go to a fancy restaurant and have their beloved find a ring in the bottom of a glass of champagne. That’s not me. That’s not us.

Installing Letsencrypt on Ubuntu 14.04 and nginx

Here at the Clearleft towers we use DigitalOcean and our servers run Ubuntu 14.04 and Nginx 1.8.0.

Scraping Twitter Feeds with NodeJS

Well, the time finally came. I had been using Remy Sharp’s handy little twitter.js script to show one tweet on the homepage of my latest live site, Pulse, and Twitter’s API changes finally caught up with it.

Setting up a FreeNAS server

Occasional Git

Welcome to Occasional Git! For when you’re working on your own, on small-ish sites. These are the things I encounter sometimes only once a month, if that. I’ll be supplementing the commands with examples I’ve used personally.

The Case of the Linux Box and nginx

Following on from the last post which laid the landscape covering the whys, we now get on to the hows.


Welcome, fine folks, to the all-new gablaxian.com. It was back in May when I vowed to take this back to basics in a blog post called, ‘The Rebrand’. I wanted to get a bare-bones server and configure it the way I wanted, from the ground up. Well, I got the server about half a year prior to that actual post. I then proceeded to do bugger all with it.