Over the summer break I started trying to make a set of custom emoji which could be tiled to make geometric patterns in interesting ways, got bogged down in various fiddly issues, and wrote a quick tool using Observable so that I could visualise the maths behind it. I liked the results so much that poptimal became the main project.
I wanted to turn this into a Fediverse bot but quickly found that I'd let my web server go a bit feral: poptimal is written in JavaScript and uses some fancy new stuff to generate PNGs, and I couldn't install a new enough version of Node on my server to get it working.
That meant that I had to migrate the backend code for all of my bots, which were running on the same server. And the ones I wanted to keep the most, like @glossatory, are powered by neural nets which are about ten years old, which is a really long time in machine learning years.
In IT we call this "yak shaving", as in: "Why are you shaving that yak?" "Well, I need to shave the yak so that I can rebuild a Docker image for Torch 7, an obsolete neural net framework written in Lua and last updated six years ago." "So why do you, uh, need to do that?" "So that my bot which posts parodies of The Anatomy of Melancholy without the letter 'e' can run on a new Linux machine." "So why..."
Ultimately, so I could get cool pictures like this four times a day:




But, also, because I am fond of these odd little projects and it's satisfying keeping them around. Strictly speaking I didn't need to migrate everything across before I wrote the bot version of poptimal, but it felt like the right way to do things.
Things I learned or was reminded of during this adventure:
- uv is the way to manage Python projects, don't leave home without it
- Lua is a good and cool language and I want to do more things with it
- if LLMs are going to take over the world, they better hurry up and do it while their runtimes are still working, because machine learning projects over a timespan of more than a few years feel like sandcastles with the tide coming in
Links and tech notes:
- the bot: @poptimal@llull.club
- my version of the torch-rnn Docker build
- the image on DockerHub. If you found your way here because you want to get an old torch-rnn project working, I have only done as much as I needed to keep the bots alive: the image won't run on a GPU or let you train anything.
- And, yes, I could try to convert the models to something I could run in a more modern machine learning framework, but that would have taken more work.