Matthew McPherrin

2019-10-23

Blog

I have decided to set up a blog to organize and share things I do, just like everyone else’s blogs. I’ve made several decisions in how I’d like my blog to work.

The first is that I want to store the website’s content in source control. As a software developer I’m very comfortable with the edit, run, CI and CD flow. I can write in the same editor I always use. I can make local changes offline, test pages, and deploy when ready. Or I can just open github.com and use the in-browser editor. Git is the tool of choice for me, hosted on github.com.

A statically generated website is easy to host anywhere. I’m using Github and Github Pages because it’s convenient and free, but I could easily switch to AWS CodePipeline publishing to S3, or a docker container with Nginx serving the static content.

Thus this setup is not tied to any particular vendor. In a few minutes I could completely abandon Github should the need ever arise. That’s important to me, as I want to be in control over my own content. Leaving a hosted blogging solution would potentially be much more complicated.

So the next question is what static site generator to use. Github pages supports Jekyll, so that makes it a great candiate. I’ve been testing it out and it seems to work well enough. Markdown is easy to write for posts, and the liquid templating system is straightforward. I’m not using too many advanced features, so switching shouldn’t be too hard if I don’t like Jekyll for some reason in the future.

Finally, I have decided to make my own design rather than using a template. I was able to make a basic blog template with no major issues in an evening, which is another reason that Jekyll is working well. I made a base page layout, an index page, and a post one. It’ll probably be pretty ugly, but it’ll be mine.