Over the last month, I've been modernizing this site with one goal in mind: speed. The net result from that effort is a 90% reduction in page load time from 5 seconds to about 500 milliseconds. At Google, I learned page load time is highly correlated to engagement metrics including bounce rate and time on site. I've been focused on it ever since.
This is how I did it.
Hugo: I moved to a static site generator in 2014. Static site generators create webpages that load immediately. There are no database calls. Just fast load times. Initially, I used Jekyll, but now I'm Hugo, which runs faster because it's written in go instead of ruby.
Render: Render is a new cloud provider. I moved because of the seamless deployment, free https certificates, and a lightning fast network. Also, I compress JS and CSS during the build process through their platform. Plus, they have terrific customer support. Before, I ran Route53, CloudFront and S3 static site hosting which is far more complicated.
Cloudinary: Cloudinary is an image serving service that optimizes the image size, quality and format for the device and network connection. Since images are the largest assets, this change made a big difference.
In addition to these core infrastructure changes, I use two other components.
Algolia: Algolia powers the search. This is a long time coming after many requests. I use Render to create the search index and send it to Algolia after every new post.
Forestry: Forestry is a beautiful web client for static sites that makes it easy to write new posts. It integrates into Cloudinary for easy image insertion.
All these together should make it much easier to browse this blog and search previous posts.