The Thorny Path of Building a Blog – My Experience, Failures and Plans

22 July 2025

A book is good when it makes you think. An article — when it makes you act.

That was the first pretentious sentence that came to mind while writing this post. Here, I’ll explain why I started blogging in the first place, where the idea of creating a community came from, the issues I faced while building a custom site on Next.js, what my roadmap looks like — and some general takeaways.

Why I Decided to Start My Own Blog

At the beginning of summer, I recalled a quote from The Pragmatic Programmer:

“Learn at least one new language every year.”

My main specialization is the JavaScript ecosystem, but I wanted to try something new — a systems programming language. A language used for writing drivers, operating systems, high-performance software, etc.

I was choosing between C++ and Rust. On one hand, C++ is solid concrete in the IT world; on the other — Rust is positioned as a modern and safer alternative, though with a smaller ecosystem. Without overthinking it, I chose Rust — hip, trendy, new.

I started reading The Rust Programming Language (aka "The Book") and at the same time got curious about the Matrix protocol. But I ran into a problem: the official Matrix server (Synapse) is written in Python, and that means:

There are several alternative Matrix server implementations written in other languages by different teams. But I couldn't shake the idea of building my own — essentially, a protocol fork. I wanted to integrate Tor, add features similar to Telegram, and keep privacy and autonomy front and center.

At the same time, I got the idea to share the whole journey publicly — not just the project development, but also technical insights in general. Eventually, maybe even build a community around it for open source or commercial projects.

I already had a rough foundation for version 2.0 of my personal website, so that gave me the push to continue development and add a blog to it.

Along with the blog, I started a Twitter/X account and plan to cross-post articles on platforms like Medium — maybe even LinkedIn.

Why not just use Medium from the start?
Because I wanted to get hands-on with Next.js and have full freedom on my own domain.

The Pains of Building a Custom Solution

I used the fullstack framework Next.js. For multilingual support — next-intl, for authentication — next-auth. Login is only needed for the admin panel. As ORM, I chose Drizzle.

The fun began during build:

const token = await getToken({ req, secureCookie: true, secret: process.env.NEXTAUTH_SECRET })

I wanted to use Incremental Static Generation (ISG) for articles — but something went wrong, so for now it's just SSR.

Tiptap and Code

I set up the Tiptap editor. I wanted pretty syntax highlighting using code block lowlight. But the generated HTML lacked color span tags, so I decided to render the article using the Editor tag with editable: false.

The problem is: Tiptap needs the DOM, but I need ready-to-serve HTML for better SEO. So for now, I’m showing code without highlighting, generating plain HTML on the backend.

colored_code

Deployment and Unexpected Admin Experience

Deployment dragged on for three days. I usually host my projects on my home server. One morning I went to check something — touched the stairs with my foot and the case with my hand — and got electrocuted
Definitely not the kind of server admin experience I was expecting)

my_old_tired_server

Right now, images are a bit oversized and look weird at full container width — I’ll fix that soon)

Overengineering at the Start

At first, I wanted to implement everything at once:

...but I stopped myself. Started small.
Though, while writing this article, I realized I still haven’t added a delete button in the admin panel)

Roadmap

First thing to add — the ability to delete articles. Then:

P.S. The image size and numbering tasks only popped up while editing this article :)

Conclusion

Should you build your own blog from scratch when there are so many ready-made options?

Depends on your time and goals. If you want to get hands-on with the tech — then yes.
But be ready to tinker a lot.

The source code is on GitHub, but currently only contains a lonely H1 in README.md

If you’re curious to follow the progress — join me on Telegram or Twitter/X.
Happy to hear your feedback!