In the past, I have avoided “New Year Resolutions” - however, with 2020 being quite the eventful year, I have decided to break this pattern. In 2021, I have set a goal: to write at least 1 blog post per month. This also follows a general theme that I think I am going to try and follow, which is - stop waiting and just do it - whatever “it” may be. Won’t go into too much detail, but COVID is a huge factor in this change of thinking, where before I may have put things off, I don’t want to do that any more.
I decided to start a blog a few weeks back, and since then I have been trying to think of “how” to do it. There are many approaches I could take. There are many excellent options to choose from, with no “wrong” choice. Still, I really want to make to make the “right” choice - the “best” choice. But given the huge number of options, I quickly encountered analysis paralysis. I’ve done so much research and have considered many options including WordPress, Drupal, Ghost, Medium, Jekyll, HUGO, Blogger; the list goes on… Still, 2021 is just around the corner, and rather than sit here with executive dysfunction, I’d like to discuss each of the options I have considered, and go through their plusses and minuses. Perhaps after writing about it, the decision will be easier to make.
To start - WordPress seems an obvious choice, given my extensive experience with it. It’s also one of the most popular web applications) on the Internet today. There are many great themes and plugins, which would make creating and managing the site a breeze, and would mean more focus on content, and less focus on maintenance. That said, WordPress is relatively boring, at least from my perspective. There is certainly some content I could create regarding WordPress, however there are also thousands of similar articles, blog posts, how-tos, etc. I think I am interested in something more unique or challenging.
Recently, I’ve stumbled across Jeff Geerling’s videos on YouTube. His videos are excellent, though I can’t help but feel a degree of schadenfreude while watching him recopile the Linux kernel over 100 times as he tries to get various PCI devices working with the Raspberry Pi Computer Module 4. He has created an excellent compilation of his PCI device work on his site here. Jeff is a Drupal developer, and as such, his site runs on Drupal. Interestingly, Jeff’s “pipci” page was generated with Jekyll which we will [discuss later]. Anyway - Drupal is something I don’t have much experience with, however I do have a couple clients who use it to incredible effect. That said, as I understand it, it requires quite a bit of web design knowlege which I personally do not have. It could be a good learning opportunity, but to start, I think I am looking for a lower barrier to entry.
Since we started down the path of people I follow, let’s continue the theme; Troy Hunt famously uses Ghost, and has done so for several years. Troy has an excellent Blog Post on his site that goes over his decision making process. However, Troy does not host the site himself, and instead relies on Ghost’s hosting service - Ghost(pro). There’s nothing wrong with using a service, however anything I would much prefer to host whatever platform it is that I choose. Using Ghost would be an excellent learning opportunity - and Ghost’s simplicity is something that I really enjoy. It’s definitely a strong candidate.
Continuing the theme yet again, Hussein Nasser is someone I have stumbled across recently, he has made a couple analysis videos regarding a recent Google outage which I found interesting and informative. He also has many videos on his channel that I definitely plan on circling back on. Anyway- back to the topic at hand, Hussein uses blogger for his site, which personally seems like an odd choice. When I think Blogger, I think 2008, I think Google, and mostly I think that it’s very likely on Google’s Chopping Block. Needless to say, Blogger is near the bottom of my list.
Similar to blogger is Medium, which is popular among several people I follow. That said, even though recognition through Medium seems a lot easier, visibility is not necessarily my goal. In a way, being less visible seems more appropriate, at least to start. Besides, Medium really strikes me as a place where people only write to draw attention to themselves - rather than the content - though maybe that is too big of a generalization. In any case, Medium - like Blogger - is offered as a service, and is not something that I can self-host; so it’s unlikely that Medium will be a good fit for me.
Static Site Generators
Finally, let’s get into what I consider the most interesting set of options: static site generators. In short, a static site generator takes your content - usually text files - and creates raw HTML, JS, and CSS files to be hosted via any web server that can serve files - no need for any scripting on the backend - just raw file hosting. It’s genius in its simplicity, and runs parallels to several projects I have worked in the past, which involved scraping dynamic sites, generating raw HTML, and serving the raw HTML in order to maintain very high levels of traffic with minimal performance impact. However, instead of using a dynamic CMS like WordPress, most static site generators use some sort of text file to generate the final HTML, which you upload to your webserver. After the site is generated, there is no database to maintain, and no server-side scripting required. That means no MySQL, no PHP, no NodeJS.., Just files. Nothing else is required.
Clearly I am a fan of this approach, however there are many caveats. Notably, the content is static - truly static. That doesn’t mean you can’t change the content on the fly, you can’t quickly update its appearence, correct a spelling mistake, change themes, etc. Much like compiling a binary, even the most basic of change requires the source file to be updated, and the entire site to be re-generated. For a huge site, this could be time consuming, however for a blog it doesn’t seem like too big of a deal. However there’s another limitation: Comments. At least to start, comments are out of the question. Now there are ways around this, but they involve deviating from truly static, which somewhat defeats the purpose. Given that I will have a very small (truthfully nonexistent) following to start, this should not be an issue, however it would eventually need to be resolved. Having the ability to comment on a post would be extremently valuable to me. A simpler option with built-in commenting may be a better approach overall, but the concept of using a static site generator is still extremely appealing to me so I’d like to go over a few options that I am aware of.
Jekyll appears to be the most popoular. Jekyll also allows you to create content within a git repo, and have that content automatically hosted by Github Pages. In a practical sense, this means managing your blog with git, and letting Github manage the hosting for you. I personally find this to be an ingenious approach. Of course Jekyll being a static site generator means you can self-host as well. However, dealing with Ruby is not my favorite idea, because of this, Jekyll is not at the top of my list.
Finally, Hugo. I first learned about Hugo towards the end of 2019, when the GSA announced that they had redesigned digital.gov, and had used Hugo primarily due to its performance. The GSA has access to other static site generators, including Jekyll, however they chose Hugo over Jekyll - even though it is the default generator used for their Federalist content management system. According to the showcase published by Hugo, the GSA currently generates nearly 10,000 pages in just 32 seconds, impressive! While hugo is less popular than other options, I think it’s the static site generator I like the most.
Now that we’ve covered all the options, I think I have a better idea of where I’d line to start. However, I in the spirit of stop waiting and just do it I have decided that I will publish this first post as plaintext. This means the format will not be fun to read through, but it’s still better than doing nothing. Until I decide on how to move forward, I may also write future posts in plaintext - with the goal to convert them to “real” posts in whatever platform I eventually choose.
So, here’s to 2021, and to getting things done.
3. ^ Configuring a custom domain for your GitHub Pages site. Github Docs. Retrieved 29 December, 2020.