Website refactor

Published May 07, 2020 12:31 UTC on Yaroslav's weblog

A couple of months ago I had decided to completely refactor my website and blog. Finally I have done so, and even though I think it still needs some work, I am much more happy now with it than before.

It's been more than a week since I've actually migrated my site to the new format, but I haven't had the time to write about it, being all busy with my thesis work. Actually, I am writing this while I am waiting for some stuff that I need for my work to compile.

The old site

One thing that I didn't quite like about it, was that it was pretty bloated having used Django just for a little personal weblog site. It's not like there is something inherently wrong about using Django or something similar. I really liked to use it at the beginning since it is a pretty useful and comfortable framework to use, especially when you are a beginner. The problem is that it comes with a lot of bells and whistles that you most probably don't need, especially if you're just making a small personal weblog. But this wasn't even the main reason I decided to completely redo it.

However, the main reason why I decided to completely refactor my site, was that over the last couple of years since I first started my site, my overall workflow and the way I use computers had fundamentally changed, and I now found it quite uncomfortable to publish to and manage my site. I just find very jarring to use web interfaces for "productivity".

The way I would publish posts and do most of the "managing" of my weblog, was through the "admin" panel that I would access with my browser through a special URL. As I said, web interfaces are not my cup of tea, and that includes typing and redacting articles or posts. I have a nice and comfy setup of neovim which I actually use to type and redact almost all of the text that I have to write on my computer. And so I wanted to type my articles on vim, and preferably not even have to leave the comfort of my terminal to manage my site.

The new site

The last post that I wrote before refactoring my website, actually covers most of my thoughts on this topic, so I'll just mention what "technologies" I ended up using for my new site.

In that post I mentioned that I wanted to migrate from a relational DB based blog to an SSG system, and that's what I ended up doing. I chose zola over other SSGs because that's the one that I found the most comfortable to use and the most fitting for my needs, at least for now.

I could have just ended up making a completely static site with pure html and would have also been better than using Django, but I find markdown to be much more nicer to edit and read for simple texts, and I wanted to automate certain things such as templating, without having to mess too much with it myself.

I also ended up using a CI/CD system so that my site would get deployed and built automatically each time that I push to master on my "git server". I am using Gitea as a kind of git server, and Drone as the CI/CD system. So now all I have to do when I want to publish a new article, is write the article, commit the changes on my local repository, push the changes to Gitea on my master branch, and then Drone will pick up the push event and automatically build and deploy the updated site to my VPS.

The only significant problems that arose from this migration is that some URLs have changed, notably the RSS URL, but also that the URLs for blog posts are no longer under categories, but directly under the /weblog/ URL. They can still be accessed using the old URLs though, since I put some rewrite rules in nginx so that it would redirect from the old URLs to the new format.

Overall, I am much happier with my website and weblog now, and I hope that I will be publishing some new stuff here, even if nobody really reads this. Although in some cases that old bit might make it a bit more compelling to write certain things :)

The source for my website is hosted at https://git.yaroslavps.com/yaroslav/yaroslavps.com