(Another) new blog publishing system

A reflection on where I've got to with blog publishing systems, my desire to take notes, and how to organise and view the things I write.

Blogging platforms are a bit of a curiosity for me. I've spent ages trying to find the right combinations of tools so that I enjoy the process of writing. Obviously, this means that I've created lots of self-imposed restrictions on what tools I can use, how they work, what they interact with and what sort of site they deliver. In some ways I've become a little obsessed in the process of writing notes, blogs, articles and other things, to the extent that the writing itself has suffered.

So in this article, I'm going to try to outline where I've been and where I'm trying to get to, with all the little adventures and missteps along the way. It might help you to avoid my mistakes.

Firstly, some advice. DON'T write your own blogging platform. Obviously I did not follow my own advice as this is being written on my own blogging platform. I can't stress strongly enough the time one wastes on writing your own blogging platform rather than, say, actually writing. It's insane. Unless you happen to enjoy writing your own blogging platform. In which case, all power to you and the best of luck.

I've learnt a huge amount by writing my own publishing/blogging system, and the key lesson for me is: I hate organising my thoughts and notes. How did this story begin?

I started off blogging in the early naughties using Wordpress in its pre-1.0 releases. I had my own VPS1 (from Bytemark for a tenner a month) and wanted something to do with it. Running a blog on it seemed like a reasonable thing to do. So I wrote a few things. The earliest I can still find is from 2007. It was quite fun and I maintained the Wordpress blog all the way up to 2012.

Then there was an inexplicable2 break from 2012 to 2016, where I stopped writing for my blogs and was instead just writing code. Lots of code. Burn out. In 2016 I got a lovely new job at a not-start-up and this allowed me to start writing sporadically again. I even started a new blog focussed on technology (er, this one). But the big thing was that I switched away from Wordpress to Hugo.

Hugo was (is, I guess) a fine static site builder, and I'd been interested in static site builders for a number of years. It takes a bunch of markdown files, some config, and then, well, builds a site. And all you have to do then is copy it to somewhere that it can be served from. And, like all the cool tech bros, I put it on AWS S3.

And this worked really well. I mean it really did. Hugo is a great product. The problem was ... me. So after 3 happy-ish years with Hugo, I foolishly decided to write my own blogging engine: VPS. And there is precisely one user in the whole world. But, hey, it's mine, and now I have to use it.

Why, oh why, did I do this? It's a really good question, sadly without a particularly good answer, but it does sort of make sense. At around the same time as I was writing the code (in Haskell!), I was also really interested in using Vimwiki for organising notes about projects, technology, software, and other things that I was interested in. And I thought: "why not use vimwiki to organise and link the posts in my blog?" And so I did, and so VPS was born. Naturally, I didn't actually pick a great name for it. Vimwiki Publishing System, or VPS, clashes rather nicely with Virtual Private Server. I'd bet real money that people would think the latter rather than the former.

I really like using Vim. It's my 'go-to' editor and the modal-editor concept fits very well into my brain. Or my hands. Perhaps both. The point is that Vim (or in this case, Neovim) is one of the choices that makes life a tiny bit more difficult, with respect to writing notes and other things, other things basically being "anything that I need to write." This is a common problem with people who use (or are abused by) (Neo)vim: documents are filled with hjkl and online forms disappear at the stroke of the Escape key. Frustrating? Yes. But, when actually in Vim editing is so, so, nice. Obviously, I'm using it now.

So Vimwiki was naturally my 'go-to' for organising notes into a personal wiki. But it basically means that I'm 'stuck' with using text - and Markdown in particular, to edit and store text. That is actually an upside. Good old boring text files have the significant advantage of being easy to store, search, and edit.

But there are some downsides to using Vimwiki for storing the source to my websites. The major one is that I have to actually organise the files on some sort of index page that isn't actually an index page on the website. Nice in theory, not so nice in practice.

However, Christian Tieze has some interesting thoughts on digital gardening where the traditional blog site has largely destroyed web sites as curated repositories of information or knowledge. Instead, 'blogs' are a shallow hierarchy of dated posts where relevance between items may be non-existent.

Compare that to a wiki where curation and linking is the central theme of organisation. However, the downside, as I alluded to above, it that you have to organise the pages. There's another concept for (not) manually organising notes and information: the Zettelkasten Method.

The Zettelkasten Method is for taking notes for thinking and writing. It's not, apparently, a system for organising articles or websites. This is because Zettelkasten is about linking single units of knowledge rather than explaining an entire topic or article. Also, Zettelkasten is by one person, for one person. That is, it's personal and not really for public consumption.

This presents a problem of how to integrate websites with notes. Perhaps it can't be done. There is a disconnect between personal notes and writing for other people. That disconnect is in usage and consumption, but perhaps the tooling can be the same.

Again, my favourite way of editing text is to use my Neovim setup. So any solution has to fit with using Neovim to edit content, and control files, for any content management solution. Oh, that's a nasty phrase. How did I jump from 'Blog' to 'Content Management Solution'? Let's recap and explore what I'm trying to do:

In fact the 3rd bullet point is equally as important as the other two. By keeping everything in text files it surfaces the configuration and makes it trivial to keep backups. Obviously, some things can't be text files, such as photos, movies and other media, but all the text and control files can just be text. And ultimately, that includes full-text search, which can be largely pre-generated.

But I'm indulging in looking at technology rather than user-experience, and it's user-experience that I'm currently missing with VPS. The problem can largely be described in the process of writing a new article:

  1. Fire-up vimwiki.
  2. Navigate through vimwiki to the index page within vimwiki (which is just an ordinary page) that contains all the links to all the pages within the web-site.
  3. Find the section I want to add an article to.
  4. Type the link of the new page. e.g. bm/posts/2021-09-05-a-new-blogging-system. There is a bit of cognitive load in doing this.
  5. Find the template for the yaml header for the page.
  6. Start writing.

Obviously, this is largely self-imposed as I designed the damn system in the first place! In this case I didn't think that managing the pages would be difficult but that's because I'm trying to manage a website 'inside' of a wiki, not just the wiki itself. So I have to consider both where to put the source, and where the page will appear, rather than just worrying about writing the pages themselves.

Curiously, I could switch the site from a blog to a site, by changing the home page into a hand-crafted page with topics, narrative and links. VPS supports this concept quite easily. However, it would be nice to consider how to automate some key bits that are done manually now:

  1. Starting a new page. This ought to be easy.
  2. Getting a link to a page in Vim.
  3. Adding metadata to a page; this is the permalink, or where it sits in the site, title, description and tags.

There are several issues that I'd like to resolve:

  1. Organisation of using source material for websites and notes. (These may not be reconcilable?)
  2. How the site is published.
  3. Version control and updating of pages.
  4. How sources, control files are stored.
  5. How to store it with media.

It feels like VPS and Vimwiki are only the start on this journey, which is both annoying, but also very interesting. I think the rambling nature of this post sums up my position quite adequately: it betrays the issue that I don't really know what I'm trying to achieve yet. At least in the first instance I can start to migrate my sites (that are run in VPS) from blogs to websites or curated content. There are certainly topics that should be organised in a way other than just 'written on this date'.

  1. Virtual Private Server↩︎

  2. I got involved in two start-ups, both of which seriously monopolised all of my available time. This left very little time for anything else. I'm really very pleased that I don't work that hard anymore.↩︎