Another blog update

Published on 15 February 2026 at 13:18

So recently I discovered that the maintainer of my previous blogging software (Hugo) had added agent prompts to his project's repo.

This was a massive red flag to me, as I strictly oppose the use of generative AI trained on stolen labour, both within corporate spaces and in the open-source community which is being stolen from by companies like Anthropic. However, asking the maintainer for clarification on whether he uses AI led to him banning me from his forum, removing my question, refusing to let me know the length of the ban or which rule I had violated, and ultimately accusing me of "hijacking" a changelog thread which explicitly referenced the commit that added to agent prompts and "borderline trolling". After further prompting via Github, I finally got him to clarify that yes, he does indeed use AI.

For me, this led to an immediate decision to no longer use Hugo. If bep, maintainer of Hugo, had simply answered my original question with a "yes", downgrading to a pre-AI version of Hugo would have been an option. However, bep's extremely hostile behaviour towards criticism and the community's general support of his position to both use the Copyright Infringement Machine to hallucinate code for him and to refuse to even disclose this made me want to disengage with the project entirely.

On top of that, during my experiments in extending my website with some custom code like the gallery, I had grown extremely frustrated with Hugo for a variety of reasons:

  • The documentation is just awful. It fails to explain basic terminology, is a pain to navigate, and doesn't even manage to put its "Getting started" section at the top of its ToC.
  • The templating language, with its odd insistence of using polish notation for everything, is very uncomfortable for me to work on.
  • The API is missing a lot of conveniences I'm used to from modern programming languages, like lambdas. Its collection API, for example, is painfully restrictive.
  • Some API decisions are just baffling, like the semantics of Collections.append being different on empty vs. non-empty lists on certain operations. This is an entirely solved problem, to be clear: if Hugo simply had two different functions like Java's List.add(item) and List.addAll(items) (or any other programming language I have ever used), there would be zero ambiguity.

I also took a look at some other static site generators and asked for disclosure of AI usage, but ultimately decided that I do not want to learn another template language, sift through another set of incomplete docs, and just hope for the best.

Instead, I decided to clobber together my own static site generator, in a programming language I actually like (Java) and using tech I have worked with before (Commonmark-java, Thymeleaf, and some Apache Commons stuff, mainly). I do not care about whatever the "Jamstack" is or about extensibility or configurability - I wanted to build something tailor-made to this specific website.

As such, I do basically all the heavy lifting in Java, with the Thymeleaf templates being as slim on logic as possible. Features like automatic generation of thumbnails are handled by Java (with the actual image processing outsourced to ImageMagick). There is little configurability, because I simply do not need it. Metadata for posts is severely limited to what I actually use.

With those constraints, I was able to clobber something together that works during a five-day vacation, with plenty of time left for actual vacationing.

I was a bit reluctant about this course of action at first, because while I now control the site generator itself, it relies on a long list of dependencies and I simply cannot vet them all for AI use. I did look at my main dependencies and could not find obvious signs of AI use, but at some point I just have to hope for the best. At least, I can now decide to just freeze a certain dependency if its maintainers go all-in on the Copyright Infringement Machine.

The upside is that I will be able to add new features to the site with far more ease because I can now work in a language I am 100% comfortable with. I already added pagination to the gallery, and have a couple more things I want to do in the very near future. I will also never have to hear the word "jamstack" again!

On the other side, some things are still a bit unpolished:

  • Some URLs will no longer work.
  • The CSS is still very basic, because I decided to forgo third-party themes. I am, unfortunately, not a web designer, but I'm beginning to prefer "SelfHTML chic" over seeing the same five blog templates again and again.
  • The search function is gone, for the time being. I was never fully happy with how it worked, anyway.

The next post will be about my recent vacation and funny subway trains. I promise. No more blog drama. But before I go, I would like to link two blog posts that illustrate at least part of why I am so worried about the rise of AI in open-source spaces: