19 Jun 2020

What I'm Reading #2

Books

Wolf Hall

Still re-reading...

Articles

The mental health crisis looming in ICU

As the UK and Ireland move to relaxing the Coronavirus lockdown (if it can still be said to exist - it certainly doesn't seem to apply anymore in Belfast), Fergus Walsh points out the cost to NHS ICU staff in terms of ther mental health.

As one of Oxford's few black professors, let me tell you why I care about Rhodes

Given the news that the Cecil Rhodes statue may be removed from Oriel College, Simukai Chigudu details why the status is seen as offensive.

The RuboCop Name Drama Redux

The renewed focus on the Rhodes and other statues came about in the aftermath of the George Floyd protests. Similarly, there has been a look at the use of possibly offensive terminology in open source projects. This post details one attempt to rename the RuboCop project that went badly wrong. See also Tim Riley's write-up of this incident.

How I Became a Better Programmer

James Long details how he become a better programmer. His key points are to experiment with different languages, and to learn from others.

Robot Pedantry, Human Empathy

Mike McQuaid, who leads the Homebrew open source project, details how they automated as much of the contribution pipeline as possible, to allow team members to focus on interacting with humans rather than code.

5 Jun 2020

What I'm Reading #1

The first in a series of posts detailing the best of what I'm reading both online and offline:


Books

Wolf Hall

I'm re-reading Hilary Mantel first novel on Thomas Cromwell, in preparation for reading the recently released third book in the trilogy.

Articles

Racist intimidation in the Village in south Belfast "going on for years"

As the protests in the United States continue over the violent death of George Floyd at the hands of the police, it might be tempting to think we don't have a racism problem in Belfast. Think again. This report from the Detail gives examples of ongoing racist attacks in the Village area of Belfast.

Doordash and Pizza Arbitrage

An interesting read on the cut-throat world of food delivery.

'All Watched over by Machines of Loving Grace': Care and the Cybernetic University

An essay on the impact of the current pandemic on the use of educational technology, and a look at the long history of the development of this technology.

Building an automated monitoring tool to track how many people are at the office by using Unifi network gear and Azure Logic Apps

Jussi Roine details an interesting side project using the Unifi Network's APi and Azure Logic Apps to track who is in the office. I was particularly interested to read about using the Remote Development extension for VS Code.

How Becoming A Dad Has Changed How I Work

Mike McQuaid, leader of the HomeBrew open source project, describes how having a family changed his work-life balance.

3 Jun 2020

Blog Migration Series

A single place to refer to all my posts on migrating this blog away from Blogger:
  1. What I want from my new blog
  2. Static Site Generators

Static Site Generators

In my last post, I mentioned that my next step in my blog migration was to look at which static site generator (SSG) to use. I'm interested in an open source SSG that I can modify to suit my specific blogging workflow. I've been a long term user of the Open Live Writer tool, so I want something that will be just as simple to use. I've been impressed by K Scott Allen's series of posts on custom blog publishing tools to replace Open Live Writer, and also by Chris Ferdinandi's article on his blogging setup.

My specific requirements for an SSG are:
  • Is an actively maintained open source project
  • Has a range of plugins (for tasks like generating tabular data from spreadsheets)
  • Has decent documentation to allow me to get started (note, this is where most open source projects fail in my opinion).
  • Is written in a language I have familarity with (.NET, Java, JavaScript) or I am interested in learning (Rust, Python, Go), so that I can customize the SSG (and possibly contribute back to the project).
  • Uses Markdown templates [See below]
  • Has a range of responsive templates to allow me to get started blogging quickly.

In my original requirements post, I had been interested in drafting my posts in Markdown, probably using MarkdownPad2. However, over the past 3-4 weeks, I have started a new role in work, which along with general lockdown craziness, means I've had relatively little free time to blog. When I have sat down to work on this post, I haven't been interested in crafting a Markdown document or raw HTML - I want to quickly write up a few paragraphs and post. Given that, I've decided to look at using a CMS (possibly headless) instead of drafting everything in raw HTML/Markdown. This will probably mean a combination of a CMS and SSG.

Looking at the most popular static site generators are (Hugo, Gatsby) and some less common (11ty, Pretzel), we have:

Project Language Template Type Comments
Hugo Go HTML No plugins, but significant 3rd party tooling exists, including resources from migrating from other systems (including Blogger). Extensive documentation.
Gatsby JavaScript (React) React One of the most popular SSGs, with a cloud based option and a rich plugin ecosystem.
Jekyll Ruby Liquid One of the original SSGs, it is a relatively simple SSG geared around blogging. It is feature rich but has poor performance when compiling posts compared to newer options.
Next.js JavaScript React Framework A minimalistic framework for server-rendered React applications as well as statically exported React apps. If using the React farmework wasn't bad enough, it also supports CSS-in-JS.
Nuxt JavaScript Vue Inspired by Next.js, but based on the Vue framework instead of React.
Pelican Python Jinja2 for themes, supports Markdown or reStructuredText for posts Allows import from WordPress, Dotclear, or RSS feeds. A smaller project with less detailed documentation.
Metalsmith JavaScript Handlebars, JavaScript Metalsmith is an extremely simple, pluggable static site generator. All the logic is handled that are chained together. While this makes it very flexible, it can mean it takes longer to configure than other SSGs. Poor documentation.
Eleventy JavaScript HTML, Markdown, JavaScript and others. A simpler static site generator, written in JavaScript as an alternative to Jekyll. Transforms a directory of templates (of varying types) into HTML.
InkPaper Go Markdown, Golang An fast and simple static blog generator. Not a particularly active GitHub project. No plugin support, poor documentation.
Pretzel .NET Liquid A simple, pluggable site generation tool written in .NET (C#). Pretzel follows the same convensions as Jekyll and should be compatible with basic Jekyll websites. This is a relatively simple SSG that has not yet been updated to use .NET Core.
Publii JavaScript Handlebars Publii is a desktop-based CMS for Windows and Mac that makes creating static websites fast and hassle-free. Users can enjoy the benefits of a super-fast and secure static website, with all the convenience that a CMS provides. The app runs locally on your desktop rather than on the site's server.
Gridea JavaScript (Vue) JavaScript A static blog writing client. A relatively new project, and a lot of the documentation is in Chinese.


After considering the above options, I've decided to go with Hugo. The lack of plugin support initially put me off, but it does seem to support data driven templates. Eleventy also looks interesting, and if Hugo doesn't work out, I'll possibly use it instead. Both Gridea and Publii look useful, but I think I need to look more depth for a CMS in another post.

In my next blog post, I'm going to look at setting up Hugo and starting to write a test blog with it.

Resources