Not too long ago I switched from a Djangobased blog I wrote myself, to WordPress. I switched because I did not have the time to keep adding features and keep it up-to-date.
I chose WordPress because I had used it before and it is quite fast and easy to set up and get going. Via the large selection of plugins, it is easy to add just about any functionality to the blog. However, all this goodness comes at a price. WordPress is one of, if not, the most used blogging platforms. WordPress being a large program makes the potential for security flaws big. WordPress is written in PHP multiplies the risk of security flaws by 100. I spend hours tighten security on the blog. It is not so much WordPress itself I am worried about. It is the 15 plugins I have installed to make my relatively simple blog work. Every time I logged in to WordPress I had to install new updates for one or more plugins. The WordPress comment system is under a constant spam attack. I received over 800 comments a day on the blog and 99.9 % of them as spam. Another thing that bothered me is the WordPress is slow. Even when using cashing the performance of WordPress is terrible. All in all using WordPress was an awful experience. So, I started looking around for another solution.
Looking at different ways of running a blog I came across the concept of a static blog. I was somewhat intrigued by this approach and came across Pelican.
Pelican is a static site generator written in my favorite language Python. Information like site name, site address, theme, template, etc. is set in a config file.
Blog posts and pages are written in markdown, restructured text, or latex. Publishing a site can be done manually.
However, Pelican has made this very easy by providing a make file to publish the site via Github pages, FTP, ssh, and many more. For me adding a new post is as easy as creating a my_new_post.md file in the contents folder write the post and then publish the site with the following command from within the Pelican blog folder.
Pelican will then create the static site and publish / copy/git push it to the defined location depending on your publishing method. I use a web server on UnoEuro for now so I publish via FTP.