My most recent bout of protracted silence on this blog has numerous causes. I woke up one day in early February with sinus congestion and other upper respiratory conditions. Convinced I had contracted something awful, I went immediately to my happy place (1990’s Japanese RPG’s; in this case, Final Fantasy 9). Within an hour or so, it became clear that I was, in fact, physically fine. However, my stint in Final Fantasy 9 morphed into a stint in Final Fantasy 10 and that somehow became a protracted session in Minecraft.
About a week ago, I challenged myself to find a more productive outlet for my energy, and my first thought was my lapsed blogging. This prompted a pang of annoyance. I would have to open up Libre Office and type a thing. That part would be easy, but once done, I would have to convert that to HTML in my terminal via a saved pandoc command. Then I would have to do another terminal command to create a new HTML file for my website. I would then have to copy and paste said content from the terminal to the new file (ugh). Then, I would have to make sure pandoc hadn’t botched the HTML formatting (it occasionally lapses in its duties, especially with regards to italics) and remember to rebuild the website project and turn off the local server (for if I don’t, the XML feed will have the wrong URLs). Finally, I would get to manually FTP files up to my site. Just… ugh. This made me even more disappointed with myself.
At this point, you are probably wondering how a technically savvy person, a software engineer no less, ends up with such manual and error-prone process for his own website.
That story begins roughly six years ago, which was the time when my non-fiction essays started coming frequently enough that they warranted a blog. I had written a website for Fuzzy Hedgehog Press in Go, but that had been primarily to support purchasing, of which very few were happening from the site itself (nearly all were coming from Amazon). Very few of the e-commerce pieces of that software were reusable for a blog and the biggest problem with that site was that it wasn’t very visually appealing anyway.
I stumbled upon Squarespace and found solutions to each of my problems. It has e-commerce support, blogging, and elegance, all in one package. It was pricey, but it ticked all my boxes. I signed up, and for about a year and change I was quite happy.
Then, as I’ve documented prior, the 2016 US election happened, and my priorities changed entirely. Faced with the need to reduce expenses, I exported all my blog posts from Squarespace and spun up a cheap WordPress instance on a hosted server. It wasn’t as pretty, but I no longer needed pretty. I needed affordability.
WordPress did not last long. By summer of 2017 I was taking a much-needed vacation. My husband and I had been in our hotel for perhaps a day when I got an email from my web hosting provider that there had been suspicious activity on my WordPress instance. Sure enough, I’d been hacked. I lost a day and change of my vacation to resetting passwords across dozens of sites, pulling down my data out of WordPress, and thinking about how I wanted to host my blog going forward.
With no other good options apparent, I decided to go back to Squarespace for a year while I figured out if there were any other options for me. The new plans brewed for a while. My primary requirement was that I wanted the site to be statically generated. There would be no security concern if there were no login portals. Static HTML can’t be hacked.
I stuck with Squarespace for a full two years before finally executing this plan. When I finished paying off my student loans in 2018, much of the pressure that had propelled my spending cuts in 2016 dissipated. But Squarespace was still an expense I could live without, so in 2019, I set up this most recent incarnation of my blog. I decided upon the static site generation utility Cobalt, firstly because it had all the features I needed, and secondly because it was written in my favorite programming language, Rust.
Static generation is very secure. It is also annoying. In the case of making a new blog post, those annoyances are mild. But where I really feel the pain is when performing a change that isn’t easy to generalize in Cobalt, such as updating the site with a new book. There are certain other features I would like to have, which would be so onerous in Cobalt (if not impossible), that I don’t even dare attempt them, such as the ability to show blog posts filtered by date, tag, and/or category.
For the past year or so, a thought has been in the back of my mind that it would be nice to build out a non-statically generated site. It would be cheap and secure because I’d code it myself. That involves a time investment, but it’s one I’m now willing to make, as I have exhausted all other known options. They are either too expensive, too insecure, or too annoying to maintain over time.
Hence, my challenge to myself to break my video game funk became building out the new site. The server for this new project is built on top of Actix, which has the benefit not only of being a Rust framework, but also of being astoundingly fast on TechEmpower’s most recent benchmarks. Visually, the new site will look much like the current one, but hopefully, by the time I’m done, it will have a few snazzy new features, such as the aforementioned blog post filtering. The biggest gains will be on my production side, where I hope that activities like posting blogs and releasing new books and covers will be much, much simpler.
I’ll drop occasional development updates on this project, but expect bouts of silence for some time more.