Scarlet Devil Mansion

30 August 2024

Upcoming Core Changes to My Projects

I’ve been doing a lot of thinking lately. Personal mid-life sort of stuff (I’m 40 years old currently), like where I want to go in life, what I want to do with the rest of my time on this planet, and what’s actually important to me and gives me joy. To put it plainly, it’s time for a change in direction.

The personal stuff is covered in a separate Gemlog post on my Gemini site, so I’ll leave most of that there and instead focus on what this change is going to mean for my programming/Doom/Quake projects. I’ll update this post with the Gemini link once I’m finished writing that.

EDIT: personal post is here: gemini://nanako.mooo.com/gemlog/2024-08-30-a.gmi

High-level Overview - Benben is Queen

Programming has been nothing more than a hobby for me since 2013 when I realized that doing it for work was far, far too stressful and unfulfilling. An endeavour I still took seriously to be sure, especially since it’s given others stuff they can use and enjoy, but a hobby nonetheless. Moving it to hobby status really helped my anxiety, depression, and stress, mostly because A) I’m essentially my own boss, B) I work almost entirely alone, and C) I can set my own schedule.

I’m extremely proud of Benben. Seriously. It’s exactly what I want out of an audio player, it’s fun to maintain, and it’s just fun to use. It and its related libraries are essentially my primary project, with my others (Aya, RemiMonitor, a few minor tools, and two Matrix bots) being nothing but secondary stuff I sometimes tinker with when I need a break. Nothing here is going to change much, except that I’m going to be emphasizing that Benben is my Big Project™. It’s where 90% of my focus will be. It’s my baby, and I’m in it for the long haul. The other stuff are all things I’ll continue to maintain as long as I can (and am interested), at least as personal tools that I happen to upload in case someone finds them interesting, but I don’t plan to add anything new. Benben is my child. It’s my focus, at least as far as programming is concerned.

That’s the big birds-eye view: focus on Benben and not get involved in any new projects. Just stick with the thing that gives me joy and polish it.

This leads into some more specific changes…

Library Changes

As I’ve mentioned before, Benben v0.6.0 is now in development. Things are going fine on this front, with a lot of the smaller bullet points in the milestone having already been taken care of. The next items I had planned to do two things this week were to integrate WavPack support, and to add YM2413 support into YunoSynth to solve this ticket.

But, after a lot of thought, I’ve realized I need to actually take a step back and do some deeper core cleanups first.

Benben has a lot of dependencies, and all of them except for the zstd.cr bindings are written/maintained by me. Initially it made sense to keep them separate, but since I’ll be refocusing exactly what my hobby will be about, it really is making less and less sense to keep them all separate. It’s a bunch of maintenance, confuses end users who want to make tickets, and it causes headaches with the Shard files (something I’m not the biggest fan of - give me pkg-config and shared libraries any day).

Here’s a list of the libraries I’ve written and what they do, plus what’s directly inside of Benben:

Yeah, it’s a lot, and it’s messy. Like why are my codecs spread across different modules? Why are my audio backend bindings split between two libraries? Why is RemiHjson still even included? These are all questions I’ve been asking myself. I’m also looking at the maintenance cost in terms of hours and sanity of having all these different components, and I’m not too happy.

So, to remedy this (and to also put more emphasis on “I write code for Benben’s sake and not much else”), I’m proposing a consolidation of most of these libraries:

This takes thirteen libraries down to five. I may also make RACodecs part of RemiAudio (haven’t fully decided yet), which would mean thirteen down to four.

The only real downside is that consolidating these will mean implementing new APIs to smooth over and abstract some differences, so it will take a bit of time. It will also probably disrupt other users of these libraries, though with how Crystal does a sort of tree-shaking sort of thing when compiling, it shouldn’t impact them too much. But I feel the benefits far outweigh the negatives.

My Other Projects

As I said, most of my focus going forward will be on Benben. Most of my other projects will remain, but will be deemphasized. Some will also just be abandoned.

Here’s what’s staying:

And what’s going away:

Speaking of Doom…

Speaking of Doom, I think my mapping days for it (and Quake) are mostly over. The way the community has shifted since Doom 2016 came out, especially over the past 4-5 years, has kinda taken the fun out of it for me. Other still enjoy it, and it still brings newcomers, which is exciting to see and makes me happy. But the community and I are just in two different places. So, I’ll probably not map much any more, or if I do, it will be entirely one-off stuff, and probably only for Doomsday Engine (or maybe for the original ROTT someday). I’m extremely proud with everything I’ve accomplished in Doom), and I’ll still play the game, but it’s time for me to move onto greener pastures ^_^

I do have an unreleased Heretic map I need to still post, though…