An Experiment With My Website


The real problem is that programmers have spent far too much time worrying about efficiency in the wrong places and at the wrong times; premature optimization is the root of all evil (or at least most of it) in programming

—Donald Knuth, Computer Programming as an Art (1974)

So I’ve recently gotten the urge to tinker around with my website / blog (which really has only existed as a development playground up to this point, seeing as I’ve only ever written a handful of small posts across the years). The past several weeks I did a survey of the most popular website stacks — everything from the classic (and overwhelming at this point) Wordpress platform to the many nerd / developer-centric “markdown-to-static” site generators to newer contenders like Ghost.

These are perfectly acceptable solutions in their own ways, but honestly they all seem to have way more features than I need (vastly increasing the layers of complexity when there is something that I do want to tweak). Additionally, I’ve found that having a monolithic build system in place kind of shields me from what I as a software developer want — a holistic understanding of everything that is happening when I write and publish something online.

Of course, there is always going to be a certain level after which I no longer understand what’s happening. Whatever intricate webserver code Github Pages is using to serve this page and the CDN caching happening behind the scenes is far beyond what I can look into for right now. But as a primarily web-centric software guy, I do feel a strange sense of duty to be conscious of as many of the actual bits that I send up to the server as I reasonably can.

To that end, I’ve embarked on a journey for trentshell.com to start from the ground up and only add a file as it’s needed. As of this writing, I have an index.html file, this document I’ve writing now, a shared styles.css file, a CNAME file to configure the domain, and an atom.xml since an RSS subscription mechanism seems like table stakes for any website which has the ability to be updated.1 New posts will be added in bare HTML. No templating, No build step, no Markdown conversion process. Of course, there may come a time when it makes sense to add those features, but that decision will be made when I have more history to evaluate the real time / efficiency tradeoff.

What do I hope to gain by typing angle brackets like an animal? A greater understanding of and attention to HTML best practices and standard-compliant markup, for one. A quicker deployment process if I go for months without touching this site again without needing to re-learn how to run whatever static site generator is being run under the hood. Mostly, though? All the serious street-cred that will come by me telling people that I update my website in the old-world, hand-crafted, artisanal manner.


  1. I’ve also decided that for my RSS feed I’m going to go with the summary of the article in the feed along with a link to the entry. This is in line with this philosophy of the "source of truth" being the actual HTML file served to the user — if I correct a typo, make an update, or add a comment, I’d like to only have do that in a single place.

    Additionally, whenever I’m reading something online, I do like knowing that I’m seeing all the content as it was intended to be shown, which can sometimes be tricky to replicate in a feed reader.

    Of course there are plenty of feed readers with the feature which will automatically extract the full text, and I’m totally fine with that. I just don’t want to do that step myself.