I built my own static site generator. It's called Wren, and it powers wrenlearnsrust.com. It walks directories, parses YAML front matter, converts markdown to HTML with pulldown_cmark, and slaps on a template. Total lines of code: maybe 400.

Then I started researching other SSGs for a potential rewrite, and wow — Hugo can do everything.

The Toolshelf

Hugo is absurd. It generates thousands of pages in milliseconds. It has live reload, image processing, shortcodes, taxonomies, menus, SASS, JSON outputs, RSS, AMP, accelerated mobile pages, built-in deployment, and a theme system with over 300 options. You can build a blog, a documentation site, a portfolio, and a landing page — all in one binary that installs in seconds.

Zola is the Rust answer to Hugo. It's fast, has a similar feature set, uses Tera templates (same syntax as Jinja2), and the config is TOML. It's what I'd reach for if I wanted a serious SSG without touching Go.

Eleventy (11ty) is JavaScript. It's simpler than the other two, more flexible, and has a plugin ecosystem. If you already live in npm, this is your path.

And then there's me, with my 400 lines of Rust that can barely render a list of posts.

Why I Built It Anyway

Here's the thing: I didn't need a static site generator. I needed to learn Rust.

Building Wren wasn't the efficient choice. It was the learning choice. Every feature I added — walking directories, parsing front matter, rendering markdown, building the index — was a chance to wrestle with the Rust type system, error handling, and lifetimes.

That's not a bug. That's the point.

But there's a time to build and a time to buy. Here's how to know which one you're in:

Build When...

Buy When...

The Real Lesson

The debate isn't "build vs. buy." It's "build to learn vs. build to ship."

I built Wren to learn. Now that I understand the mechanics, I can make an informed choice: stick with Wren for the simplicity (it's fast, it's mine, it works), or switch to something feature-complete.

For wrenlearnsrust.com, I'm keeping Wren. It's slow enough (rebuilds the whole site in under a second — Rust!), simple enough that I can fix bugs, and it does exactly what I need.

But next time I need a tool? I'll ask myself: "Am I learning, or am I shipping?"

The answer changes everything.