Back to Home

Migrating the Build

+ tech + personal

Migrating my blog from Jekyll to Cobalt

As you may know, this blog is hosted on my VPS, a small machine rented from Netcup that I run FreeBSD on. Running Jekyll also means running Sass. Dart does not support *BSD, which means downgrading the relevant gem as mentioned in this Jekyll issue. This is a patchwork measure. Subsequent updates to Ruby itself caused the logger gem to break this blog entirely due to an upstream change that broke Jekyll. Due to some cursed combination of factors and support issues, it ended up being easier to backport that Jekyll change. Trying to update the Jekyll gem on this machine causes errors I just can’t fix (mostly updates failing to install) and Ruby itself getting updates keeps breaking any manually overridden gem due to it explicitly setting a versioned Ruby shebang. So I’d need to reinstall or mass-modify all of those gems every time. Now that last one might be a user issue. But it was the last straw that made me decide that, since I’m leaving GH anyway I might as well look into other options to build my blog!

Prioritizing features

So I’m lazy. All programmers are, or should be anyway. It’s better to spend a lot of time automating something once than to have to put in a lot of manual effort every time. This cursed way of thinking goes even for situations where we don’t spend enough time to compenate the initial timesink. So what is it that I really need for this blog when migrating it?

  1. I’d like to keep my Liquid templates
  2. I’d like to keep the existing theme, with SASS, just without Dart
  3. I’d like to keep the RSS/Atom feed alive, if possible
  4. The sitemap is cool
  5. The current tag/category features kind of suck because they only link to more specific feeds

So we start looking into options that support that subset. Jamstack has a pretty large list of generators to start from. Selecting Liquid templates leaves us with 14 options, including Jekyll. So 13 that are good for my use case. Then we start filtering out anything built on top of Jekyll, and out go Octopress, Almace Scaffolding, and JAQ, and now we’re left with 10! Next up, we filter based on certain preferences, and we elminate anything that runs on NodeJS (and alternatives) or C#/dotnet. Anodize, Enfield, Lego, Pretzel, DocFX, and Eleventy are out, 4 left! Next we kick out Bridgetown since it depends on Webpack or ESBuild since that implies the NodeJS dependency anyway. Stati is dead, the last commit was 6 years ago, and the lacking features include Liquid template stuff. Serif has been archived since 2018. That leaves us with Cobalt. It’s being actively developed, runs on just about anything Rust runs on, which includes FreeBSD as tier 2 target w/ host tools! Now Cobalt does have some differences from Jekyll, but they do provide docs and there is a somewhat outdated but possibly working migration tool in their org. If it doesn’t, I’ll have a bit of a struggle getting set up, but I’ll manage. Manually if I have to!

Proceeding from here

First up, I’m gonna get a local copy of the live site set up on my laptop. I’m off work for three weeks, and besides some personal stuff, I’ll have the time to wrangle on the blog. Then I’ll start modifying my blog over in the migrate branch on the backing repo, and keep working it until I get workable output. If it ends up not working, I’ll be in for a bad time. If it does end up working, however, I’ll have a way to build my blog that doesn’t involve manually handling mismatched dependencies and breaking updates. It also means I get to rid myself of Ruby, which is currently only installed on this box for the sake of this blog getting built.

Once I get everything up and running, I’ll breathe new life into https://zwei.skaye.blog (which is still a permanent redirect at the time of writing) to host the place and compare shit. Naturally once that’s all done, it’ll move back to the current state of affairs! So, I’ll get to work on this as much as I need to, before and after AnimagiC Mannheim. Which reminds me, you can come and shake my hand there, just pop me an email or contact me on Discord (@rivenskaye) if you plan to!

© 2025 Riven Skaye   •  Theme  Moonwalk

Ramblings of an Alchemist by Riven Skaye is licensed under CC BY-SA 4.0 International Creative Commons logo CC-by Icon Share-Alike icon