In the category of "too many ideas," I've been writing code for a bunch of projects I've had in flight. Maybe I do this to counter the chaos in the world, but it feels good to sit down and make things. Today I sat down and cranked out almost an entire feature on one of the projects, which is unusual because I don't usually have the patience for that. Part of the reason that I do it is that there aren't other projects out there that do exactly what I want, so I do my own thing. The big change in my direction is that I give more of it away and open source it now, and look for the basic abstract implementation and then consume that in the specific ways I want. Here's the quick run down of what I've got in flight.
It should hardly come as a surprise that this is a thing. This was born out of this very blog, but I have three real needs for it right now. The first is obviously the blog. The second is that I need to replace the CoasterBuzz Podcast site, because it's based on ancient frameworks that aren't supported anymore. I might not be doing the show, but I want to keep it available. I also want to move it to a Linux-based container because it's cheaper that way. The third thing is the eventual return of SillyNonsense, which I think is like a YouTube channel for whatever silly nonsense that we decide we want to make a show about.
The new parts of the project are to add the podcast file management, which is what I did today. I still have to implement the RSS sauce, but that shouldn't be very hard. The big value here is that the project compiles to a library that I can reuse in all three arrangements. Each site references the packages and just overrides the layout template and style, and each magically looks like its own site. I don't need to maintain three code bases. I quietly flipped this blog on to it a few nights ago.
I've admittedly neglected this one for a bit. Like the blog, it mostly exists now as a library that I can consume with CoasterBuzz and the commercially hosted version. I haven't done a release since the end of last year, and the last thing holding this one up is some error handling on the admin side. It's stupid fast and can scale to an extent that's higher than I can (affordably) readily prove. All of the telemetry on PointBuzz, which is using the hosted version, puts the rendering times generally under 50ms, and that's on a fairly base level database and low-end app servers. When I get this release done, I'll start thinking about how to modernize the front end, somehow without sacrificing its amazing Google juice. Those pages index so well.
I honestly got a little burned out running up to the release of the hosted version, so I needed to step away from it. Also, when I did launch it, I didn't market it at all because Covid, so I'm still the only customer. Instead of spending money to market it, I'd really like to find a good candidate to just give it away to for free, some tech-savvy audience, but I haven't spent much time thinking about what that would look like.
This one is more of a science project at this point, but I think it's totally doable if I just sit down for a weekend and try to bang it out. As I mentioned before, the nonsense of the commercial services is getting old, and I'm tired of moving my collection and playlists every few years. Google forcing everyone over to YouTube Music is a backwards move, and even though Google is responding to the criticism, I'm not confident that they'll make it equivalent to the old service.
So far, what I've done is found that it's easy enough to upload a file, look at its metadata, and store that metadata and the file itself. Beyond that, you're just referencing ordered lists of those entries. The persistence of it all is remarkably easy. Building a web interface for it will probably be medium-easy. Making a mobile app for it, I'm not sure, because I haven't done that in years, but I doubt it will be ridiculously hard. What I'm still hoping is that Google backs down on forcing a subscription for the basic functionality, in which case I'll never do this, but I'm not going to hold my breath.