A New Website and the Dangers of Stupid Optimization
So, it has been a month since I last wrote a post here. The lack of posts is not a function of time, but rather of friction. Along the way, I learned a valuable lesson in product design that I think might be helpful to others.
For the past few years, I have used a static site generator called Pelican as the main way to update this blog. The concept behind these generators is simple: get rid of all the bloat that comes with a typical Content Management System like WordPress and replace it with simple scripts that generate raw HTML files. The idea is that it is much more efficient to serve simple HTML pages, which is ultimately what blogs are about.
Or so I thought.
The adage of static site generation is that you might update a blog once a day or even once per week, but the blog is downloaded from dozens to millions of times per week. So, it would seem to make sense to optimize the experience for the reader, since ultimately that is the action that happens most frequently.
That optimization though is completely incorrect, because the only reason those readers want to visit a blog is for new posts. Therefore, the only optimization that should take place should focus on making the writing experience as easy as possible for the writer.
Even with some additional scripts that I wrote to make Pelican more palatable, the reality is that it was a real pain to actually write. I had to fix the filename perfectly so that Pelican would read it, I had to run the pelican
command line through a script I wrote, then I had to sync all the files to my server so that it could actually be viewed. Whenever I was done with a post, I had another 10 minutes of work just to get it launched.
Blogs shouldn't be work if they are going to be successful. So I transferred everything to Ghost (learning some Node along the way). The idea here is to have a simple but functional CMS, where I can write posts quickly and then ship them out with a click of a button. That's the optimization that matters, and ultimately the page load time feels roughly the same as a static site.
The lesson here is to always focus a product on content creation, because so long as the quality (and quantity!) is good, the content consumption aspect will (mostly) take care of itself.