Using Nikola

The first thing most wanna-be bloggers do (including me years ago) is to gravitate towards WordPress. Perhaps because of word of mouth or because most hosting providers simply advertise some of their offerings as "WordPress hosting".

While a dynamic website has lots of pros, one of WordPress' inherent issues is the constant need to keep it updated. And because I would love to once in my life have the luxury of set it and forget it I decided to adopt Nikola.

Nikola is a lightning fast static website generator that handles html, css and various other types of static media in a coherent way. I also tried to use Pelican, but had to try something else because of how it handled skins. The latest verion of Pelican was also rather unusable (had trouble deploying), so I decided to continue my search and I'm happy with the result.

Some of Nikola's strongest points include:

  • Can be installed with pip+venv (yay! Ansible!);
  • It really is fast;
  • Offers a build-in webserver to preview your pages;
  • Allows you to use vim (I'm warped by VIM-CTHULHU);
  • Has a sane conf.py file;
  • Allows you to define various deploy locations (like github, S3, SFTP, etc., whatever you have!);

That last point may be of special interest to any DevOps person. You can define various locations and deploy only when needed ex.: nikola deploy internal will update only the company intranet via SFTP and nikola deploy others would upload the same content to an external website via ex. rsync. You can mix and match protocols as needed, the naming convention for deploy channels is also up to you.

It's nice to shake things up a bit once in a while!