guest@acallard.net: $ ~ stat blog/2023-08-23.starting-this-blog.html
guest@acallard.net: $ ~ cat blog/2023-08-23.starting-this-blog.html

Starting this blog

Well, here I am, writing a blog post. I don’t really know what I will do with a blog yet, but it happened that I had some scientific papers to read for my PhD this summer. So instead of doing that, which would have been reasonable (but what does it mean to be reasonable anyway?), I did the exact opposite: I spent a lot of time having fun while coding this website (Pascal, I beg you, you never read this!).

Why?

This is actually an attempt to revive my website, which had laid dormant and had been slowly forgotten in the weird limbos of not being exactly completely dead, but having suffered a sustained lack of updates over a really long time. My CV was clearly outdated (I am no longer a master’s student: that was two years ago), I hadn’t posted the preprint of an article that has now been under review for roughly a year, etc…

There are many reasons for this sad state of affairs. The main one is probably that I lack the self-discipline to maintain the website up-to-date with regular small modifications, although it would have been easier to sustain than having to modify everything all at once. Another reason is that, when I developed the (now previous) template of this website, I lacked a quality that clear-headed people call “lucidity”: indeed, I thought that having pictures on top of every entry on the website (be it an article, a publication or a talk) would make a good impression on the viewer (as it does on every website on the internet). Of course, it hadn’t crossed my mind at the time that these websites are maintained by professional journalists, and not by procrastinating students: I quickly grew bored with having to draw images for everything that I wanted to publish, and rather than addressing the issue at hand, i.e. removing image banners, I just stopped writing altogether.

So, with this entry comes a new template for the website: it’s new and shiny, and more importantly it won’t require me to put as much work into each blog entry that I want to write, or each CV update that I want to do. Hopefully, this means that I will write more regularly from now, and that I won’t let my CV become out-of-date again. Yet, I won’t commit to anything about this blog: I have other things to do, like a thesis to write, and apparently I’m the only one that can make it happen! On a more serious note, this is also the first time that I entertain the idea of having a blog online, so I have yet to see how well I manage this new hobby.

As the reader is very perceptive, they may have noticed that this blog is hosted on my professional website. Indeed, while I don’t plan to only blog about my professional activities (i.e. research and teaching), I won’t be blogging much about me either. What does that leave me with? I expect to write about computer science, computers in general (as many Linux enthusiasts, I tend to frequently profess my love for my favorite distribution1) and maybe sometimes a bit about under-the-hood machinery (like, for example, the inner workings of this website).

Finally, I want to express two words of caution. First, most of the writing here will express my own opinions in a somewhat informal fashion, so I would appreciate the reader to be prudent in their judgment of the researcher/teacher that I am at the light of this blog. Yet, maybe paradoxically to the previous point, at the moment of writing each entry, I did not deem them irrelevant to this website: as such, many personal aspects of my life will remain unknown to the reader, so I would like them to be cautious in their opinion of me as a person as well.

How does it work?

To decide on which platform I would build this website, I had to think about what it would be used for. First and foremost, it exists as a way for my fellow academics to find me when they look up my name online: these people are mostly interested in quickly obtaining my email address, or potentially knowing the kind of research that I’m doing. This means that the platform used to build the website would not require any kind of input from its visitors. Second, I might occasionally use it to write more regular content than just occasional CV updates: for example, I could talk about topics that I enjoy on a personal blog. But I would still remain the sole author of every page, blog entry and update that would ever be displayed here.

Conclusion: I do not need a database or server-side computations, so a completely static website is sufficient. Furthermore, this website is mostly plain HTML+CSS (there are a few bits of javascript to display math formulas and obfuscate my email address, but only that). Obviously, this choice limits interactivity with the user and prevents, for example, the existence of a comment section (as opposed to pretty much every other online blog ever). I don’t believe I am in need of one, though maybe this will change in the future; for now, I rather encourage you can write me emails to which I would gladly reply!

As explained in the footer, this website is built using Pelican, a static website generator. It processes Markdown files into an internal representation of the yet-to-be website (basically, a Python dictionary that I can modify at will with scripts), and then it exports everything into HTML pages with a templating engine called Jinja. It can also conveniently embed files and keep track of the links between pages without having to guess what their final URLs will be, it automatically builds categories and also keeps the blog index up to date.

Most pages of this website are transformed Markdown files, though there are two exceptions: the list of my scientific writing and the list of my talks. These two are stored in JSON, and are processed by Pelican thanks to a small Python script that I wrote (along with a bit of Jinja code for the HTML export). I don’t consider the script clean enough to make it a proper plugin3 (by Pelican’s terminology), but I can share it to whomever would like to take a look at it.

Finally, a word about the appearance of the website: some themes already exist for Pelican (here is the official list), but I chose to develop my own. I tried my best to make it clean, W3C compliant, but I am no professional webmaster and I make mistakes, so I would gladly receive reports of errors were the reader to find any4. This website looks like a terminal, which may deter some people from reading it. But considering my potential audience, they are as likely to be annoyed as they are to be amused by this choice, so I will take my chance! Of course, the look and feel may evolve over time, partially because of the inevitable mistakes I made while coding it, partially because I may get bored with it. But, according to one of my favorite quotes,

“University websites are like distant stars, when you look at them you see scientists as they used to be many years ago.”
@OdedRechavi

it may still look the same in an eon or two.

Final word

If you are reading this, it means that everything works and the new version of the website has been deployed! One problem is that some pages no longer exist in this version of the website: I accordingly modified my .htaccess to provide some redirection and prevent broken links, but I’m no expert in those things, so we’ll see how well this update goes.

Anyway, I guess there is a limit to what procrastination can achieve. Now that the website is functional, I no longer have any excuse: I probably should go back to working on my PhD now, shouldn’t I?


  1. I’ve been using Void Linux for the last two years, and I really enjoy it! (Though miscreants would tell that I had issues with external monitors, I assure you that Void Linux had nothing to do with it2!)

  2. It was an obscure issue between wlroots, the Linux kernel and Mesa.

  3. The creation of Pelican plugins would require entire dedicated posts, and not just a few lines in the first entry of this blog. I spent a bit of time scratching my head trying to understand how Pelican supports additional scripts, and I feel obliged to mention a few resources that helped me (like this post or this series, along with the official documentation.

  4. So please, have fun trying to break everything here! However, I really do not have the time (nor the will) to maintain support of very old or non-standard-compliant Web browsers. In case you’re wondering: no, I did not even try Internet Explorer. It’s evil. And also, you should use Linux, obviously.