haselkern

Static Site Generators Are Great

A static site generator is a piece of software that takes a bunch of input files and turns them into a static website. Often these input files consist of some content and a theme for making the content look nice.

A static website is one where the content does not change. It is static. Everything you see on this website is just as when I last uploaded it to a server.

This has obvious disadvantages. I cannot have comments on here or show something like the current number of followers I have on any platform, without resorting to JavaScript calling third-party resources.

But it also has advantages. A static website is simple. After editing my content, I push a button on my computer to preview the website and another one to upload it. That's it. I'm currently (April 2024) using GitHub Pages which is free to use and really stable. I can go months without thinking about this website because I know that it won't go down or be overrun by hackers.

A static site generator works best for me and can probably work for you too, if you are not afraid to touch the terminal and fiddle around with theme files.

Now that I have switched the site generator once again, it might be fun to reflect on the changes this website went through.

My Website Journey

I created this personal website in 2016 using a custom generator that was just called build.py at the time. It was written in Python and very simple. It would read in a single template HTML file and fill that with the content of every markdown file it found in the working tree. It had a special mode for generating an index file and was able to read JSON frontmatter.

Here is the majestic beauty I built with it:

a colorful website with big clickable tiles

Eventually, I got fed up with this design and at the end of 2016 I implemented a cleaner look:

a sparse website with a few links and a stylized font

In July of 2017, I renamed the tool to goliath. I had big plans with it at the time and used the chance and motivation to refine the design of my website over a the course of a few months.

a website with the title on the left side and a few links on the right

the same website, but now with the title at the top

the same website, but now with a tilted background box

Writing your own generator is fun. But when tinkering with it you barely improve your website. Instead of writing something or creating a new project, you spend a lot of time tweaking the generator for your website. That's not a bad thing, but it was not wanted I wanted to keep doing.

That's why in March of 2018, I switched to the first "real" static site generator: Pelican. It seemed simple enough and I was into Python at the time. I also changed the design a bit.

the same website as before, but now with thinner fonts

In September of 2018, I switched to "Ivy". The package on PyPi has been replaced by a machine-learning library, which I find interesting. I don't think the design changed much, but I cannot rebuild the website for this state.

In May 2019 I made the switch to Hugo. Hugo is great. It is fast, has lots of customization options and is easy to use thanks to its extensive documentation.

This was also the first time I thought about what I wanted people to do on my website. In the screenshot, you can see some actions for every project, with the main action, like opening a website or downloading a file, being highlighted.

a black-and-white website with a few of my projects

Hugo is pretty great, but it also feels really big. There are so many different things to do with it, that it feels overwhelming at times. It can do everything I want, but I was looking for something simpler.

Around this time I was beginning to get interested in Rust and eventually found Zola, which is written in Rust. Being hyper-focused on that language I was eager to get some use out of software written in it.

So in December 2019, a new design was built with Zola. I kept the idea of the previous design but made it more playful with some images and rounded boxes.

a website with my projects, each project has an image and some actions

In August 2022, I switched back to Hugo. God knows why.

I also made the website much simpler. It featured a single stream of posts because I wanted to blog more. It is much easier and more fun to write a few lines about some topic, than it is to create and maintain a project. The previous design featured the same few projects for years. With this design, my projects were still accessible, but content would be the new focus. It also was the first design to feature a dark mode.

a simple website showing a post preview, it is split into light and dark mode

What now?

Two years after the last design change, I'm writing this post and notice that I have written way less than I imagined I would. Finding the motivation to write things down is in itself a challenge. Having a half-baked website theme that does not properly support many parts of markdown did not help. I can only really blame myself here. I wanted to make the design my own and, again, spent more time tinkering with the website itself than writing about more interesting things.

I decided to switch back to Zola. I like the simplicity. Simplicity is also the main theme of the theme I'm using, Zola ʕ•ᴥ•ʔ Bear Blog.

zola bear blog preview

It is inspired by a tiny blogging platform I found: bearblog.dev.

This is a blogging platform where words matter most.

Shun the bloat of the current web, embrace the bear necessities.

I think that's a great mission. Instead of getting blinded by flashy features, I just want a place to write down my thoughts. After all the changes this website went through in the previous years, I'm curious as to how long I will like this design.

Tags: #web