home / 2019.01.24 15:15 / blog / web design / github / minimalism
I've been experimenting with having a blog for a little while, and went through a few steps with how I organized everything. From writing my custom blogging solution, I am a software engineer after all, to using established platforms and finally deciding on the minimalist approach, this short post is the story of what I've used and why I've decided to go static.
Before starting an actual blog, I've tried writing a few engine implementations of my own, where the engine was monitoring a shared folder, say Dropbox, for markdown files and converted those files to web pages when requested. Of course, running a system like that would have required a server of my own, and the small blog I have does not justify such an expense.
After a while I settled on a GitHub Pages blog, where my posts were markdown files that were processed by Jekyll. Jekyll is a ruby tool that takes a collection of text files and converts them to a collection of html files, a static website. Jekyll has a lot of useful functionality, however the end result is still a static website, so all disadvantages I will metion later will apply to a Jekyll-generated website too. I used this approach for a few years and it served me well, but I still felt that Jekyll brought some overhead. Everytime I wanted to work on my site I had to make sure Jekyll is installed on the machine I was using. I also didn't have as much control as I wanted. Since the end result was a static website, it was always a question in the back of my head of wether I should just remove the middleman altogether. But what kept me from making the jump was my need to have styled code on my site. Jekyll was taking good care of that, but if I went static I needed a simple solution to convert my markdown code sections to styled html code sections. I eventually found two viable solutions and made the switch.
The second part of this story is the journey I've taken with my other blog, a comics/image/creative blog. I originally published on Facebook, when I still indulged in the bad habit of social media, and later moved it to Tumblr. I started from the simplest free theme on Tumblr, which I tried to style as much as possible, make it as minimal as I was permitted by Tumblr and removed all the social features I could. Tumblr made it very easy to post, but I could not have the control I wanted. I used the Tumblr approach for some years before I decided to take the leap and leave their platform for a more simple, static GitHub Pages site. Probably what brought the most suffering and constituted the last straw before I decided to switch was the impossiblity to style videos posted on Tumblr in a consistent manner across the desktop and mobile version of their site.
I am now the happy owner of two static blogs, one a programming blog and the other an image blog, both published for free on GitHub Pages. I have made the switch about a year ago and have thought about the decision many times since then. I am still happy with this approach.
One of the first advantages with going static is having total control over how your website looks. You have this control with Jekyll too, but if you are using Tumblr or some other blogging platform you will be limited by what styling features they offer you. Adapting the design of the site without breaking too much functionality will be a chore. Some platforms may be more convenient than others at the moment, but you are still dependent on what they decide to do in the future. That amazing social feature they will introduce in 2020 to appease their investors and sell more advertising? Your blog will take it and like it. You also don't have any control over what features Jekyll decides to implement. If GitHub upgrades to a new Jekyll version that your site is not compatible with you'll have to keep with the times or give up the site. But with a static site, a collection of HTML files, it's not that likely you'll have that problem. Not unless a new HTML version, incompatible with old versions, comes out, and all major browsers decide to adopt it and drop support for the older versions. I'd consider that quite unlikely.
An extension of the total control mentioned above, you also have more granularity in your design. I wanted to adapt the look of my website to adhere to a more brutalist design but I didn't necessarily want to change the look of my old pages. I wanted the option of having different designs for different pages. With Jekyll it's a bit more complicated to do that, as you would need to create different page types. A blogging platform will also usually let you choose a single theme per website. With a static website each page stands on its own.
Another advantage I want to mention is how easy it is to test and migrate your website. Your site is a simple collection of html files. If you have a browser and a text editor installed, you can "run" your site locally to test it. If, for whatever reason, GitHub Pages becomes a thing of the past, you can move your website to a different server, one that only needs the minimal software to publish your site, a web server like Apache, nginx, IIS. This means you have a lot of options and can probably easily find a cheap solution. With Jekyll, you would need a machine that has Ruby installed, Jekyll installed and a web server installed.
But finally, what are the disadvantages? Well, the solution I am suggesting is a static website. That means you won't have comments, contact forms, shopping carts or anything dynamic. Maybe you can implement some dynamic content using Javascript, but that would be limited or potentially open your website to cross-site scripting vulnerabilities, so you should best consider going static only when you don't need a dynamic site. Choosing a static site instead of a blogging platform will also be a little more involved. You need to have some coding knowledge, HTML and CSS at least, and you should learn a few git commands so you can upload your site to GitHub. If you can handle that, and any person living in the modern world should be able to handle that, I would say going static is a good, cheap, classic approach for having a simple blog, portofolio or CV website.
If any of this sounds interesting to you and you want to try it out, I have written a tutorial on how you can build your first static GitHub pages website.