Decisions

Decisions

I decided to start a blog. I knew pretty quickly I wanted to own the whole stack. This meant I would spend more time managing the blog than if I used WordPress for example. It also meant I would need to make more decisions. Part of the appeal of WordPress is being able to focus on your content not managing it. The management piece is some of why I want to have a blog. It gives me a reason to work on items like linux administration, web servers, firewalls, Git, etc. I want to learn more about these items but found it difficult without a reason to practice them. I want to be able to actually do not just learn.

It was time to make some decisions.

Host Provider

I knew I wanted a VPS. And I wanted to run Linux. I looked at Digital Ocean, bluehost, and Linode. I briefly thought about AWS but based on previous experience I decided not to consider it for this use. I listen to a lot of technical podcasts and had heard about Linode. A. lot. I pretty much decided I would use Linode unless I found something concerning. I didn't. I found their performance is at the higher end compared to similar plans from their competitors. I also was impressed with their documentation; specifically their guides. They have guides covering lots of areas with extensive information. I saw guides on Choosing a Linux Distribution, A Comparison of the NGINX and Apache Web Servers, as well as Installing and Using NGINX on Ubuntu 20.04. I was sold. I decided for my purposes that their shared cpu 1GB/25GB plan would be fine.

Linux Distribution

I went with Ubuntu 20.04 LTS primarily because of the information in the Linode guide about choosing a distribution. It is described as a popular choice and is widely used in their guides. Those were both important to me. I wanted to use products that were widely used and had well written guides. I plan to stay away from leading edge products and services.

Type of Site

Dynamic or static. I was initially confused about dynamic vs static sites. I also figured out that static sites can be more capable than I thought. I pretty quickly decided to have a static site. While I was researching static sites I came across static site generators. I had never heard of them. I definitely wanted to use this approach. I wanted features like rss feeds, labels, templates without the complexities of a dynamic site.

Which static site generator. Most of my time was spent looking at Jamstack's Site Generator list. The first thing was to look at ones built with Python. I had recently picked Python as the language I would focus my learning and experimenting with. I decided that I would learn better if I had situations to use it for instead of just learning and tried to just use one language. The first several I looked at were focused more on documentation; something I was not concerned about. I primarily looked at Pelican and Nikola. I chose Nikola mostly because of it's documentation. I generally dislike Github for documentation; I don't like the format. Nikola's documentation is also more task oriented which I prefer. I then found a couple blog posts about using Nikola.

I recently listed to episode 354 of Talk Python To Me. They talked about static site generators mostly in the context of documentation. A lot of the conversation was about Sphinx and it was mentioned that it can be used for web sites like blogs. I won't be switching to it anytime soon. But if you're looking for a static site generator don't dismiss Sphinx like I did.

Web server

This was a simple choice. I limited myself to Apache and Nginx. I quickly realized that Nginx is a better choice for static sites and seemed easier to implement. We use Nginx at work for a basic static site so I thought it would be good to have another reason to use it.

Summary

I had made all the major decisons; I had a plan. Now I needed to build all of this out. the next post will address the set up and installation. I will likely split this between at least two posts as there is a lot to cover.