Finally Writing - Breaking Through the Language Barrier


My personal blog has been alive for just a few days now, but the journey to get here? That’s been years in the making.

I’ve always wanted to write a blog. Always. The ideas were there, the experiences were there, the technical knowledge was definitely there - but the confidence wasn’t. As a non-native English speaker from Vietnam, the challenges of spelling and grammar have been my biggest barriers. Those little red squiggly lines under my words felt like stop signs, constantly reminding me that my English wasn’t “good enough” to share with the world.

The Long Journey to “Publish”

Let me paint you a picture: I started my career as a Research Engineer in Computer Vision back in early 2008. We were using OpenCV and “straight-forward algorithms” trying to tackle problems that seem almost trivial now - making computers recognize moving objects, understanding human actions. We rendered 3D dancing games, built systems to handle 30,000 users singing karaoke live simultaneously. All this on hardware that would make today’s smartphones laugh.

Then came my years in Vietnam’s huge outsourcing industry. I worked with customers big and small around the world, implementing their requested changes, navigating and pushing teams of developers to achieve goals. It was there I learned a hard truth: best practices, clean code, and optimal solutions were rarely the main focus of the outsourcing industry, regardless of how they marketed themselves.

After that, seven years as a consultant in the enterprise CMS world - WordPress, Joomla, Alfresco, OpenText CMS, you name it. I’ve architected systems, implemented complex solutions, trained teams. Yet somehow, through all these experiences, I couldn’t bring myself to publish a simple blog post about my own journey.

The irony wasn’t lost on me. I could configure enterprise CMS platforms in my sleep, but when it came to my personal blog? That blinking cursor on an empty page felt insurmountable.

Enter AI: My Personal Editor

Everything changed when I discovered Claude. Suddenly, I had a partner who could help me transform my thoughts into readable prose. It’s not about having AI write for me - it’s about having a collaborator who helps me express what I want to say without the constant anxiety about grammar mistakes.

Within hours of deciding to finally start, I had my blog up and running. Originally, I went with HugoCMS - a choice driven by familiarity and its reputation for speed. I prompted Claude to create the project, set up GitHub Actions for CI/CD, and even write a welcome post. The technical setup that would have taken me days of procrastination? Done in an afternoon.

Migration: From Hugo to Astro

But here’s where my coding background kicked in. After a few days with Hugo, I realized it wasn’t quite right for what I wanted to build. Hugo is fantastic at what it does - blazing fast static site generation. But I found its templating system… quirky. When I tried to customize the Cactus theme, Claude and I got stuck in an endless loop of trial and error.

The real dealbreaker? I wanted modern frontend capabilities. TypeScript components, React or Svelte integration (I’m really leaning toward Svelte now). Hugo’s out-of-the-box support for modern web development felt limited.

“Choose the right tool for the job” is common knowledge, but during my years in CMS consulting, I found most choices seemed either too far from real use cases or completely unsuitable for the tasks. Most, if not all, content creators hated the tools they had to deal with - or at least how those tools were configured and enforced upon them. With that background, I thought hard and decided Astro fit best with my day-to-day workflow. Text IDEs and CLIs are so natural to me, and the fact that I’m writing blog posts in a CLI interface is actually motivating! WYSIWYG editors, on the other hand, have always put me off.

Enter Astro. Since my Hugo blog was only a few days old, migrating was straightforward. With Claude’s help, I had everything moved over in one evening. The transition was surprisingly smooth - my coding background meant I could quickly understand Astro’s architecture and appreciate its approach to content. It’s built for exactly what I need: a content-focused site with the flexibility to add interactive components when needed.

Here’s a screenshot of my old Hugo blog - keeping it for posterity:

Screenshot of my old Hugo blog showing the Vibe Coding Journey homepage with dark theme

The Liberation of “Good Enough”

You know what’s liberating? Not worrying about perfect grammar anymore. I can focus on sharing my experiences, my technical insights, my journey. If there’s a grammatical hiccup here and there, so what? The important thing is that I’m finally doing what I’ve wanted to do for years: writing and sharing.

My personal VPS that sat idle for 6 years, supposedly waiting to host my blog? It’s finally serving its purpose. Those years of experience - from computer vision research to outsourcing realities to enterprise consulting? They’re all stories worth telling. The programming journey that started in Vietnam in the late 1990s with second-hand books and no internet? It’s all part of the narrative I can finally share.

What’s Next?

This blog isn’t just about overcoming language barriers - it’s about embracing the entire journey. From those early days trying to teach computers to see, through the grind of outsourcing, to building enterprise solutions, and now exploring AI-assisted development. I’ll be documenting my adventures, sharing the spectacular failures alongside the victories, and hopefully inspiring others who’ve been held back by similar barriers.

Because here’s the truth: Your voice matters, regardless of how many red squiggly lines appear under your words. Sometimes you just need the right partner to help you find it.

Welcome to my corner of the internet. It’s been a long time coming. 🚀