AKA: Less Ruby, more Rust-y

TL;DR: after many years of (more or less) honored service, I have finally pulled the plug on Jekyll. Welcome, Zola.

Diff: +1,152 −1,768.

This was long overdue, but I never had enough free days to do all of the boring but needed work of updating the skeleton of all mark-down files in order to match the front-matter config required by Zola. Not to mention the fact that I had to rewrite a bit of CSS and HTML to add support for Grids (..and do I like doing Frontend stuff? Nope).

In case you're wondering, Zola (https://www.getzola.org/) is yet another static web-site generator, like Hugo and Jekyll.

The main difference being that Zola is written in Rust, which means all I need to worry is to have the zola binary in my PATH, no ruby/bundler/gem version madness (as for Hugo, I think it's quite nice, but being a Rust person I'd choose Rust over Go any day).

As the website says:

Forget dependencies. Everything you need in one binary.

Not to mention that, of course, it's Blazingly Fast (although, I don't particularly care if building my website takes 1 or 0.2313 seconds).

On top of that, I'm slowly realizing the mad dream of having most of my tooling written in Rust (helix, my main text-editor, and sometimes wezterm).

Just 'cause why not, after all? If any of these tools crashes, at least I can blame it on people unwrapping when they shouldn't, instead of blaming a language itself that allows for things like use after free (do I have PTSD from debugging segfaults from C++ plugins in Maya/Houdini? Maybe).

No more interpreters, please

The more I keep working as a developer, the more I feel that interpreted languages are only good for tiny scripts that you throw away after a week. Past that scale, I feel it's 85123132 times easier to go with something like Rust, since once it's compiled for a specific platform and I don't need to orchestrate interpreters versions. I don't need to understand which one of 5312323 versions of ruby I can use for bundler, I don't need an installation of rvm (ruby version manager) just for the trivial task of building the HTML pages of my website. KISS.

Using zola, it's way easier to just git clone the remote repository for Zola, cargo build --release it and then use the new compiled binary the way I want. I can alias it, put it in my PATH, or do other quick tricks. I don't need to worry about a full Ruby environment any more.

If I'm really lazy, I can just do a brew install zola, although these days I'm staying away well away from brew, given I have an Apple Silicon machine with an arm64 and x86 version of brew installed which makes every install more.. interesting.

Then, I'm just a zola serve or zola build away from doing the thing that I'm actually interested in, which is maintaining my website up to date.

While ruby/gem are not particular hard by themselves, over the years, and over different machines, I struggled quite a bit to be sure I had all of the dependencies I needed to finally run that bundle exec jekyll serve command..

New Features

Toolchain aside, moving to Zola brought me a few more interesting features:

Which is just a fancy way to say that I can classify all of my articles with labels that can then be navigated.

That's pretty cool, since it gives me an understanding of what things I write the most about, and it's useful for the readers too since it makes it easier to find more articles on similar topics.

  • Templates that are actually easy to customize

That's just a personal note, but I found most of the templates themes to be very easy to customize. As matter of fact, the current theme is based on terminimal, with a few tweaks here and there.

It took a bit of time to understand how some themes work, but the good thing is that you can just peek at the git repository of a theme to understand where to put files and how to call them, there's not a lot more going on.

Until the next time

I have now rewritten this website 3 or 4 times, basically every few years. It's a nice exercise that keeps me close to the latest trends in the web-dev world and lets me tinker a bit with new technologies, which is always fun. So, see you on the next static website generator!