When the time came to relaunch my blog I spent a fair amount of time researching options. I wanted something that worked well for me that didn’t require too much infrastructure. I also wanted to keep costs fairly low and not take on a large monthly recurring cost.
- Ideally, I wanted static content that I could host in an Azure Storage account or some sort of static website hosting.
- I wanted something that felt comfortable for me. I spend a fair amount of time authoring articles in Markdown and it has really grown on me over the past few years.
- An application with a fair amount of plugin and theme options, I don’t really want to get involved in creating a custom template. A reasonably sized community was a plus.
I evaluated a variety of different options before settling on Hexo. Obviously I’m sure there are more options out there, but this is what I looked at.
- DocFX - I’ve had some experience with DocFX in the past and honestly, it is what I really wanted to use. But the lack of theme selection and the fact it’s primarily focused on documentation meant it was not a great fit for what I wanted to do. It is the engine behind Microsoft Docs and it does that really well so I will continue to monitor the project.
- Hugo - A close second, Hugo is very similar to Hexo. It is built on Go rather than Node.js. It generates a static site that you can publish in much the same way. The configuration seemed a little bit more involved, but in the end it was almost a coin flip. Now that my content is in Markdown and ready to roll I may still give Hugo a try to compare and contrast.
- Ghost - Their hosted platform pricing was a bit steep for me. And while they did offer self hosting the config seemed fairly complex and the requirements were also steep. I also don’t really need the fancy admin interface.
- Medium - This is where my blog was before. It is a great platform for getting your content out there. But it’s not really a great platform for the true technical blogging that I wanted to do. I do still intend to post opinion pieces.. but not enough that Mediums core benefit would be that useful.
- Wordpress - Obviously this option is one of the largest out there. And there are definitely a ton of options for plugins and themes. And I have experience with it in the past. But for me it felt like using a bulldozer to solve something I could use a shovel for.
I ended up settling on Hexo for a few reasons in no particular order.
- Content is almost entirely written in Markdown, which I am familiar with and would be able to manage easily.
- It was fairly lightweight and out of the box I could generate a static website for direct upload almost anywhere.
- It had the concept of adding posts and pages which was important to me, and one of the primary reasons I did not select DocFX.
- It had a fairly good selection of templates and plugins I could choose from.
- I saw an opportunity create a CI/CD workflow for Hexo (which I’ll cover in the next article)
The one thing I was not comfortable with was Node.js but it is something that I’ve been wanting to experiment with.
Once I settled on Hexo I set out on the road to migrating the blog to Azure Storage and a CI/CD pipeline with Azure DevOps. I was able to get Node up and running on the Windows Subsystem for Linux (Ubuntu Specifically) for local testing and content generation. The process was mostly painless since I have experience with Linux, Git and Azure DevOps already. For more detail on using WSL with Node and Hexo you can see my guide here.
I was also able to use other tools I was familiar with like Visual Studio Code for content and template editing and Notion for jotting down article ideas (you can copy/paste and/or export to Markdown).
You can find an in depth review of several options here. This site also covers Jekyll which I did not include in my decision process as I didn’t want to get involved with Ruby.