The blog setup that is just right for me

Published May 5, 2025
Cover image

On the 24th of February, as I was browsing through HackerNews, I read this comment by user iamwill:

If your goal is to write, the worst thing you can do as an engineer is to try and write your own blog engine, or fiddle around with some custom settings.

Fight that urge. The thing to tackle is to figure out the habit of writing first. And you can only do that by writing consistently. If you have nothing insightful to write, write about something you took a couple hours to figure out in a TIL.

For some reason, it stuck to me. I do think it makes a very valid point: aiming for a perfect setup will make you waste a lot of time, and it won’t help you create any quality content. But I do think that, up to a certain point, customizing your workflow to suit you the best can be beneficial to your experience as a writer.

So, let me explain my setup, how I managed to implement some very simple and quick changes to make blogging more enjoyable, and how you can do that too.

The dead blog issue

Not long ago I migrated my website from simple HTML+CSS+JS, plus a WriteFreely instance for my blog, to an integrated static website built with Astro.
It was a—strictly speaking—unnecessary change, but one which I don’t regret at all: now my website is slightly more professional and much more maintainable and extensible, the blog has the same visual style as the main website, I have one less service to keep up, and I learned some much-needed front-end skills.

But I still had (and partially have) one issue: my blog was dead. The post post before this one came out in 2023—two years ago—and that didn’t set right with me. I have always been a proponent of self-hosting and data sovereignty, and in that field there’s nothing better than a blog, one which you write and run yourself, containing nothing but your ideas, which you can articulate without the bonds imposed by third-party platforms.

For the longest time, I thought that my inability to create new content was due to a lack of things to say. I really liked how my last article (read it here) turned out: it was about a topic which I was personally connected with, which was not excessively mainstream, and which I really liked talking about. Perhaps I was just looking for something similar to write about.

That’s when it hit me: waiting for the perfect inspiration every time just isn’t feasable. Sometimes it happens—you get an idea that you just know that will translate into a great post—but most of the times you don’t, and that’s okay.
Let me be clear: I still believe in quality over quantity, especially in this space. Finding a compromise between Buzzfeed-tier garbage and great content is part of the game—one in which I admittedly was never particularly good at, but I digress.

Once that was figured out, I still had to sort out one thing: a chronic lack of will to write.

Looking for a smoother setup

This topic is, perhaps unintuitively, linked with my recent search for the “perfect” note-taking app for my studies. After trying way too many Electron-based Markdown editors with useless features grafted on, I settled on SiYuan, which is FOSS, feature-rich and very extensible.

I found that, once I installed SiYuan on my computers and phone, I started using it for non-uni related stuff as well, from shopping lists to to-dos and tasks. That’s when it hit me: if I managed to seamlessly integrate SiYuan with my blog, it would probably help me overcome my writer’s block.
That’s because I can be a really lazy person, and any kind of friction can kill my desire to do non-mandatory tasks. By using a program which I already like, I’m removing the friction of opening the browser, logging onto my WriteFreely instance, and using an editor I’m unfamiliar with. It’s a very small change, one which will save me just a handful of clicks, but I think that it can motivate me to do better.

Syncing notes

After talking with Deepseek for a while, I came up with this script. It uses the SiYuan API to fetch the notes in a notebook in my SiYuan Workspace, formats them to work with my Astro website, and writes them to disk.

This was already a huge step in the right direction: I can now write my blog posts anywhere, I only need the SiYuan app, and when I’m ready to publish I can just sync the notes to my website using the script, build the website and upload it to my server.

Uploading the site

But there was still room for improvement, specifically in the “uploading to server” department: my previous setup involved me zipping the built folder, uploading it to my Seafile cloud, and downloading it from the server. It could have been improved with sFTP, but ultimately, I opted for another solution: this WebDav plugin for Caddy allows me to run a WebDav server without hassle, and I can push files to it from wherever I want, as long as I have the credentials.

To further reduce friction, I wrote another script, which automates the process of uploading the built files to the WebDav server. And just like that, I now have a setup which I can qualify as decent, as it allows me to publish my posts with just 3 commands: one to fetch the posts, one to build the site, and the last to upload it.

My blog, my setup; your blog, your setup

You might have read through this entire post and have thought that while my setup probably works for me, it sure as hell does not work for you. You may have tried SiYuan and found it to lack the features you want, or you might just prefer Obsidian. You might also hate WebDav, you might use Nginx or Haproxy instead of Caddy, you might even use an online host like GitHub Pages or Netlify, and in all of those cases, the solutions and the code I have created are of no use to you.

And that’s completely fine! We are all different people, and in a world that is trending towards monoculture, diversity something worth treasuring.
If the workflow that someone else designed doesn’t suit you, you can just change it. As long as you build on open standards, you’re free to do all the changes that make you more productive, focused and happy.

I don’t think anyone should be discouraged from attempting to achieve a better setup for themselves. So yes, write your blog engine! Fiddle with all the custom settings you want!
Just remember that the 80/20 rule very much applies, and after a certain point, sinking effort into your quest won’t be worth it. Find the 20% of change that can give a setup that is 80% right for you, and maybe don’t go much further than that.

Comments (rules, privacy)