Escaping Astro and Finding Peace with Hugo
I started building this website with Astro, full of optimism and modern web development enthusiasm. I built the entire site - layouts, alternative themes, deployment scripts, everything was ready to ship. Then I hit the CSS scoping wall: I couldn’t find the correct way to override a simple <a>
element’s color. That was it. I dumped the entire project immediately, despite being at the finish line.
This, I think, is the core problem of the Node.js ecosystem: they’re trying to reinvent the wheel every time they release a new framework. I know this isn’t the first time this complaint has been written - it’s been going on for years - but here I am saying it again.
The Great Web Development Confusion
Back in the day, everything on the web was rendered by servers. Simple, predictable, boring. Then APIs started to rule the web. SPAs became the fastest way to load a website - or so we convinced ourselves. But we developers forgot the fundamental thing: most of our projects aren’t suited for these complex architectures.
Some of these shiny new frameworks are created for sites that get ~1M unique visitors per day. Then all of a sudden, people decided server rendering was a miracle and we should return to that, but with hydration! Because apparently we can’t just pick one approach and stick with it.
Can I just write my software in peace?
All of these approaches represent excellent engineering work, but they build habits. Habits that can turn into bad habits for special cases. And in the current world, choosing the “correct” technology for your project has become more crucial than everything else - including actually building the damn thing.
My Hugo Revelation
I needed a static site generator. I saw Astro and jumped on it, seduced by its modern promises and island architecture. After building everything and getting ready to deploy, I regretted my decision and pivoted to Hugo - my latest favorite piece of software.
Hugo is fast as hell. When you run the build command, it generates the output so fast you have to check your last command: “Did I run the correct one?” There’s something deeply satisfying about tools that just work without requiring you to learn seventeen new concepts and configure forty-three plugins.
No CSS scoping drama. No hydration mysteries. No JavaScript bundle analysis. Just markdown goes in, website comes out. It’s almost suspiciously simple.
Why Simple Wins
Sometimes the best technology is the one that gets out of your way. Hugo doesn’t try to solve problems I don’t have. It doesn’t force me into architectural decisions that sound impressive in blog posts but add complexity to my actual workflow.
I can style my <a>
elements like a normal human being. Revolutionary concept, I know.
The web development world has this fascinating tendency to create solutions for problems we didn’t know we had, then convince us we desperately need those solutions. Meanwhile, the simple approaches we abandoned work perfectly fine for 90% of use cases.
Peace at Last
This website is now built with Hugo, and I’m genuinely happy with that decision. No more wrestling with CSS scopes. No more questioning whether I’m using the “right” modern approach. Just writing, building, and shipping.
Sometimes the most advanced thing you can do is choose the boring technology that actually works.
Now, if you’ll excuse me, I need to go write some useless code without thinking about “modern approaches.” What a concept.