Blogging like a hacker

2026-04-02

I've been using WordPress since its early days in 2005, and it's been serving me well. However, I experienced increasing friction in several key areas, which led me to replace WordPress with a pre-rendered stack.

The customizability of WordPress is amazing, but the more I learned about its internals and running it, the more I realized the tradeoffs involved:

  • Every page view exercises the engine, resulting in high memory consumption and delayed TTFB. WordPress is very inefficient and wasteful for static blog content. Even though caching is possible via plugins and CDNs, it's tedious to implement, isn't rock solid, and will never be as fast as a CDN-deployed site.
  • Plugins are often bloated, poorly written, pose security risks, and any plugin update can take down the site, which has happened.
  • The authoring experience is frustrating and fragmented. I just want to use Markdown with a front matter per post, but WordPress made me use its classic WYSIWYG editor, which was replaced by the Gutenberg editor, which pushed my authoring workflow even further from a plaintext editing experience.

I considered Jekyll for a moment, since it kicked off the static blogging revolution, but it's relatively poorly maintained compared with the tools I considered next, and I don't prefer Ruby.

wp2hugo transformed my site to a bunch of sweet Markdown files; I inlined the extracted comments to the posts, and I had a working Hugo site. However, I'm unfamiliar with Go and Hugo's templating system, and I knew that future modifications would be painful.

Being a JavaScript guy, I looked into Eleventy (recently rebranded as Build Awesome), but from a customization standpoint, I still didn't feel at home. Even though it's JavaScript, customization felt rigid and opinionated through its plugin system.

As a Vue enthusiast, I took a step further and switched to VitePress. I could use my Markdown files as-is, and it supports Vue components, but as I was tweaking the styles and my CSS grew past 300 lines, I concluded that documentation generators are too opinionated, and I wanted something more flexible.

I wanted to learn Nuxt for future projects anyway, so I migrated to it and used its Nuxt Content and Nuxt UI modules, providing maximum flexibility and the best developer experience.

I integrated Utterances for commenting, set up GitHub Actions to make Cloudflare generate and push static assets to Pages, and I couldn't be happier with the result; everything is stored in Git, and there are no moving parts.