Writing music scores on Hugo blog posts with ABCJS

Since I am on a roll with cleaning up my Hugo-based blog, adding alt text, and supporting math writing, I also had to experiment with adding support for musical scores. For the Sensing Sound and Music book, I used music21 in Python after struggling to set up LilyPond. Both LilyPond (professional engraving) and music21 (symbolic analysis and MIDI generation) are powerful and could be integrated into a blog, but they usually require a server-side toolchain or extra installation. However, with the help of CoPilot, I discovered ABCjs, a lightweight client‑side library that provides rendering, playback, and MIDI export, which work well for static sites. ...

January 2, 2026 · 2 min · 290 words · ARJ

Adding math support to Hugo blog with KaTeX

I am continuing to clean my Hugo site. Going over old posts, I found one on explaining artificial neural networks that included a bunch of equations based on screenshots from my master’s thesis. Now, with the help of CoPilot, I have implemented proper equation support on my Hugo site. KaTeX to the rescue I am used to writing my academic texts using LaTeX, an advanced typesetting library where you write code and compile it to a PDF (or something else). One of the benefits of LaTeX is its advanced support for typing equations (and many other features). However, until recently, it wasn’t so easy to write equations in HTML. ...

January 1, 2026 · 2 min · 350 words · ARJ

Moving from WordPress to Hugo

I have been running my blog with a self-hosted WordPress install for almost two decades, and I finally decided to move to a static website solution. The relatively rapid shift was triggered by a WordPress update that caused trouble with the paths to images throughout my blog. However, since my site was hacked a couple of years ago, I have pondered alternative solutions for running the blog. I have been tired of all the updates and security issues with a server-based content management system and figured that a static website solution would be more straightforward in the long run. My first web pages were based on plain HTML files, so I considered going back to such an old-school approach. However, there are many static web page solutions, so I decided to try a few different options. Here, I will discuss why I ended up with Hugo for my new page. ...

December 1, 2022 · 4 min · 826 words · ARJ