Cheese icon

My Journey to the Perfect Publishing Tool

Author: guiferviz

Created:

Last Modified:

About 15 years ago, I started an blog on the legendary Blogspot, where I published programming articles. They were quite basic, but they marked my beginnings. It’s incredible to think that despite lacking Markdown and many of the requirements listed above, it was the blog I took the furthest. This was because I focused more on writing than on the tool itself.

After some time, I abandoned it and decided to try Jekyll, where I managed to create interactive posts using some JavaScript libraries and wrote the posts in Markdown. I know Jekyll offers tremendous flexibility, but back then, I saw all that flexibility as a complication when using it. Additionally, since it was programmed in Ruby, editing the template was challenging for me. ChatGPT didn’t exist at that time, so I had to code everything manually.

I even created my personal landing page guiferviz.com with Material MkDocs and attempted to use it as a site to collect my articles, but it didn’t feel comfortable enough. Why? It seems more suited for technical documents or complete articles rather than for publishing small, unpolished notes. I know, dismissing powerful tools seems like procrastination.

After trying some other tools, I discovered Obsidian. I enjoy taking notes in Obsidian; it feels good, but I haven’t found a way to publish them as they appear while editing. The idea of writing in Obsidian first and then copying those files to my MkDocs repository for publication has always stopped me. As a result, my notes have remained unpublished, waiting to be transformed from simple notes into articles worthy of publication.

Recently, I came across obsidian-webpage-export. It’s the only project that allows publishing almost exactly what you see in Obsidian on the web, including plugin outputs (like dataview tables). This is great, something that Obsidian Publish, the official and paid version of publishing notes, doesn’t support.

I’m very interested in the flexibility of plugins; I want my notes to be extendable, especially with interactive examples in mind. Since I’m not very good at JavaScript and discovered Marimo Notebooks, I spent several weeks on Marimo Obsidian Plugin - Project Journal. The idea of that project was to execute Python code as part of my notes and also publish it and run it on the web. I ended up considering it a failure due to the limited flexibility of Obsidian plugin system and Marimo. It could work as a solution, but the effort does not worth it. I think it would be more wise to invest my time in other, more flexible approaches. Apart from that, it also have some downsides, like publishing the notes from my local computer, with the need of having obsidian open. Also it has some other complicate setup like several gitmodules (pointing to )

That’s when I discovered Astro JS. The ability to publish my notes, extend them, and have complete control over the generated website was appealing. It sounds like more work, but it’s definitely better than the obsidian-webpage-export plugin, which is still in its early stages (changing a lot from one version to another). After trying Astro for a couple of days, I realized it’s not difficult to use. Combined with the Astro Language Server Protocol (LSP) and my use of Helix, I was able to integrate it in literally 2 minutes (Setup Astro JS LSP in Helix), making it very easy and comfortable to start with.