Good Bye Wordpress, Hello Jekyll!
Ever since I started my website two years ago, this blog has been run on Wordpress. Now I have finally made the decision to ditch Wordpress and move over to Jekyll, a static site generator. I’ve spent the last few days in completely rebuilding my website from scratch using Jekyll and the Bootstrap CSS framework.
What’s so special about Jekyll?
In case you are unfamiliar with static site generators (SSG), they are tools that take Markdown files and HTML templates as an input and generate deployable HTML files as an output. This differs a lot from traditional content management systems like Wordpress: While Wordpress stores the blog posts in a database and renders the final HTML file every time someone visits the website, Jekyll generates the final HTML files only once which are then hosted as static files on the webserver.
Benefits of Jekyll
Wordpress is an acceptable blogging solution for the average content creator, but I wasn’t quite satisfied with it as Wordpress has slow page load times, might be vulnerable to hacking attacks (especially the plugins) and is hard to customize. In all these points Jekyll outperforms Wordpress by far:
Since all pages are static HTML files, there is absolutely zero time wasted for the generation of the website on the server. It means that the only thing that the server needs to do is to blast out pre-rendered HTML files. No database accesses, no PHP code. Speaking for my website, I can definitely see a massive speed-up in loading time.
In contrast to Wordpress, Jekyll does not rely on a database but uses flat text files for everything from configuration over templates to blog posts. This means that I can now fit my entire blog inside a single Git repository where I have first class version control at hands.
As only static HTML files are hosted on the webserver, there is no way to exploit security vulnerabilities in PHP code since there is not executable code to begin with. This makes static sites a lot more secure in comparison to Wordpress which has a long history in hacked websites (mostly due to insecure plugins).
Of course it is possible to write your own Wordpress themes and plugins and I have also already tinkered with that. However, it requires much more knowledge about the framework and is more time-consuming than building a Jekyll theme.
Jekyll features the Liquid templating language which makes it super easy to build your own templates. Additionally, you don’t have to worry about security when building a theme as everything gets compiled into static files.
The Downside: No Comments
As always every benefit comes at a cost. In the case of Jekyll it is, that the entire website is static. There is no way to include dynamic server-side code into a Jekyll blog. While this is not much of an issue for the blog posts themselves, it means that there is no native comment system for Jekyll. Of course a comment system requires server-sided processing since the comments must be processed and stored on the server.
So if comments are required, one must use an external comment system. Sure, I could do it the lazy way and sign up for Disqus but I decided against that option. I looked at the HTTP requests that Disqus makes with each page load and quickly realized that Disqus is a real privacy nightmare. It sends out dozens of requests to several ad networks including Google and Facebook each time a user visits the website. This definitely isn’t an option for me.
So for now I chose not to include a comment system. However, I have seen that there exist several self-hosted comment systems like Schnack or HashOver. I might set up something like that in the future but currently I lack the time to install and take care of such a system. So at the moment, if you want to give me feedback or ask a question, just write an email.
Privacy in Mind
As I rebuilt my website I took the opportunity to make some privacy-oriented changes too. I ditched Google Analytics for a self-hosted Matomo installation and moved from Google Fonts to self-hosted font files. This way if you go to my website, no third parties will be able to collect any data from your visit.
I hope you like my new blog and its design. If there is anything I should improve, please contact me. As already mentioned, I built this theme myself despite not being a graphics designer but rather a programmer. So if you think that my design is really bad, just let me know why.