From Jekyll to Zola
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 unwrap
ping 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:
- Custom Taxonomies
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!