Changes (in Tech Stack)
Fri, 13 Feb 2026 01:09:35 -0800
New year, new server setup
Some big changes are in for this blog. Which is fun because, while it hasn't quite been a year since the last post, it's still been a bit. I've had ideas for posts but quite frankly, this has always been more about whether I could rather than having a practical need for a blog to post on. Maybe someday I'll get back to writing tutorials for SDL3 or something.
Anyhow, the changes! Since the last post, I actually got a proper server machine to run from my home! Meaning no need to rent a VPS and all the joys of being able to SSH into a system that's 5 feet away. It started out with a similar setup to the Vultr server I had previously, but gradually expanded. It now hosts a plethora of things, from a Minecraft server to a collaborative document server to a Git server and more! Given that it has significantly more storage, RAM, CPU speed, and such, it's been quite the capable beast. All originally using Apache, though that changed last week.
My document server stopped working. I'll spoil the outcome and say it was a permissions error, but it was strange and eluded me enough that I decided to just completely revamp my setup to be able to work with this stuff better. Out with the old Apache server, in with the new nginx server. I'd been meaning to do the change eventually anyway, and this gave a good reason to do it. It wasn't the easiest, of course. Learning how to transition all my proxies over was an experience. But since it was a fresh start, I was able to set it up in a way that's a lot easier to extend. The last setup was rather... cobbled together. I just had basically everything in one config file instead of using a directory of site config files. But now, I have that. And it's honestly a pretty clean setup if I do say so myself.
But of course, the biggest change in this update is...
The Blog
As detailed in my previous post, I was using CGI for converting the .syn format into an HTML format. CGI in Apache is incredibly easy to set up, but it's a bit more difficult in nginx. Plus, I was planning on changing it out anyway. So I got started with the hard part of this whole process: Changing the blog processing to a server.
Again, I used Rust. It's a good language for my purposes and does some elegant stuff. Like, look at this line of code and tell me it doesn't look gorgeous.
let blog_contents = file.get_elements().iter().map(|e| e.generate_tag()).collect::
That's how the page you're looking at now was generated. Now, this all hinges pretty strongly on the generate_tag() function. That's part of a separate Rust library I made to handle parsing .syn files. But regardless, I just like how it looks and feels to use. It also has decent safety and a pretty simple method of listening for TCP messages on a port. It's basically just string handling (though technically it's a binary stream) so it's reasonably easy to parse. Of course, it takes some extra work with things like making sure the server doesn't allow access to files that aren't within the right directory. I specifically wrote it with the idea that it'd be using a proxy through nginx, so it doesn't support anything fancy like HTTP/2 or anything like that. It also only takes GET requests. But it works sufficiently well for my purposes and I'm pretty proud of it!
I've also done smaller things like switch a bunch of code over to Codeberg and start signing my commits and all that. It's too much to write about, especially if I want to give myself time to do it. But sometimes it can be good to reflect.
Of course, some things never change. For example: I continue to push the limits of when I should sleep in order to do these projects and write these blog posts. So you know it's the same old Rhapsody that you've always loved. I assume. I don't know who actually reads this (if anybody). Anyhow, I have a long day of screaming children ahead of me so I will take my leave.