The Flower SSG


Today a cute little program landed in my RSS feed called flower. It promises to be simple to setup, grow infinitely, and it’s templating engine is a thin wrapper around just writing Clojure.

It all sounds awesome, I’m just out of one big debugging session with Zola which definitely help me over the edge of testing it out.

The ideas are nice, and I already like the way Zola’s templates have sensible defaults before allowing you to overwrite them with your own.

The part where flower essentially generates a big ninja file and leaves rebuilds and orchestration to that is also nice.

I tried to play around with it and found two things I’d like to change. It’d be nice to check my links automatically like Zola does, so a typo would error out instead of passing into the rendered site. And I also like how Zola sort of “homogenizes” your pages, into always being index files in directories.

I’m sure I’d be able to write the former into a failing transformer, however the latter might prove a problem.

default_build.clj contains a function which I’d like to override. And I realized that to do that, unless the function is made to be overriden by exposing everything and being extremely small, I’d need to copy parts of this program into my config, and on top of that putting an override into expressions wasn’t picked up.

I love all the ideas behind flower, but I’m not going to use it just yet, as whenever I look elsewhere I find that Zola is probably… good enough.

I have to shotout though that the syntax for embedding Clojure is really nice, I’ve already used 《》1 in GTeX, they’re very pretty and rarely used outside of exactly this, embedding a language into markup. Secondly they use ◊ with a good rationale for other things like splicing in variables or function calls, which I might write down into my toolbelt for later.

I initially eyed it because my Zola setup is kinda janky for tool calls like rendering mermaid, it works phenomenally well when it works, but in practice it needs a webserver which exposes the tools in the background, I use kroki for that but it seems to me it might be nicer to call mermaid-cli directly.

  1. Or rather wanted to but accidentally went with «»