New hosting

After years of hosting this blog on Netlify, I’ve decided to finally move it to my Dokku server hosted with Linode. Don’t get me wrong Netlify is great, but I realised I wanted a bit more control over my own hosting and Dokku gives me that. I’d like to spin up a Gemini site at some point in the future and hosting on my own server should make that much easier.

After playing around with various buildpacks to build the site on Dokku I ended up settling on a custom Dockerfile config that works great and means I can deploy in less than two minutes.

Read on →

COVID-19 is raging out of control (especially in the US, but don’t think you’re better off in Britain; they are third on the list), but you wouldn’t know it by listening to the government. New York City is in “phase 3” of re-opening, which included limited re-opening of restaurants (although this has since been reversed). The reality is that COVID-19 does not give a shit about government guidelines and is continuing to spread regardless.

As of the end of June there have been over 500,000 confirmed deaths from this disease, and based on the evidence, even if it doesn’t kill you it can take months to recover and even leave permanent damage. We’re still trying to understand the effects COVID-19 has on the body and research is starting to tell us some horrifying facts. If you think this is “just like the flu” think again. Some of the more onerous complications that appear to be caused by COVID-19 are abnormal blood clotting in the lungs, liver, kidneys, and heart and serious and potentially fatal neurological disorders. Health workers are struggling to cope.

All this to say, you do not want to get this virus. So I’m urging you all to take the necessary precautions. Wash your hands on a regular basis, for at least 20 seconds. Wear a mask when you need to run an errand (such as shopping for groceries). If you must socialise, meet people outside (the risks are much lower) and practice social distancing. And for the love of $deity stay out of the pubs!

Plasmatron Shader

I’ve been interested in computer graphics for as long as I can remember. The reason I started programming at all was because I wanted to make things happen on the screen.

Recently I’ve been playing around with fragment shaders. Fragment shaders are tiny programs that run on the GPU and compute the colour of individual pixels (fragments). They do this incredibly quickly because the GPU has a large number of simple processing cores, often numbering in the hundreds or thousands, to enable massive parallelisation.

Read on →


The murder of George Floyd has sparked outrage across America and the rest of the world, and rightly so. The death of so many members of the black community at the hands of the US police is horrifying and utterly heartbreaking.

That this has happened against the backdrop of a global pandemic just makes things worse.

Read on →

I recorded a video of me playing “Heartbreaker” by Led Zeppelin. Hope you enjoy it! on Catalina is a disaster. How did Apple manage to replace iTunes with something worse?


Neil Peart, the drummer and lyricist of progressive rock band Rush, has died, CBC News and Rolling Stone report. According to the reports, Peart died on January 7 in Santa Monica, California after a years-long battle with brain cancer. He was 67 years old.

Renowned for his technical expertise and unique performance style, Neil Peart was considered by many to be one of the best rock drummers of all time. He retired from professional drumming, and Rush, in 2015. Find a statement from bandmates Geddy Lee and Alex Lifeson below.

This makes me very sad. Neil Peart was legendary. Such an incredible musician.

For a good number of years I was using Basecamp’s Pow for local web development and one of my favourite features was the in built local DNS resolver that meant that *.dev would resolve to This mean that I had a unique hostname for every site I was building and running locally which I have found incredibly useful.

Unfortunately Pow no longer sees active development (the GitHub repo has been archived) so I wanted to see if I could set up the same kind of local resolver on my Mac without using it.

It turned out to be pretty straightforward!

Read on →

Laura González:

In elevating frontend to the land of Serious Code we have not just made things incredibly over-engineered but we have also set fire to all the ladders that we used to get up here in the first place.

Carter Sande:

The <a> tag is one of the most important building blocks of the Internet. It lets you create a hyperlink: a piece of text, usually colored blue, that you can use to go to a new page. When you click on a hyperlink, your web browser downloads the new page from the server and displays it on the screen. Most web browsers also store the pages you previously visited so you can quickly go back to them. The best part is, the <a> tag gives you all of that behavior for free! Just tell the browser where you want to go, and it handles the rest.

Lately, though, that hasn’t been enough for website developers. The new fad is “client-side navigation”, where instead of relying on the browser to load new pages for you, you write a bunch of JavaScript code to do it instead. It’s actually really hard to get it right—loading the new page is simple enough, but you also have to write code to display a loading bar, make the Back and Forward buttons work, show an error page if the connection drops, and so on.

So much this! The trend towards building a website/web app as a Javascript front end talking to an API makes web development more complicated than it needs to be. Many of these sites could (and should) be server rendered HTML.

← Older