#+TITLE: How This Blog Is Set Up #+DATE: 2020-06-17T21:03:26-04:00 #+DRAFT: true #+DESCRIPTION: #+TAGS[]: hugo openbsd emacs #+KEYWORDS[]: #+SLUG: #+SUMMARY: When I was thinking about making this blog, there were a couple of factors I kept in mind when I was trying to figure out how I was going to set it up. Here's a simplified list of that: - Simple - Version controlled - Runs on OpenBSD - Minimal maintenance - Good integration with Emacs That's how I came up with what I currently use. Let me walk you through how I run by blog. * Framework The blog engine is [[https://gohugo.io/][hugo]], a static site generator. I chose this over something dynamic like wordpress for several reasons. First of all, it's very easy to manage, blog posts are just simple files written in one of the markup languages hugo supports. Being statically generated is also a massive advantage in terms of maintenance. With something like wordpress, you have to be careful to keep your site and plugins up to date. Since there's no dynamic content generation or database involved with hugo, the attack surface is dramatically decreased. No possibility for SQL injection, PHP RATs, accidental shell access, or hacked credentials. The entire site is generated using a single command after a new post is created, and then moved to the web server's root directory. Being all flat files also means the entire thing can very easily be tracked using =git= (or maybe [[https://gameoftrees.org/][got]], eventually), in fact that's the recommended way to use hugo. There's no fear I'll accidentally delete something, as I can always go back to a previous commit and restore it. Since hugo is written in go, it's trivial to compile on OpenBSD, and is actually available directly from the OpenBSD package manager right out of the gate. Maybe the most important thing to be however, is that hugo natively supports org-mode markup. I write all my notes, both personal and work related, in org-mode. It makes converting my notes into blog posts really easy. It also lets me leverage my existing Emacs setup, which comes in handy often. While it's not very well documented, since org-mode markup is a bit of a second class citizen in the hugo world, it's pretty easy to figure out. * Version Control I wanted to try to keep things as simple as possible for this, while remaining private.