Rebuilding the Site
Hey, it looks different here!
Yeah, so, the old House of Slack site was hacked. I think I was running a version of Ghost that had a vulnerability, some bot found it and exploited it, and it nuked the entire site and replaced it with two copies of the same spam blog post. All the text and images were gone.
That totally sucks!
It sure does! There’s an asymmetry around spam (and basically all sorts of anti-social online behaviors) where being a bad citizen (and gaining from it, even if only in tiny increments) is orders of magnitude easier than defending against the behaviors as well as repairing the damage. The site was nuked by some automated process that was launched by somebody, probably running on stolen compute. It can be automated because the process it goes through is mechanical and the same every time: find a site that it knows how to exploit, blast it to smithereens, and then plant the same rancid billboard it always does. Repeat forever. No person has to do anything once the bot is launched. Meanwhile, the site owners are all doing their own thing. Recovering my site costs me, a person, time to reconstruct things back to the unique state it was before.
In my case, the recovery process was frought. I discovered that I fucked up creating my automated backups, so the most recent backup that I had was missing all of the posts on Napoleon, Blown Apart. Those posts were available through the Internet Archive (love you guys!), so it wasn’t all totally lost, but it meant more work to go grab that stuff and fix up the links in those posts. So it was a bigger hassle than it needed to be. It all led me to thinking about doing this stuff differently.
OK, what did you do?
Well, I didn’t want to go back to Ghost. I did like Ghost - Markdown is nice, their editor is pretty good, the tagging stuff worked well, publishing with it worked well for me, the email stuff worked well, etc. But the site admin side of things was pretty miserable. That’s probably on me, but the process of self-hosting was always kind of painful, upgrading never seemed to go well, I was constantly having to monkey with file permissions and things to get the command line tool happy, etc. It had enough friction that I would just put off upgrading, and, well. We know how that story ended. So I wanted to do something different.
The previous version was actually the fourth version of the site. I had a very old static site with an old provider, then I ran things on three different versions of Ghost, all running self-hosted. The static version was fine, but the tools were kind of primitive and that’s why I ended up looking to Ghost. I wanted something more modern, the Markdown stuff seemed helpful, and fuck Wordpress. I don’t regret trying out Ghost, but at this point, it was time to go with a different way. I actually kind of wanted the old static site experience.
This is when I thought about the very good Infrequently Noted blog by Alex Russell. In particular, his piece on alternatives to React, part of his series on how the frameworks people use to develop for the web are destructive and wasteful. In that piece, he talks about several static site generators as strong alternatives for informational sites. That’s what I am writing here. It’s not interactive and never will be. It’s just me writing my thoughts, and hopefully people reading them. If people have input, they can reach me directly, comment on rules, whatever. But it’s just a static site. So maybe one of these would work.
I read some about several of them, and Hugo seemed like it would fit the bill. The truth is, my demands here aren’t crazy, and most of these generators would probably work fine. But reading a bit of the docs, it seemed like Hugo made sense, so good enough. I could re-use the Markdown from the previous version of the site and mostly could get things put together quickly, hopefully. I looked at some site themes, picked a nice and minimal one, and started converting the old site.
I had to extract the markdown from the old posts from the JSON backup, add the missing posts in, fix up all the links to match the new site structure, get the images fixed up, and figure out some nuances of Hugo to get things working properly. All told, it probably took me maybe 10 hours or so? I wasn’t really counting as it was mostly kind of fun learning a new system and working through things. In the end, I think I have everything working again, but some stuff might still be messed up. If you happen to notice anything, let me know!
How is it looking now?
Well, there are some big advantages. One, the site is now just a github repo. I don’t have to worry about backups or anything, because it’s just a ball of source. That’s very cool. And I can still write in Markdown, so the process of writing a post is basically the same as it was before. Neat. Publishing is now all set up to automatically update whenever I push to GitHub, so that’s pretty cool too.
But also, the site is just a static site. Not only is there not some backend rendering things, there’s no interactivity at all. Not even Javascript. It’s just html and css. Pure web content. I think that’s kind of important. Things that are just information should be created this way if they can be. It’s so fast and pure. My friend Jack Grimes has an open source project called Free Website that also gets at this: the basics of web technologies work and work well. You don’t need a whole bunch of stuff layered on top of it to get something usable. And it’ll be in your control. Is Hugo the right solution for everybody? No, probably not. But it’s worth the time to try and figure out if some kind of system like it is.
Anyway, the site is back up, and this is the first actually new article posted here. I’m going to try and keep publishing here, and I hope the new version lasts for a while. I haven’t yet figured out email publishing, but I’ll get that worked out soon enough. But RSS still works in the meantime, and I’ll post links on Bluesky. I will probably also want to convert Five Random Songs over, which will take more time. In the meantime, that site is also turned off until I’m sure it won’t get hacked as well.