A Fresh Start
My first foray into blogging was well over a decade ago now. I initially started out on the Google Blogspot platform but quickly ran into its limitations.
After discussing the issue with a friend, in 2013 I took the plunge into static site generators with Jekyll. This was a very attractive option as Jekyll was supported by Github pages, meaning I could simply push my code to Github and my webpage would appear. I could also use my very own domain name for this.
At the time I had very little programming ability, with a background largely consisting of dabbling in Linux shell scripting. I found it relatively easy to pick up the basic Ruby I needed to interact with Jekyll, Liquid and Markdown and at the time, that seemed like it would be fine.
Over the past ten years I have written blog articles from time to time but more frequently started to run into issues as time went on. I would sit down to write an article and find myself fighting problems with Ruby Gems, dependencies and bugs, often resulting in a complete loss of motivation to write or publish my article.
Aside from this blog, I have not interacted with the Ruby ecosystem in quite some time which made the process of troubleshooting issues much more difficult.
There must be a better way!
Due to restrictions with Github Pages and plugins I had migrated the site away to a personal VPS. I finally came to the conclusion that my best option would be to completely abandon Jekyll and look for an alternative that would be a better fit for me personally.
While I did briefly consider a full blown CMS, I much prefer the simplicity of a static site. After a cursory Google search, the two other contenders appeared to be Hugo (Golang) and Pelican (Python).
Hugo did hold some appeal to me. However, having no real experience with Golang (yet) I was concerned that I would end up in a similar place as I have done with Jekyll and Ruby, where I need to interact with a language and ecosystem I don't use elsewhere.
Pelican
Pelican on the other hand, being written in Python, seemed like a much better fit for me. I have been writing Python regularly for several years now, am familiar with Jinja2 templating and of course markdown.
After spending a few evenings familiarising myself with Pelican and gaining a level of comfort with it I decided to make the switch.
Initially I did consider salvaging as much of my existing website as possible. Due to the level of customisation available in Pelican, it would certainly have been feasible to convert my existing Jekyll/Liquid templates over to Pelican/Jinja2 and have an identical looking result with path preservation.
Following some thought I made the decision that this would be my best opportunity to start fresh. After looking at various themes and ideas and fighting with CSS for several hours I was able to create something I was happy with.
Legacy Content
As the existing content was all in markdown format for Jekyll, it took very little effort to have the content appear in Pelican.
I did spend some time fixing paths with the ARTICLE_URL
, ARTICLE_SAVE_AS
and SLUGIFY_PRESERVE_CASE
options in python and adding a Slug:
to the top of each article.
While going through this process and reading content I wrote over ten years ago, I ultimately came to the conclusion that this process may not be worth the effort.
The majority of my content was terribly outdated, often very niche and often not at a level of quality I would be happy to publish now. I also did not like the URL scheme that I had previously used with Jekyll and ideally did not want to carry this forward into my nice new Pelican blog.
This being the case, I took the decision to start fresh and not copy my legacy content over as-is. There are a handful of my legacy articles that I may re-write and re-publish as time allows.
For the time being, any legacy content will be available HERE.
Looking forwards
While part of me would like to commit to writing blog posts more often and more consistently, over the past decade I have found that my motivation to write blog posts comes in ebbs and flows and forcing or constraining that process does not result in good content.
My aim is to continue blogging about technical topics I encounter as and when the mood takes me.