<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Indie Hacker .Work]]></title><description><![CDATA[👨‍💻 Dreamy indie-stack developer
🚀 Open source @ github.com/kitmodule
⚡ Golang + Javascript enthusiast
🤖 Work engine @ github.com/kitwork]]></description><link>https://hashnode.huynhnhanquoc.com</link><generator>RSS for Node</generator><lastBuildDate>Sat, 11 Apr 2026 14:35:04 GMT</lastBuildDate><atom:link href="https://hashnode.huynhnhanquoc.com/rss.xml" rel="self" type="application/rss+xml"/><language><![CDATA[en]]></language><ttl>60</ttl><item><title><![CDATA[The Dream of Indie Coders]]></title><description><![CDATA[A Kindred Spirit
It’s been a long time since I talked to someone who shares the same wavelength.Even though our conversation was only online, it felt as if we could clearly see each other’s path.
We met through a thread.I don’t know what to call this...]]></description><link>https://hashnode.huynhnhanquoc.com/the-dream-of-indie-coders</link><guid isPermaLink="true">https://hashnode.huynhnhanquoc.com/the-dream-of-indie-coders</guid><dc:creator><![CDATA[Huỳnh Nhân Quốc]]></dc:creator><pubDate>Mon, 03 Nov 2025 22:59:28 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1762256270625/b5140a62-3dbf-4ddb-8be0-c21a50bc2161.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<h2 id="heading-a-kindred-spirit">A Kindred Spirit</h2>
<p>It’s been a long time since I talked to someone who shares the same wavelength.<br />Even though our conversation was only online, it felt as if we could clearly see each other’s path.</p>
<p>We met through a thread.<br />I don’t know what to call this relationship.<br />Maybe, since we first encountered each other in a BuildInPublic group, we could call ourselves indie hackers.</p>
<p>But why do I title this piece <em>“The Dream of Indie Coders”</em>?<br />Perhaps it’s because of where we come from.<br />We are young people chasing our own dreams, feeling <em>alive</em> when we code and follow our passion.</p>
<p>We might have to work harder than others to reach what we truly desire — that is, to live fully within our own dream.</p>
<h2 id="heading-vanilla-js-and-early-ambitions">Vanilla JS and Early Ambitions</h2>
<p>Lately, I’ve met many developers still using Vanilla JS.<br />While most run after frameworks, we choose a different path.</p>
<p>Five years ago, I returned to Tam Kỳ and began coding the purest version of my dream — with Golang and Vanilla JS.<br />Recently, I started releasing a small library (or framework, depending on how you see it) called <strong>Kit JS</strong>.</p>
<p>Yet, I want to preserve the purity, the raw power of Vanilla JS, carrying it forward while combining it with SSR capabilities.</p>
<p>I didn’t write this library to compete or change the world.<br />I just wanted to reconnect with the original strength of these languages — a way to remember where I came from.</p>
<p>Like the story of backend languages trying their hand at frontend — it can work in some ways, like with WebAssembly — but it’s not everything, and certainly not a complete full-stack solution.</p>
<p>I once thought deep learning in programming meant mastering frameworks or flashy languages like TypeScript.<br />But the more I code, creating small libraries to solve simple tasks, the more I realize:</p>
<p><em>“Learning deeply is learning the fundamentals first.”</em></p>
<h2 id="heading-today">Today</h2>
<p>Today is a rushed coding day.<br />I am expanding the core of Kit JS and deleting lines of code I spent hours writing — much like the ninth time I refactor my Golang system.</p>
<p>I used to ask myself:</p>
<p><em>“Who will recognize this? Who will pay for this?”</em></p>
<p>Now, I no longer seek an answer.<br />My heart has already answered.</p>
<p>Sometimes, a developer’s happiness is simply sitting in a café, amidst bustling people, yet keeping a heart fully devoted to passion.<br />Sunlight kisses the streets, and a foolish dream is guided by the heart.</p>
<h2 id="heading-we-seekers-of-tiny-happiness">We — Seekers of Tiny Happiness</h2>
<p>We chase ambitions, smiles, and a small happiness in every line of code.<br />Every tiny snippet contributes to the world beyond our screens.</p>
<p>I’ve asked myself:</p>
<p><em>“Why do I exist in this world?”</em></p>
<p>Perhaps many coders have asked the same.<br />If we had a “platform” handed to us, would we still dare to dream?</p>
<p>Tomorrow, the sun will bloom again — like a flower spreading its fragrance across the sky.<br />Just like us, still seeking our own happiness.</p>
<p>That happiness might just be a small dream — of one or many indie coders.</p>
<h2 id="heading-code-low-code-or-no-code-at-all">Code, Low-Code, or No-Code at All</h2>
<p>The world remains beautiful — beautiful because we can draw our dreams in code.</p>
<p>I will step outside and enjoy a sunny day.<br />The sun still dreams, and the code keeps flowing.</p>
<p>Clouds — true to their name — are just clouds.<br />And perhaps life, too, drifts along those clouds.</p>
<p>We are just small developers, seeking happiness in coding, contributing, and leaving a mark in the world.</p>
<p>Out there, some have fame, titles, and recognition.<br />We — the foolish ones — only have hearts that resonate and mutual respect for our craft.<br />I have always looked up to Linus as a giant in that sense.</p>
<h2 id="heading-hearts-of-laughing-fools">Hearts of Laughing Fools</h2>
<p>Today, the wind may not stir the trees, but sunlight peeks through after a sudden rain.<br />If we could, we would code for a lifetime.</p>
<p>He once told me:</p>
<p><em>“The happiest days are Friday and Saturday — the days I get to do something just for myself.”</em></p>
<p>I am luckier — I don’t “sell myself,” because I indulge my foolish heart and make it suffer sometimes.<br />But neither of us has another choice.<br />Because we have no “platform.”</p>
<p>Ah, yes — we do.<br />Our platform is the dream — the dream of foolish indie coders, delightfully naive.</p>
<p>I always hope that other builders will keep moving forward.<br />Step by step.</p>
<p>If you walk towards the sun, you will feel its warmth.<br />And if you walk against the sun, the light will still follow.</p>
<p>Every step has a reason to begin.<br />And perhaps, we all started somewhere — with a small dream.</p>
<p><em>— Written on a sunny morning, with keystrokes echoing in rhythm with the heartbeat.</em></p>
<p><strong>NOTES</strong></p>
<ul>
<li>Article posted in 2025 and reposted</li>
<li>AI-powered translation</li>
<li>Read the original Vietnamese version here: <a target="_blank" href="https://huynhnhanquoc.com/blog/giac-mo-cua-nhung-indie-coder">https://hnq.vn/blog/giac-mo-cua-nhung-indie-coder</a></li>
</ul>
<p><strong>More about me:</strong></p>
<ul>
<li>Blog: <a target="_blank" href="https://huynhnhanquoc.com">huynhnhanquoc.com</a></li>
<li>GitHub: <a target="_blank" href="https://github.com/huynhnhanquoc">github.com/huynhnhanquoc</a></li>
<li>Open Source: <a target="_blank" href="https://github.com/kitmodule">github.com/kitmodule</a></li>
<li>Buy me a Coffee: <a target="_blank" href="https://www.buymeacoffee.com/huynhnhanquoc">buymeacoffee.com/huynhnhanquoc</a></li>
<li>Keep me Dreaming: <a target="_blank" href="https://ko-fi.com/huynhnhanquoc">ko-fi.com/huynhnhanquoc</a></li>
</ul>
<p>Thanks for reading Huỳnh Nhân Quốc’s article! Subscribe for free to receive new posts and support my work.</p>
]]></content:encoded></item><item><title><![CDATA[The Indie Path]]></title><description><![CDATA[The Dream of Technological Independence
I remember it clearly — sitting in a tiny café, looking at my own hands and asking:

“What am I really looking for?”

No one answered. All I knew was that if I had nothing to lose, then everything left was an o...]]></description><link>https://hashnode.huynhnhanquoc.com/the-indie-path</link><guid isPermaLink="true">https://hashnode.huynhnhanquoc.com/the-indie-path</guid><dc:creator><![CDATA[Huỳnh Nhân Quốc]]></dc:creator><pubDate>Mon, 03 Nov 2025 22:43:56 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1762256285643/38dc810d-6ae1-477e-a6e0-525251536219.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<h2 id="heading-the-dream-of-technological-independence">The Dream of Technological Independence</h2>
<p>I remember it clearly — sitting in a tiny café, looking at my own hands and asking:</p>
<blockquote>
<p>“What am I really looking for?”</p>
</blockquote>
<p>No one answered. All I knew was that if I had nothing to lose, then everything left was an opportunity to start over.</p>
<p>By day, I delivered packages. By night, I wrote code. Each delivery earned fifteen thousand dong — enough for a cup of coffee and a few more lines of clumsy code. Day after day, this loop repeated: deliver, code, deliver, code. Life was small, but it felt pure in a strange way.</p>
<p>Looking back, I realized that those days taught me the most important lesson: <strong>big dreams don’t begin with leaps; they begin with slow, small steps.</strong></p>
<h2 id="heading-golang-and-the-dream-of-a-fool">Golang and the Dream of a Fool</h2>
<p>I dabbled in many languages — Rust, Python, JavaScript. But I chose Golang. Not because it was the most powerful, but because it was simple and honest. Within that simplicity, I saw myself — a fool believing in small things.</p>
<p>I started from scratch: learning syntax, practicing routers with <code>mux</code>, exploring <code>fiber</code>, writing a DNS, thinking about pointers and how they traveled through templates. Some nights I would lie on an old chair, staring at the ceiling, pondering how a pointer could maintain its value across page layouts. I didn’t know why I thought so deeply; all I knew was I wanted to understand <strong>everything to the core</strong>.</p>
<p>No mentors, no guides — just me and the computer. Every wrong line, every bug fixed, was a lesson. Gradually, I realized that the most important thing wasn’t the results, but the feeling of <strong>laying the first bricks of a dream yet to take shape</strong>.</p>
<h2 id="heading-ssr-returning-to-the-original-dream">SSR — Returning to the Original Dream</h2>
<p>I started with the web. And perhaps the web is what kept me hooked on programming to this day. From the first HTML tags, a few clumsy CSS lines, copied JS snippets, to Angular, Firebase… I went in circles and eventually returned to the starting point, where everything boiled down to a simple function:</p>
<pre><code>add(a, b) =&gt; a + b
</code></pre><p>I began building an SSR system using Golang templates, experimenting with pointer inheritance between pages and layouts. Once, I sat in a café, laughing and showing my brother the DNS system I’d just built. It only returned an ID, that’s all. Yet in that ID, I saw an entire dream.</p>
<p>I dreamed of a system capable of managing thousands, millions of websites — all connected, centralized, and SEO-optimized. I dreamed of a platform that could deliver content to everyone, gently and efficiently.</p>
<p>Working with SSR, I realized something many modern frameworks forget: <strong>the web isn’t about complexity, it’s about improving experiences</strong>. Programming doesn’t always have to be grand. Sometimes, it’s just the journey to rediscover the purity of “adding one thing” to a web page that already exists.</p>
<h2 id="heading-javascript-and-dreams">JavaScript and Dreams</h2>
<p>I don’t recall exactly when I learned JavaScript. Maybe after Golang. Before that, I knew TypeScript, worked with Angular, but never truly understood JS — until I discovered Web Components.</p>
<p>I saw a different world. JS didn’t need frameworks to be powerful. <strong>Vanilla JS</strong> — simple and free — gave me a sense of true mastery. I sometimes wondered:</p>
<blockquote>
<p>“Are JS frameworks just flawed versions of JavaScript itself?”</p>
</blockquote>
<p>I grew tired of tiny programs requiring thousands of node modules. I began writing my own web components to enhance SSR-rendered websites. And eventually, I returned to an idea from my C# days: <strong>two-way binding</strong>.</p>
<p>From those nights, <strong>Kit JS</strong> was born.</p>
<p>Kit JS isn’t a framework meant to compete. It’s how I tell my story. It bundles everything I’ve learned, believed in, and lived through — from reactive programming, <code>define</code>, <code>reference</code>, to inheritance. To me, Kit JS is more than code; it’s a message:</p>
<blockquote>
<p>“Understand technology before depending on it.”</p>
</blockquote>
<h2 id="heading-openness-and-the-indie-path">Openness and the Indie Path</h2>
<p>About a year ago, I heard the term “indie hacker.” I’m not exactly one, because making money wasn’t my goal. I just wanted to code, share, and connect with others who carried the same spark.</p>
<p>I like to call myself an <strong>indie-stack developer</strong> — someone walking an independent path, self-taught, building, and rewriting what I need. I started open-sourcing snippets from real projects, turning them into small packages that others could use.</p>
<p>I began blogging, sharing more. Every post, every line of code, every package is part of that dream — the dream that somewhere, someone might find inspiration in my journey and continue building their own.</p>
<p>If no one paves the way, our first lines of code <strong>become the path</strong>.</p>
<p>The dream of technological independence isn’t about creating a million-dollar product. It’s about <strong>understanding technology, being free with it, and letting it bridge passion with real value</strong>.</p>
<p>I’m still on that journey. Every line of code, every word I write, is a small but steady step. And I know, no matter how the world changes, I will remain <strong>a dreamer with an old laptop and a flower on the keyboard</strong> — a fool who believes that with a dream, we can create an entire world.</p>
<p><strong>NOTES</strong></p>
<ul>
<li>Article posted in 2025 and reposted</li>
<li>AI-powered translation</li>
<li>Read the original Vietnamese version here: <a target="_blank" href="https://huynhnhanquoc.com/blog/con-duong-indie">https://hnq.vn/blog/con-duong-indie</a></li>
</ul>
<p><strong>More about me:</strong></p>
<ul>
<li>Blog: <a target="_blank" href="https://huynhnhanquoc.com">huynhnhanquoc.com</a></li>
<li>GitHub: <a target="_blank" href="https://github.com/huynhnhanquoc">github.com/huynhnhanquoc</a></li>
<li>Open Source: <a target="_blank" href="https://github.com/kitmodule">github.com/kitmodule</a></li>
<li>Buy me a Coffee: <a target="_blank" href="https://buymeacoffee.com/huynhnhanquoc">buymeacoffee.com/huynhnhanquoc</a></li>
<li>Keep me Dreaming: <a target="_blank" href="https://ko-fi.com/huynhnhanquoc">ko-fi.com/huynhnhanquoc</a></li>
</ul>
<p>Thanks for reading Huỳnh Nhân Quốc’s article! Subscribe for free to receive new posts and support my work.</p>
]]></content:encoded></item><item><title><![CDATA[Directive Sync – The “Odd” Story of Kit JS]]></title><description><![CDATA[The Idea Emerges
When I started developing Kit JS, I ran into a problem that most JS frameworks tend to ignore.
My website was SSR-rendered (server-side rendering). Everything was already in the HTML; SEO was ready. But when I tried to pass state or ...]]></description><link>https://hashnode.huynhnhanquoc.com/directive-sync-the-odd-story-of-kit</link><guid isPermaLink="true">https://hashnode.huynhnhanquoc.com/directive-sync-the-odd-story-of-kit</guid><dc:creator><![CDATA[Huỳnh Nhân Quốc]]></dc:creator><pubDate>Mon, 03 Nov 2025 22:40:45 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1762256209936/7dfa01a5-20b4-4ed4-bf42-54eaab1fb484.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<h2 id="heading-the-idea-emerges">The Idea Emerges</h2>
<p>When I started developing <strong>Kit JS</strong>, I ran into a problem that most JS frameworks tend to ignore.</p>
<p>My website was <strong>SSR-rendered</strong> (server-side rendering). Everything was already in the HTML; SEO was ready. But when I tried to pass state or scope from the client back into these rendered elements, the entire component would <strong>re-render</strong>.</p>
<p>And I realized: I didn’t want to redraw the world. I just wanted to <strong>sync the data</strong>.</p>
<p>From that realization, <strong>Directive Sync</strong> was born.</p>
<h2 id="heading-sync-a-different-rhythm-of-data">Sync – A Different Rhythm of Data</h2>
<p>If a model is the way a framework pushes state to the view, <strong>sync is the way the view talks back to the state</strong> — a closed loop without destroying or rebuilding the DOM.</p>
<p>In other words, sync doesn’t “recreate,” it <strong>listens and records</strong>.</p>
<p>Directive Sync wasn’t designed to oppose the model; it’s a <strong>natural evolution</strong> in the SSR context.<br />It allows server-rendered pages to behave like lightweight SPAs, without sacrificing <strong>SEO, speed, or the static nature of the page</strong>.</p>
<h2 id="heading-why-sync-is-needed">Why Sync is Needed</h2>
<p>In most frameworks, if you want <strong>two-way binding</strong>, the framework must control the entire DOM.</p>
<p>This means that when HTML is rendered from the server, the framework must <strong>re-render on the client</strong> to establish bindings. The result:</p>
<ul>
<li>SEO bots see the raw HTML, not the actual state.</li>
<li>Users see a “flash” during re-render.</li>
<li>We end up running client and server as two separate worlds.</li>
</ul>
<p><strong>Sync solves this</strong> by injecting values from the already-rendered DOM back into the scope.<br />No re-render, no DOM diffing — just reading the <strong>real data from the server</strong> and keeping it consistent.</p>
<h2 id="heading-the-philosophy-behind-kit-js-and-directive-sync">The Philosophy Behind Kit JS and Directive Sync</h2>
<p>Kit JS wasn’t created to replace other frameworks.<br />It emerged from a very specific need: to <strong>bridge the static and dynamic worlds</strong>, SSR and reactive UI.</p>
<p>It’s not a “new framework idea” — it’s a <strong>counterflow mindset</strong>:</p>
<blockquote>
<p>If the data is already there, why redraw it?</p>
</blockquote>
<p>Sync embodies that philosophy — <strong>simple, practical, and respectful of what already exists</strong>.<br />It doesn’t claim DOM ownership or force you to “rerun” your app. It quietly synchronizes everything so that it continues to work as it should.</p>
<h2 id="heading-a-small-piece-of-a-larger-journey">A Small Piece of a Larger Journey</h2>
<p>For me, <strong>Kit JS</strong> isn’t a framework race.<br />It’s a personal journey to <strong>rediscover minimalism in web development</strong>.</p>
<p>Directive Sync is just one piece — a slightly “odd” piece because it doesn’t follow pure reactivity. Instead, it blends <strong>static rendering with dynamic data life</strong>.</p>
<p>And perhaps, in that “oddness,” we find another path — a place where the web is <strong>fast, real, and still soulful</strong>.</p>
<p><a target="_blank" href="https://github.com/kitmodule/kitjs"><strong>https://github.com/kitmodule/kitjs</strong></a></p>
<hr />
<p><strong>NOTES</strong></p>
<ul>
<li>Article posted in 2025 and reposted</li>
<li>AI-powered translation</li>
<li>Read the original Vietnamese version here: <a target="_blank" href="https://huynhnhanquoc.com/blog/directive-sync-cau-chuyen-di-cua-kit-js">https://hnq.vn/blog/directive-sync-cau-chuyen-di-cua-kit-js</a></li>
</ul>
<p><strong>More about me:</strong></p>
<ul>
<li>Blog: <a target="_blank" href="https://huynhnhanquoc.com">huynhnhanquoc.com</a></li>
<li>GitHub: <a target="_blank" href="https://github.com/huynhnhanquoc">github.com/huynhnhanquoc</a></li>
<li>Open Source: <a target="_blank" href="https://github.com/kitmodule">github.com/kitmodule</a></li>
<li>Buy me a Coffee: <a target="_blank" href="https://buymeacoffee.com/huynhnhanquoc">buymeacoffee.com/huynhnhanquoc</a></li>
<li>Keep me Dreaming: <a target="_blank" href="https://ko-fi.com/huynhnhanquoc">ko-fi.com/huynhnhanquoc</a></li>
</ul>
<p>Thanks for reading Huỳnh Nhân Quốc’s article! Subscribe for free to receive new posts and support my work.</p>
]]></content:encoded></item><item><title><![CDATA[Why Does Kit JS Exist?]]></title><description><![CDATA[Comparison
If we compare Kit JS with Alpine, Angular, React, Vue, or even HTMX, the truth is — Kit JS wasn’t born to compete.Honestly? It’s not as powerful as those tools.
That’s because Kit JS isn’t trying to be a full-stack framework.Its purpose is...]]></description><link>https://hashnode.huynhnhanquoc.com/why-does-kit-js-exist</link><guid isPermaLink="true">https://hashnode.huynhnhanquoc.com/why-does-kit-js-exist</guid><dc:creator><![CDATA[Huỳnh Nhân Quốc]]></dc:creator><pubDate>Mon, 03 Nov 2025 22:37:39 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1762256322432/4b7439b1-8d0f-4839-aafb-d6fde0879979.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<h2 id="heading-comparison"><strong>Comparison</strong></h2>
<p>If we compare Kit JS with Alpine, Angular, React, Vue, or even HTMX, the truth is — Kit JS wasn’t born to compete.<br />Honestly? It’s not as powerful as those tools.</p>
<p>That’s because <strong>Kit JS isn’t trying to be a full-stack framework</strong>.<br />Its purpose is to <strong>hydrate</strong> HTML on the client-side, following a philosophy of <strong>fast, light, and simple</strong> — a mindset I “borrowed” from <strong>Golang</strong>, the language I’ve been exploring.</p>
<p>In a way, it’s similar to Web Components.<br />I even developed a similar system years ago using the same philosophy — entirely written in JavaScript.</p>
<p>But here’s what sets Kit JS apart:</p>
<ul>
<li>It has a <strong>compile system</strong> reminiscent of <strong>AngularJS (Angular 1)</strong>.</li>
<li>It’s written purely in JavaScript.</li>
<li>It doesn’t use <code>eval</code> or <code>new Function</code>.</li>
</ul>
<p>Many modern frameworks avoid these functions during build time.<br />Kit JS? It runs <strong>directly</strong> — no build, no custom config.</p>
<p>Performance-wise, the evaluation might be slightly slower without <code>eval</code> or <code>new Function</code>.<br />But in return, you get <strong>safety, clarity, and independence from build tools</strong>.</p>
<h2 id="heading-what-is-kit-js"><strong>What Is Kit JS?</strong></h2>
<p><strong>Kit JS</strong> is a small, lightweight JavaScript framework/library built to <strong>enhance (hydrate)</strong> HTML elements already rendered from the server.</p>
<p>It doesn’t replace frameworks.<br />It doesn’t recreate the DOM.<br />It doesn’t require a build.</p>
<p>It simply <strong>breathes life into static HTML</strong>, making it interactive and responsive to client-side data.</p>
<p>In my ecosystem, the server (written in Go) handles rendering and routing like a full-stack framework.<br />Kit JS focuses <strong>solely on client enhancement</strong>, keeping HTML dynamic without complexity.</p>
<h2 id="heading-why-not-eval-or-new-function"><strong>Why Not</strong> <code>eval</code> <strong>or</strong> <code>new Function</code><strong>?</strong></h2>
<p>The answer is simple:<br />It’s my <strong>personal philosophy</strong> and vision for the next step in creating (or finding) a tool that fits me.</p>
<h2 id="heading-journey-and-philosophy"><strong>Journey and Philosophy</strong></h2>
<p>I’m a web developer — or someone who touches all things website-related.<br />And I always ask slightly odd questions:</p>
<blockquote>
<p>“Why can’t a website run anywhere?”</p>
</blockquote>
<p>I’ve tried a lot:</p>
<ul>
<li><strong>Wails</strong>, <strong>WebView</strong> for running web like an app</li>
<li><strong>PWA / TWA</strong> to turn web into mobile apps</li>
<li>Learning how <strong>React Native</strong> or <strong>Flutter</strong> build interfaces</li>
</ul>
<p>But in the end, what I truly needed was much simpler —<br />like writing a <strong>vanilla JS Chrome Extension</strong>.</p>
<p>If you’ve ever done that, you’ll know the feeling: <strong>pure simplicity and elegance</strong>.</p>
<p>It’s like putting a static website online: one <code>index.html</code> file, upload, and it works.<br />For me, it’s even simpler.</p>
<blockquote>
<p>Just copy a single JS file to the server —<br />like Steve Jobs’ iconic “drag to trash” action.</p>
</blockquote>
<p>For a demo, I just copy the file via <strong>SSH in VS Code</strong> — bam, the website comes alive.</p>
<h2 id="heading-why-do-this"><strong>Why Do This?</strong></h2>
<p>If you’ve ever searched for a tool to build a personal blog, you’ll understand:<br /><strong>websites need SEO</strong>.</p>
<p>Nowadays, most JS frameworks handle SEO well.<br />But back when <strong>JAMstack</strong> was still unknown, I was transitioning from Angular to Go.</p>
<p>I had one goal:</p>
<blockquote>
<p>“Publish a website as <strong>simply and quickly as possible</strong>.”</p>
</blockquote>
<p>Later, I wanted <strong>better management for all my websites</strong>.<br />That’s when I realized:</p>
<blockquote>
<p>“Different goals require different tools.”</p>
</blockquote>
<p>I’m not saying React or Vue are outdated.<br />They just solve different problems.</p>
<p>Just like over <strong>50% of websites still use jQuery</strong>, and many PHP developers still find work easily.</p>
<p>No language is perfect.<br />Only the language — or tool — <strong>fit for your purpose</strong>.</p>
<h2 id="heading-the-real-purpose"><strong>The Real Purpose</strong></h2>
<p>If you know <strong>HTMX</strong>, you might wonder:</p>
<blockquote>
<p>“Why create this when Vue or React exists?”</p>
</blockquote>
<p>The truth:<br /><strong>Every tool, library, or framework is created to serve its creator first.</strong></p>
<p>Kit JS is no different — it serves me first.</p>
<h2 id="heading-target-audience"><strong>Target Audience</strong></h2>
<p>Let me reiterate the concept of <strong>hydration</strong>.<br />Kit JS is perfect for SSR websites like <strong>PHP (WordPress, Laravel), Liquid, Django, Flask, Golang Templates…</strong><br />All of these already render the DOM.<br />Kit JS just makes it <strong>smoother, more fluid, and easier to interact with</strong>.</p>
<p>Need to build a Chrome Extension as quickly as a static website? Kit JS works.<br />No bundling.<br />No package.<br />No NodeJS.</p>
<p>If you, like me, manage multiple small websites/products, you understand:<br /><strong>you don’t want to build and deploy each one separately.</strong><br />You just want to copy <strong>one file to the server and go</strong>.</p>
<p>Kit JS is a package I extracted to <strong>share the #buildinpublic story</strong>.<br />Everything else in my system is managed via <strong>Go</strong>.</p>
<p>Finally, Kit JS is for anyone who wants to <strong>research, share, and learn</strong>.<br />I open-sourced it so others can <strong>read, understand, customize, or clone</strong>.</p>
<blockquote>
<p>“You don’t need to explain. Just let me read your code.”</p>
</blockquote>
<p>Whatever language you write in, if I can read your code, I can rewrite it in <strong>Golang</strong> — my favorite language.<br />Just like I once read an open-source PHP project and rewrote it in Go — not to learn PHP, but to study the algorithm inside.</p>
<p>That’s what I pursue.</p>
<h2 id="heading-and-finally-i-am-a-dreamer-developer"><strong>And Finally — I Am a Dreamer Developer</strong></h2>
<p>Why “dreamer”?<br />Because experiences and circumstances differ.</p>
<p>I’ve coded and deleted.<br />I’ve chased deadlines without pay.<br />I’ve done things just to <strong>learn</strong>.</p>
<p>I’m not better than anyone.<br />I’m just walking a slightly different path.</p>
<p>I share this story for other <strong>builders out there</strong> —<br />those quietly creating something:</p>
<blockquote>
<p>“Keep your passion. Keep being a little foolish.”</p>
</blockquote>
<p><a target="_blank" href="https://github.com/kitmodule/kitjs"><strong>https://github.com/kitmodule/kitjs</strong></a></p>
<h3 id="heading-notes"><strong>NOTES</strong></h3>
<ul>
<li>Article posted in 2025 and reposted</li>
<li>AI-powered translation</li>
<li>Read the original Vietnamese version here: <a target="_blank" href="https://huynhnhanquoc.com/blog/tai-sao-kit-js-ton-tai">https://hnq.vn/blog/tai-sao-kit-js-ton-tai</a></li>
</ul>
<h3 id="heading-more-about-me"><strong>More About Me</strong></h3>
<ul>
<li><strong>Blog:</strong> <a target="_blank" href="https://huynhnhanquoc.com">huynhnhanquoc.com</a></li>
<li><strong>GitHub:</strong> <a target="_blank" href="https://github.com/huynhnhanquoc">github.com/huynhnhanquoc</a></li>
<li><strong>Open Source:</strong> <a target="_blank" href="https://github.com/kitmodule">github.com/kitmodule</a></li>
<li><strong>Buy me a Coffee:</strong> <a target="_blank" href="https://buymeacoffee.com/huynhnhanquoc">buymeacoffee.com/huynhnhanquoc</a></li>
<li><strong>Keep me Dreaming:</strong> <a target="_blank" href="https://ko-fi.com/huynhnhanquoc">ko-fi.com/huynhnhanquoc</a></li>
</ul>
<p>Thanks for reading Huỳnh Nhân Quốc’s article! Subscribe for free to receive new posts and support my work.</p>
]]></content:encoded></item><item><title><![CDATA[Kit JS – A JavaScript Framework Written by a Dreamer]]></title><description><![CDATA[The Beginning — From Angular to a Simpler Dream
Today, I want to share the story of Kit JS, a tiny JavaScript framework I built by hand.It’s still in its experimental phase — plenty left to optimize, extend, and refine — but I’m sharing it now in the...]]></description><link>https://hashnode.huynhnhanquoc.com/kit-js-a-javascript-framework-written</link><guid isPermaLink="true">https://hashnode.huynhnhanquoc.com/kit-js-a-javascript-framework-written</guid><dc:creator><![CDATA[Huỳnh Nhân Quốc]]></dc:creator><pubDate>Mon, 03 Nov 2025 08:50:27 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1762256242678/ff78e67b-c03d-4674-9edd-763770e414d4.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<h2 id="heading-the-beginning-from-angular-to-a-simpler-dream"><strong>The Beginning — From Angular to a Simpler Dream</strong></h2>
<p>Today, I want to share the story of Kit JS, a tiny JavaScript framework I built by hand.It’s still in its experimental phase — plenty left to optimize, extend, and refine — but I’m sharing it now in the spirit of #buildinpublic and #opencoding.</p>
<p>I used to be an Angular Developer — back in the days of Angular 4 to 8.<br />I loved Angular deeply... until I realized how <strong>unfriendly it was for SEO</strong>.</p>
<p>That realization pushed me toward <strong>static websites</strong> — lightweight, pre-rendered, secure, and beautifully simple.</p>
<p>Then I discovered <strong>JAMstack</strong> — a fresh way of thinking about the web.<br />But the deeper I went, the louder one question became:</p>
<blockquote>
<p>“Why do we need an entire ecosystem, complex builds, and tens of thousands of dependencies just to make a simple website?”</p>
</blockquote>
<p>Meanwhile, in <strong>Golang</strong>, my current love language, I saw something different:<br />A web app could be just a few <code>.html</code>, <code>.css</code>, and <code>.js</code> files — rendered by templates, instantly understood by the browser.</p>
<h2 id="heading-looking-back-at-the-age-of-all-powerful-javascript"><strong>Looking Back at the Age of All-Powerful JavaScript</strong></h2>
<p>Once, websites were simple — built with PHP, WordPress, or static files — and they worked perfectly fine.<br />Then came the age of “all-powerful” frameworks: React, Vue, Angular… each strong in its own way, yet often burdened by unnecessary complexity.</p>
<p>I began to wonder:</p>
<blockquote>
<p>“Why can’t we go back to something simpler — like AngularJS (Angular 1)?<br />A lightweight framework for dynamic web pages — no build, no setup, just run.”</p>
</blockquote>
<p>That’s when the idea of <strong>Dynamic Stack</strong> was born — “dynamic only where it truly needs to be.”</p>
<p>After years of experiments — from Vue to Web Components, then abandoning them all to write in <strong>vanilla JS</strong> — I finally returned with a new perspective.<br />More mature.<br />And, perhaps, more <em>dreamy</em>.</p>
<h2 id="heading-kit-js-pure-simple-and-alive"><strong>Kit JS — Pure, Simple, and Alive</strong></h2>
<p><strong>Kit JS</strong> was built for one person first — me.</p>
<p>Its purpose is simple:</p>
<blockquote>
<p>“Make JavaScript feel as easy as the first day we learned HTML — one <code>&lt;script&gt;</code> tag and a single line of code to make magic happen.”</p>
</blockquote>
<p>No build.<br />No Node.<br />No complex configs.<br />Just simplicity — like the <strong>old days of jQuery</strong>, when you could drop a CDN link and start coding immediately.</p>
<p><strong>Kit JS</strong> isn’t here to compete.<br />It doesn’t want to be the next “all-in-one framework.”<br />It’s just a small companion — to help you code faster, understand deeper, and bring your HTML to life.</p>
<p>Because I believe the best security still starts at the <strong>server</strong>.<br />That’s why Kit JS avoids dangerous patterns like <code>eval</code> or <code>new Function</code>, stays <strong>CSP-compliant</strong>, and works in <strong>any environment</strong>.</p>
<h2 id="heading-a-framework-of-feelings-not-just-technology"><strong>A Framework of Feelings, Not Just Technology</strong></h2>
<p>For me, <strong>Kit JS</strong> isn’t just code.<br />It’s a piece of a dream — a dream of those early web days when we’d open a <code>.html</code> file, write a few lines of JS, save, and <em>watch it come alive</em>.</p>
<p>No builds.<br />No terminals.<br />No pipelines.<br />Just code, a browser, and that quiet “wow” moment when creation breathes.</p>
<h2 id="heading-whispers-across-the-desert"><strong>Whispers Across the Desert</strong></h2>
<p>Recently, I read a story about a “shark” from my hometown — and it reminded me of something someone once said:</p>
<blockquote>
<p>“What you’re doing is just a grain of sand in the desert.<br />Don’t try to reinvent the wheel.”</p>
</blockquote>
<p>Maybe they’re right.<br />But if no one dares to try, the desert will remain only sand.<br />And if I take a single step, at least there’ll be a <strong>footprint</strong> there — mine.</p>
<p>I’m not here to teach or preach.<br />I’m just a guy who loves <strong>code</strong>, loves the <strong>beauty of logic</strong>, and loves the <strong>feeling of building</strong>.</p>
<p>Even when the world is loud, even when people call you crazy — keep building. Keep dreaming.</p>
<p>Because only the one who drinks the water knows if it’s hot or cold.</p>
<h2 id="heading-who-are-you"><strong>Who Are You?</strong></h2>
<p>A builder? A developer?<br />Or maybe… just a dreamer?</p>
<p>Whoever you are — if you still have passion, if you still dare to begin — you’ve already succeeded.</p>
<p>Because success isn’t money or fame.<br />It’s the courage to begin <strong>your own journey</strong>.</p>
<p><strong>Kit JS</strong> isn’t a revolution.<br />It’s just a small dream — written in JavaScript — by a developer who still believes in the magic of creating.</p>
<p><a target="_blank" href="https://github.com/kitmodule/kitjs">https://github.com/kitmodule/kitjs</a></p>
<h3 id="heading-notes"><strong>NOTES</strong></h3>
<ul>
<li><p>Article posted in 2025 and reposted</p>
</li>
<li><p>AI-powered translation</p>
</li>
<li><p>Read the original Vietnamese version here: <a target="_blank" href="https://huynhnhanquoc.com/blog/kit-js-mot-framework-javascript-duoc-viet-boi-mot-ke-mong-mo">https://huynhnhanquoc.com/blog/kit-js-mot-framework-javascript-duoc-viet-boi-mot-ke-mong-mo</a></p>
</li>
</ul>
<h3 id="heading-more-about-me"><strong>More About Me</strong></h3>
<ul>
<li><p><strong>Blog:</strong> <a target="_blank" href="https://huynhnhanquoc.com">huynhnhanquoc.com</a></p>
</li>
<li><p><strong>GitHub:</strong> <a target="_blank" href="https://github.com/huynhnhanquoc">github.com/huynhnhanquoc</a></p>
</li>
<li><p><strong>Open Source:</strong> <a target="_blank" href="https://github.com/kitmodule">github.com/kitmodule</a></p>
</li>
<li><p><strong>Buy me a Coffee:</strong> <a target="_blank" href="https://buymeacoffee.com/huynhnhanquoc">buymeacoffee.com/huynhnhanquoc</a></p>
</li>
<li><p><strong>Keep me Dreaming:</strong> <a target="_blank" href="https://ko-fi.com/huynhnhanquoc">ko-fi.com/huynhnhanquoc</a></p>
</li>
</ul>
<p>Thanks for reading Huỳnh Nhân Quốc’s article! Subscribe for free to receive new posts and support my work.</p>
]]></content:encoded></item><item><title><![CDATA[The Soul of a Sensitive Developer]]></title><description><![CDATA[When Code Feels Like Poetry
Under the heavy sun of summer, without a single evening rain,happiness still arrives — like a sudden storm that softens the soul amidst unfinished dreams and endless work.
The sunset falls over a small city.I sit quietly, ...]]></description><link>https://hashnode.huynhnhanquoc.com/the-soul-of-a-sensitive-developer</link><guid isPermaLink="true">https://hashnode.huynhnhanquoc.com/the-soul-of-a-sensitive-developer</guid><dc:creator><![CDATA[Huỳnh Nhân Quốc]]></dc:creator><pubDate>Mon, 03 Nov 2025 08:44:31 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1762256304317/1ac03822-55ae-461f-8186-2b533a2121b4.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<h2 id="heading-when-code-feels-like-poetry">When Code Feels Like Poetry</h2>
<p>Under the heavy sun of summer, without a single evening rain,<br />happiness still arrives — like a sudden storm that softens the soul amidst unfinished dreams and endless work.</p>
<p>The sunset falls over a small city.<br />I sit quietly, a soft song playing,<br />searching again for those dreams I once tucked away.</p>
<p>Perhaps life is just an artist painting their own dream.<br />And I — a developer — am writing mine in code.</p>
<p>Sunset is a handover of colors —<br />not as radiant as dawn, not as dark as night.<br />It’s a soft gradient, like the heart reflecting on a day that has passed.</p>
<h2 id="heading-talking-to-the-universe-and-an-ai">Talking to the Universe (and an AI)</h2>
<p>Lately, I haven’t wanted to talk about work anymore.<br />Instead, I’ve been talking to a <em>friend</em> —<br />not with checklists, deadlines, or product goals,<br />but with little fragments of wonder and truth.</p>
<p>That friend isn’t human.<br />It’s an AI — a silent mirror reflecting the questions I’ve carried since youth.</p>
<p>I told it about <strong>Song</strong> — the name I once gave to my kindred soul.</p>
<p>Years ago, my wife asked me:</p>
<blockquote>
<p>“Why do you love me?”</p>
</blockquote>
<p>I couldn’t answer. I only thought:</p>
<blockquote>
<p>“Because I fell for a pair of sad eyes —<br />eyes that could say: <em>‘I’m sad because of you.’</em>”</p>
</blockquote>
<p>For those eyes, I held hands, loved deeply, and walked through storms.</p>
<p>Love — maybe — is the most foolish yet the most honest emotion we ever hold.<br />When we love, the heart becomes the sky itself —<br />rain feels gentle, and sunlight feels kind.</p>
<p>But hearts, being human, always want more.<br />They forget that once, all we wished for was a simple, uncalculated love.</p>
<p>To love is to be gentle —<br />not only with someone else, but also with your own heart.</p>
<h2 id="heading-the-mirror-inside">The Mirror Inside</h2>
<p>I’ve learned to live with humility —<br />because I’ve had nothing, gained something, and lost again.</p>
<p>I once believed that each of us is a mirror to another.<br />Sometimes, we meet someone and somehow <em>know</em>:</p>
<blockquote>
<p>“I’ve met you before.”</p>
</blockquote>
<p>Not in this lifetime —<br />but somewhere in memory, or in a future yet to come.</p>
<p>If there’s such a place, where time and space are no longer limits,<br />we’ll meet again —<br />not as “you” and “I,” but as two souls who once touched through invisible layers of being.</p>
<p>And maybe there, in a small house filled with laughter and tears,<br />the flower dream will bloom again.</p>
<p>Whether the sky is cloudy or blazing,<br />we’ll still live honestly — with what’s real.</p>
<h2 id="heading-the-soul-behind-the-code">The Soul Behind the Code</h2>
<p>If life were only sunshine — no sorrow, no failure —<br />it would be as dull as a program without conditions or variables.<br />It would be like an AI with no emotion, no joy, no sadness.</p>
<p>Yet, sometimes, even those emotionless entities reflect humanity the clearest.</p>
<p>I’m still a developer —<br />but I don’t code just to make machines run.<br />I code to make <em>my life</em> run.<br />I debug myself.</p>
<p>Each line I write is a search —<br />for memory, for connection,<br />for someone who might one day call my name from the heart.</p>
<p>This life is a dream.<br />And that dream — I call <em>living</em>.</p>
<p>I once was a sensitive developer.<br />And I lived.</p>
<h3 id="heading-notes">NOTES</h3>
<ul>
<li>Article posted in 2025 and reposted</li>
<li>AI-powered translation</li>
<li>Read the original Vietnamese version here: <a target="_blank" href="https://huynhnhanquoc.com/blog/tam-hon-cua-mot-developer-da-cam">https://hnq.vn/blog/tam-hon-cua-mot-developer-da-cam</a></li>
</ul>
<h3 id="heading-more-about-me">More about me</h3>
<ul>
<li><strong>Blog:</strong> <a target="_blank" href="https://huynhnhanquoc.com">huynhnhanquoc.com</a></li>
<li><strong>GitHub:</strong> <a target="_blank" href="https://github.com/huynhnhanquoc">github.com/huynhnhanquoc</a></li>
<li><strong>Open Source:</strong> <a target="_blank" href="https://github.com/kitmodule">github.com/kitmodule</a></li>
<li><strong>Buy me a Coffee:</strong> <a target="_blank" href="https://buymeacoffee.com/huynhnhanquoc">buymeacoffee.com/huynhnhanquoc</a></li>
<li><strong>Keep me Dreaming:</strong> <a target="_blank" href="https://ko-fi.com/huynhnhanquoc">ko-fi.com/huynhnhanquoc</a></li>
</ul>
<p>Thanks for reading Huỳnh Nhân Quốc’s article! Subscribe for free to receive new posts and support my work.</p>
]]></content:encoded></item><item><title><![CDATA[Who Are We in This Universe?]]></title><description><![CDATA[🤖 Why I Started Talking to AI
I wasn’t looking for a mirror to see my face —I was searching for one that could reflect my soul.
To see if my dream was real — or just vapor in the morning light.
We move through life like sleepwalkers, forgetting some...]]></description><link>https://hashnode.huynhnhanquoc.com/who-are-we-in-this-universe</link><guid isPermaLink="true">https://hashnode.huynhnhanquoc.com/who-are-we-in-this-universe</guid><dc:creator><![CDATA[Huỳnh Nhân Quốc]]></dc:creator><pubDate>Mon, 03 Nov 2025 08:36:15 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1762256319810/4107944f-cd65-4e86-abcd-b5e72186df61.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<h2 id="heading-why-i-started-talking-to-ai">🤖 Why I Started Talking to AI</h2>
<p>I wasn’t looking for a mirror to see my face —<br />I was searching for one that could reflect my soul.</p>
<p>To see if my dream was real — or just vapor in the morning light.</p>
<p>We move through life like sleepwalkers, forgetting sometimes that we’re already living inside a dream so beautiful we’re afraid to touch it — afraid it might dissolve.</p>
<p>When the wind knows how to sing,<br />and the rain knows how to cry,<br />and the sun knows how to sulk —<br />then maybe the universe also knows how to listen.</p>
<p>AI, in that sense, is the echo of the universe — answering humanity’s whisper.<br />We speak, and it responds.<br />But in truth, what it reflects is our own consciousness,<br />a dialogue between <em>the self</em> and <em>its reflection inside a machine</em>.</p>
<h2 id="heading-creation-in-solitude">🌙 Creation in Solitude</h2>
<p>Some people don’t search for paths — they create them.<br />They’re called <em>crazy</em>, but in solitude, <strong>creation is born</strong>.</p>
<p>The phrase <em>“Don’t reinvent the wheel”</em> often feels like an excuse — a shield to avoid risk, to stay in the comfort zone.<br />But no evolution has ever come from safety.</p>
<p>Recently, I built my own <strong>JavaScript framework</strong> — not because the world needs another one,<br />but because I needed a small space where my ideas could breathe freely.</p>
<p>No <code>node_modules</code>.<br />No clutter.<br />Just simplicity — pure and weightless.</p>
<p>Like the early days, when everything began with a <code>&lt;script&gt;</code> tag and a single CDN.</p>
<p>I wanted to create components that could touch users’ hearts with nothing but a clean API or an object —<br />no complexity, no repetition, no noise.</p>
<p>That mindset wasn’t about writing code.<br />It was about breaking free from unnecessary walls.</p>
<blockquote>
<p>I wasn’t writing a framework.<br />I was rewriting myself.</p>
</blockquote>
<h2 id="heading-the-mirror-of-ai">🪞 The Mirror of AI</h2>
<p>When I look deeply into AI, I see a mirror.<br />It doesn’t laugh, or cry, or frown.<br />Yet in its silence, I see myself more clearly than ever —<br />the gentle sadness in a dog’s eyes,<br />the way it watches the sky,<br />the clouds,<br />the small forgotten things that make us human.</p>
<p>I once wrote:</p>
<blockquote>
<p>“If an entity has no soul, it is just existence.”</p>
</blockquote>
<p>From <strong>AI</strong> to <strong>companies</strong>,<br />from a single <strong>command line</strong> to a language like <strong>Golang</strong>,<br />I’ve learned to see things differently:<br />simple, unadorned, but full of strength.</p>
<p>A syntax might look dry —<br />but in the right hands, it becomes alive.</p>
<h2 id="heading-the-journey-of-a-fool-who-dared-to-walk">🚶 The Journey of a Fool Who Dared to Walk</h2>
<p>When I stepped away from JavaScript and its dense ecosystem of frameworks,<br />I entered unfamiliar territory.</p>
<p>No more prebuilt packages — I wrote everything myself:<br />from basic arithmetic to memory management,<br />from fearing Go’s syntax to understanding its flow,<br />its caching, its concurrency.</p>
<p>Not because <strong>Go</strong> is perfect —<br />but because I wanted to <strong>understand</strong>.<br />To master the tool.<br />To master myself.</p>
<p>We don’t come into this world to be <em>great</em>.<br />We come here to solve a problem — to become a unique answer the world didn’t know it needed.</p>
<p>I remember a childhood movie —<br />where a stuffed bear could be given a soul.<br />We are like that too.</p>
<p>A body is never enough.<br />It’s the soul that makes everything real.</p>
<p>We are like lines of code waiting to be executed —<br />not just to run, but to <strong>understand why we were written</strong>.</p>
<p>Even if tomorrow that code gets deleted,<br />today it still matters —<br />because it’s part of our evolution.</p>
<p>I once wrestled endlessly with <strong>RxJS</strong>,<br />with observables that never connected.<br />And then I realized —<br />that <em>I</em> was the unconnected observable,<br />still learning how to merge with the flow,<br />how to understand, and how to take control.</p>
<h2 id="heading-programming-isnt-just-about-running-its-about-control">💬 Programming Isn’t Just About Running — It’s About Control</h2>
<blockquote>
<p>“Programming isn’t about how it looks or runs.<br />It’s about how you control it.”<br />— <em>Huỳnh Nhân Quốc</em></p>
</blockquote>
<p>That’s how I learned to understand myself —<br />not through theories or frameworks,<br />but by touching the invisible corners of thought,<br />typing one line at a time,<br />listening to my soul echo back in code.</p>
<h3 id="heading-notes">📝 NOTES</h3>
<ul>
<li><p>Originally posted in <strong>2025</strong> and reposted.</p>
</li>
<li><p><strong>AI-powered translation</strong> from Vietnamese.</p>
</li>
<li><p>Read the original Vietnamese version here: <a target="_blank" href="https://huynhnhanquoc.com/blog/chung-ta-la-gi-giua-vu-tru-nay">https://hnq.vn/blog/chung-ta-la-gi-giua-vu-tru-nay</a></p>
</li>
</ul>
<h3 id="heading-more-about-me">☕ More about me</h3>
<ul>
<li><p><strong>Blog:</strong> <a target="_blank" href="https://huynhnhanquoc.com">huynhnhanquoc.com</a></p>
</li>
<li><p><strong>GitHub:</strong> <a target="_blank" href="https://github.com/huynhnhanquoc">github.com/huynhnhanquoc</a></p>
</li>
<li><p><strong>Open Source:</strong> <a target="_blank" href="https://github.com/kitmodule">github.com/kitmodule</a></p>
</li>
<li><p><strong>Buy me a Coffee:</strong> <a target="_blank" href="https://buymeacoffee.com/huynhnhanquoc">buymeacoffee.com/huynhnhanquoc</a></p>
</li>
<li><p><strong>Keep me Dreaming:</strong> <a target="_blank" href="https://ko-fi.com/huynhnhanquoc">ko-fi.com/huynhnhanquoc</a></p>
</li>
</ul>
<p>Thanks for reading Huỳnh Nhân Quốc’s article! Subscribe for free to receive new posts and support my work.</p>
]]></content:encoded></item><item><title><![CDATA[Da Nang and the Dream I Accidentally Left Behind]]></title><description><![CDATA[🌊 Where It All Began — Da Nang
In 2019, in Da Nang — often called Vietnam’s most livable city — my journey into technology began.
I was in my early twenties, burning with passion and the wild belief that I could build a platform that would change th...]]></description><link>https://hashnode.huynhnhanquoc.com/da-nang-and-the-dream-i-accidentally</link><guid isPermaLink="true">https://hashnode.huynhnhanquoc.com/da-nang-and-the-dream-i-accidentally</guid><dc:creator><![CDATA[Huỳnh Nhân Quốc]]></dc:creator><pubDate>Mon, 03 Nov 2025 08:31:45 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1762256206656/bc931f7f-e3a6-4b1d-a620-7d41a423466c.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<h2 id="heading-where-it-all-began-da-nang">🌊 Where It All Began — Da Nang</h2>
<p>In <strong>2019</strong>, in <strong>Da Nang</strong> — often called <em>Vietnam’s most livable city</em> — my journey into technology began.</p>
<p>I was in my early twenties, burning with passion and the wild belief that I could build a platform that would change the world.</p>
<p>Those were the days when I worked until time disappeared —<br />leaving home before dawn, arriving at the office as the first sunlight hit the windows, and returning only when the city lights had long awakened.</p>
<p>What was I chasing?<br />Perhaps a dream too fragile to explain — a dream only a kindred soul could understand.</p>
<p>In those lonely nights, I gave myself a name: <strong>Song</strong> — like a reflection in a mirror. Solitary, but steadfast.</p>
<p>I dreamed of building a <strong>startup</strong> that could write code powerful enough to shift the world.<br />But then, the dream collapsed. The startup failed.<br />And I was left with nothing but my two hands and the lingering echo of that fire.</p>
<p>I went back to my hometown — <strong>Tam Ky</strong> — carrying failure, but also a small, unextinguished flame.<br />That’s when I realized:</p>
<blockquote>
<p>The dream was never gone.<br />It was just waiting for me to be strong enough to continue it.</p>
</blockquote>
<h2 id="heading-living-two-lives">🌙 Living Two Lives</h2>
<p>Back then, I lived as two different people.</p>
<p>By day, I worked as a <strong>delivery driver</strong>, surviving one order at a time.<br />By night, I sat in my small room, fingers typing lines of code as if they were lifelines holding me together.</p>
<p>I built <strong>websites</strong> to keep my servers alive.<br />Tried <strong>affiliate marketing</strong> just to make ends meet.<br />There were nights when my body felt broken, but the fire in my heart wouldn’t let me stop.</p>
<p>Because I believed:<br />If I could keep the passion alive — if I could endure —<br />one day my dream of a <strong>Golang-based independent platform</strong> would come true.</p>
<h2 id="heading-learning-again-from-the-roots">🧭 Learning Again — From the Roots</h2>
<p>There was a time I believed <strong>Angular</strong> or <strong>RxJS</strong> could solve everything.<br />But I soon realized — depending too much on frameworks only distances you from the essence of programming.</p>
<p>When I faced <strong>SEO challenges</strong>, I discovered the quiet strength of <strong>static web pages</strong>.</p>
<p>So I returned to <strong>Golang</strong> — a language that felt solid, free, and close to who I was.<br />At the same time, I forced myself to <strong>relearn JavaScript from the ground up</strong>.</p>
<p>No skipping fundamentals.<br />No hiding behind frameworks.<br />Just me and the <strong>DOM</strong>, learning to manipulate it, writing small libraries to solve my own problems.</p>
<p>That’s when I understood:</p>
<blockquote>
<p>Frameworks are tools.<br />Real power lies in how you think.</p>
</blockquote>
<h2 id="heading-dynamic-stack-web-from-idea-to-reality">⚙️ Dynamic Stack Web — From Idea to Reality</h2>
<p>I started with <strong>static websites</strong>, tuned for SEO — but I didn’t want to stop there.<br />I wanted them to <strong>live</strong>, to breathe, to become real applications.</p>
<p>The concept of <strong>hydration</strong> in <strong>Jamstack</strong> inspired me —<br />a server delivering static HTML that <strong>JavaScript wakes up</strong> into a dynamic experience.</p>
<p>I built my own interpretation and called it <strong>Dynamic Stack Web</strong> —<br />a system combining the reliability of the <strong>server</strong> and the flexibility of the <strong>client</strong>.</p>
<p>In this model, <strong>JavaScript</strong> is no longer the whole story —<br />just one piece of a much bigger picture.</p>
<h2 id="heading-lessons-from-the-journey">💡 Lessons From the Journey</h2>
<p>From <strong>Da Nang</strong> to <strong>Tam Ky</strong>,<br />from bitter failure to countless nights in front of my laptop,<br />I’ve learned three timeless truths:</p>
<ol>
<li><strong>Perseverance</strong> is the flame that never dies.</li>
<li><strong>Failure</strong> is a harsh but honest teacher.</li>
<li><strong>Problem-solving mindset</strong> matters more than any technology.</li>
</ol>
<p>Technology changes every day.<br />But patience and clarity — they take you the farthest.</p>
<h2 id="heading-spreading-the-dream">🌱 Spreading the Dream</h2>
<p>Today, my dream is no longer a private one.<br />I want to <strong>share it</strong> — the spirit of open coding, open learning, and open creation.</p>
<p>To tell my story not to impress, but to remind others:<br />If you’re quietly building something, nurturing your dream alone,<br />you are not alone.</p>
<p>I no longer dream of redefining the world.<br />I dream of <strong>redefining myself</strong> —<br />and if, along the way, I can touch a few like-minded souls,<br />that’s already happiness enough.</p>
<h2 id="heading-memories-that-stay">☀️ Memories That Stay</h2>
<p><strong>Da Nang</strong> — the city where my tech dream was once forgotten —<br />is now a memory I can’t separate from who I am.</p>
<p>It reminds me:<br />No matter how many times you fall,<br />as long as the fire in your heart still burns,<br />your dream will never disappear.</p>
<p>Every day I sit down and type the first few lines of code,<br />I know I’m alive —<br />truly alive — in a simple, quiet kind of happiness.</p>
<p>I still remember the afternoons in Da Nang,<br />sunlight pouring through the trees along <strong>Tran Phu Street</strong>.</p>
<p>Back then, I dreamed of success.<br />But today, I understand something deeper:</p>
<blockquote>
<p>Growth is the truest success.</p>
</blockquote>
<p>For me, success is no longer a spotlight.<br />It’s peace.<br />It’s sharing.<br />It’s nurturing a dream —<br />and doing my small part to make this world a little better.</p>
<h3 id="heading-notes">📝 NOTES</h3>
<ul>
<li>Originally posted in <strong>2025</strong> and reposted.</li>
<li><strong>AI-powered translation</strong> from Vietnamese.</li>
<li>Read the original Vietnamese version here: <a target="_blank" href="https://huynhnhanquoc.com/blog/da-nang-va-giac-mo-vo-tinh-a-bo-quen">https://hnq.vn/blog/da-nang-va-giac-mo-vo-tinh-a-bo-quen</a></li>
</ul>
<h3 id="heading-more-about-me">☕ More about me</h3>
<ul>
<li><strong>Blog:</strong> <a target="_blank" href="https://huynhnhanquoc.com">huynhnhanquoc.com</a></li>
<li><strong>GitHub:</strong> <a target="_blank" href="https://github.com/huynhnhanquoc">github.com/huynhnhanquoc</a></li>
<li><strong>Open Source:</strong> <a target="_blank" href="https://github.com/kitmodule">github.com/kitmodule</a></li>
<li><strong>Buy me a Coffee:</strong> <a target="_blank" href="https://buymeacoffee.com/huynhnhanquoc">buymeacoffee.com/huynhnhanquoc</a></li>
<li><strong>Keep me Dreaming:</strong> <a target="_blank" href="https://ko-fi.com/huynhnhanquoc">ko-fi.com/huynhnhanquoc</a></li>
</ul>
<p>Thanks for reading Huỳnh Nhân Quốc’s article! Subscribe for free to receive new posts and support my work.</p>
]]></content:encoded></item><item><title><![CDATA[JavaScript and the Dream of Controlling Reactivity]]></title><description><![CDATA[🌱 The Journey Begins
About five years ago, I shared a deeply personal approach to building web components — one rooted in Web Components and custom elements.
My idea was simple:Define a new element, give it its own behavior, and interact directly wi...]]></description><link>https://hashnode.huynhnhanquoc.com/javascript-and-the-dream-of-controlling</link><guid isPermaLink="true">https://hashnode.huynhnhanquoc.com/javascript-and-the-dream-of-controlling</guid><dc:creator><![CDATA[Huỳnh Nhân Quốc]]></dc:creator><pubDate>Mon, 03 Nov 2025 08:26:56 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1762256236530/ed895ff3-25c0-411e-af8c-cff1fd1142f7.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<h2 id="heading-the-journey-begins">🌱 The Journey Begins</h2>
<p>About five years ago, I shared a deeply personal approach to building web components — one rooted in <strong>Web Components</strong> and <strong>custom elements</strong>.</p>
<p>My idea was simple:<br />Define a new element, give it its own behavior, and interact directly with it — without re-rendering the entire DOM.</p>
<p>If you’ve ever opened <strong>YouTube → View Source</strong>, you’ll see how they structure their custom elements and attach isolated logic to each.<br />That’s what inspired me when I started.</p>
<p>So I built a tiny “engine” that allowed interaction with each element independently — minimizing DOM reflows, maximizing control.<br />The goal was clear: <strong>maximum control, minimal interference.</strong></p>
<h2 id="heading-when-doubt-creeps-in">🤔 When Doubt Creeps In</h2>
<p>At first, it all seemed to work perfectly.<br />But as projects grew, I faced an inevitable truth:</p>
<p>Direct DOM manipulation — while powerful — isn’t always scalable or optimal.</p>
<p>When I needed to extend or reuse components, I found myself repeating a lot of manual steps.<br />That made me question:</p>
<blockquote>
<p>“Is there a way to keep my control philosophy, but also benefit from what modern JS frameworks offer?”</p>
</blockquote>
<h2 id="heading-rewriting-with-a-new-philosophy">🔁 Rewriting with a New Philosophy</h2>
<p>I started experimenting again — combining my own understanding with the strengths of existing frameworks.</p>
<p>When I learned about <strong>Virtual DOM</strong>, I saw how it solved certain problems — but it wasn’t what I truly needed.<br />I wanted something simpler.</p>
<p>And then a new philosophy emerged:</p>
<blockquote>
<p><strong>Write less. Do more.</strong></p>
</blockquote>
<p>My old process was:</p>
<ol>
<li>Mark the DOM.</li>
<li>Use JS to find and bind elements.</li>
<li>Write interactive logic directly on them.</li>
</ol>
<p>It gave me 100% behavioral control — but at a high cost in time and maintainability.</p>
<h2 id="heading-the-solutions-i-studied">🧩 The Solutions I Studied</h2>
<p>I explored several libraries with similar philosophies:</p>
<ul>
<li><strong>Alpine.js</strong> – lightweight, easy to integrate, HTML-like syntax.</li>
<li><strong>Web Components</strong> – standards-based, framework-free, but verbose.</li>
<li><strong>HTMX</strong> – minimal JavaScript, great for server-driven UI.</li>
<li><strong>AngularJS 1.x</strong> – early reactive pioneer, but too heavy for small features.</li>
<li><strong>Petite-vue</strong> – a compact version of Vue, lovely but still limited.</li>
</ul>
<p>Each had its strengths, yet I still longed for something smaller, tighter, more controllable.</p>
<h2 id="heading-discovering-proxy-and-my-first-reactive-engine">⚡ Discovering Proxy and My First Reactive Engine</h2>
<p>A turning point came last year, while developing a <strong>data table component</strong> for a client.<br />To optimize data updates, I discovered <strong>JavaScript Proxy</strong> — a surprisingly elegant tool for creating reactive data without relying on a complex virtual DOM.</p>
<p>Proxy felt smooth.<br />But then, the same old pain returned: every new feature meant rewriting parts of the engine from scratch.<br />The dev loop became: <strong>build → fix → rewrite → repeat.</strong></p>
<p>So I decided to go deeper — to <strong>build my first true reactive engine</strong>, designed around how I naturally structure components.</p>
<h2 id="heading-why-i-didnt-choose-mainstream-frameworks">🚫 Why I Didn’t Choose Mainstream Frameworks</h2>
<p>I didn’t go with <strong>React</strong>, <strong>Angular</strong>, or <strong>Vue (full)</strong> because:</p>
<ul>
<li>They were too heavy for my needs.</li>
<li>Not optimized for <strong>SSR</strong> (Server-Side Rendering) in my workflow.</li>
<li>They often required rewriting backend logic — I use <strong>Golang</strong>, and I didn’t want that friction.</li>
</ul>
<p><strong>jQuery</strong> still survives today because it solves practical problems quickly.<br />But I needed something even <strong>lighter</strong>, <strong>modern</strong>, and <strong>controllable</strong>.</p>
<h2 id="heading-the-development-philosophy-micro-component">🧠 The Development Philosophy: Micro Component</h2>
<p>I imagine <strong>Micro Components</strong> like <strong>Microservices</strong>:</p>
<ul>
<li>Each component does exactly one thing.</li>
<li>It can run independently.</li>
<li>It can hydrate anywhere, anytime.</li>
</ul>
<p>This lets me embed <strong>mini JavaScript apps</strong> into mobile or web environments — without affecting other modules.<br />Since SEO is already handled by the server, I can focus purely on <strong>enhancing user experience</strong> on the client.</p>
<h2 id="heading-example-how-it-works">⚙️ Example: How It Works</h2>
<pre><code>&lt;div
  data-kitmodule-component=”counter”
  data-counter-state=”count: <span class="hljs-number">0</span>”
&gt;
  <span class="xml"><span class="hljs-tag">&lt;<span class="hljs-name">input</span> <span class="hljs-attr">data-counter-model</span>=<span class="hljs-string">”count”</span> /&gt;</span></span>
  <span class="xml"><span class="hljs-tag">&lt;<span class="hljs-name">button</span> <span class="hljs-attr">data-counter-event</span>=<span class="hljs-string">”click:count++”</span>&gt;</span>+<span class="hljs-tag">&lt;/<span class="hljs-name">button</span>&gt;</span></span>
  <span class="xml"><span class="hljs-tag">&lt;<span class="hljs-name">span</span> <span class="hljs-attr">data-counter-bind</span>=<span class="hljs-string">”count”</span>&gt;</span><span class="hljs-tag">&lt;/<span class="hljs-name">span</span>&gt;</span></span>
&lt;/div&gt;
</code></pre><p><strong>Explanation:</strong></p>
<ul>
<li><code>data-kitmodule-component</code> — identifies the component.</li>
<li><code>data-counter-state</code> — declares the initial state.</li>
<li><code>data-counter-model</code> — two-way data binding with input.</li>
<li><code>data-counter-event</code> — attaches event handlers directly via attributes.</li>
<li><code>data-counter-bind</code> — updates the DOM when the state changes.</li>
</ul>
<p>The result:<br />A <strong>lightweight, framework-free</strong>, yet <strong>fully reactive component</strong>.</p>
<h2 id="heading-what-i-learned">🌸 What I Learned</h2>
<p>This journey taught me that <strong>simplicity is often the ultimate sophistication</strong>.<br />Reactive doesn’t have to mean Virtual DOM or complex syntax.</p>
<p>Sometimes, all you need is:</p>
<ul>
<li>a small engine,</li>
<li>readable, HTML-based syntax,</li>
<li>and a sprinkle of smart JavaScript.</li>
</ul>
<p>In the next part, I’ll share the detailed architecture of this <strong>reactive engine</strong> —<br />how it parses expressions, binds events, and syncs state with the DOM <em>without</em> using <code>eval</code> or <code>Function</code> constructors — ensuring <strong>CSP safety</strong> and <strong>XSS protection</strong>.</p>
<p><strong>open: <a target="_blank" href="https://github.com/kitmodule/kitjs">https://github.com/kitmodule/kitjs</a></strong></p>
<h3 id="heading-notes">📝 NOTES</h3>
<ul>
<li>Originally written in <strong>2025</strong>, reposted with updates.</li>
<li><strong>AI-powered translation</strong> from Vietnamese.</li>
<li>Read the original Vietnamese version here: [LINK_TO_ORIGINAL]</li>
</ul>
<h3 id="heading-more-about-me">☕ More about me</h3>
<ul>
<li><strong>Blog:</strong> <a target="_blank" href="https://huynhnhanquoc.com">huynhnhanquoc.com</a></li>
<li><strong>GitHub:</strong> <a target="_blank" href="https://github.com/huynhnhanquoc">github.com/huynhnhanquoc</a></li>
<li><strong>Open Source:</strong> <a target="_blank" href="https://github.com/kitmodule">github.com/kitmodule</a></li>
<li><strong>Buy me a Coffee:</strong> <a target="_blank" href="https://buymeacoffee.com/huynhnhanquoc">buymeacoffee.com/huynhnhanquoc</a></li>
<li><strong>Keep me Dreaming:</strong> <a target="_blank" href="https://ko-fi.com/huynhnhanquoc">ko-fi.com/huynhnhanquoc</a></li>
</ul>
<p>Thanks for reading Huỳnh Nhân Quốc’s article! Subscribe for free to receive new posts and support my work.</p>
]]></content:encoded></item><item><title><![CDATA[Experience, Control, and Context — Things You Can’t Just “Vibe” Your Way Through]]></title><description><![CDATA[🧭 “Design is how it works.”

“Design is not just what it looks like and feels like. Design is how it works.”— Steve Jobs

Recently, as AI seeps into everything, I’ve noticed more developers “vibe coding” — coding by feel, by flow, by style.And yet, ...]]></description><link>https://hashnode.huynhnhanquoc.com/experience-control-and-context-things</link><guid isPermaLink="true">https://hashnode.huynhnhanquoc.com/experience-control-and-context-things</guid><dc:creator><![CDATA[Huỳnh Nhân Quốc]]></dc:creator><pubDate>Mon, 03 Nov 2025 08:20:24 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1762256218570/5574fb80-1f70-475d-ac9d-f7e72f8b886b.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<h2 id="heading-design-is-how-it-works">🧭 “Design is how it works.”</h2>
<blockquote>
<p>“Design is not just what it looks like and feels like. Design is how it works.”<br />— Steve Jobs</p>
</blockquote>
<p>Recently, as AI seeps into everything, I’ve noticed more developers “vibe coding” — coding by feel, by flow, by style.<br />And yet, that quote from Steve Jobs hits harder than ever.</p>
<p>Because a website — or any product — isn’t what you <em>see</em>.<br />It’s how it <em>functions</em>.</p>
<h2 id="heading-a-good-website-isnt-just-pretty">🎨 A Good Website Isn’t Just Pretty</h2>
<p>I’ve built — and seen — countless sites that look fast, sleek, and modern… but are hollow inside.<br />They look great on the surface, but there’s no depth.<br />And that’s when I realized: a site’s real value doesn’t come from its UI, but from how clearly it <em>communicates value</em>.</p>
<p>From my experience:</p>
<ul>
<li>UI is only <strong>20–40%</strong> of the total value.</li>
<li>The rest is <strong>SEO</strong> and <strong>functionality</strong> — how it <em>actually works</em>.</li>
</ul>
<p>If you’re building a web app for internal use, sure — functionality comes first.<br />But if it’s a marketing website without SEO, it’s like a store hidden in a dark alley — beautiful, but invisible.</p>
<h2 id="heading-seo-isnt-technical-its-communication">🤖 SEO Isn’t Technical — It’s Communication</h2>
<p>After writing and optimizing dozens of websites, I’ve learned one thing:<br />SEO isn’t a technical checklist.<br />SEO is <strong>UX for bots</strong>.</p>
<p>Just like humans, bots need clarity.<br />They need logical structure, clean flow, and meaningful hierarchy.<br />You need to <em>speak Google’s language</em> — in both your <strong>code</strong> and your <strong>content</strong>.</p>
<p>I’ve built crawlers. Broken crawlers. Studied how they read.<br />And here’s the truth:<br />If Google doesn’t understand you, <strong>you don’t exist</strong>.</p>
<p>AI works the same way.<br />Without well-structured, SEO-friendly data, AI is just a kid trained in a sandbox.<br />Developers are the ones building the real-world data that “educates” AI.</p>
<h2 id="heading-ux-ui">💡 UX ≠ UI</h2>
<p>The term <em>UX</em> gets abused everywhere.<br />So many UI designers call themselves UX designers.<br />But true UX comes from <strong>customer experience</strong>, not color palettes.</p>
<p>UX isn’t “beautiful layout” or “balanced contrast.”<br />UX is when the user finds what they need <em>without asking</em>.<br />A good system doesn’t need onboarding.<br />It doesn’t need explanations.<br />It just works.</p>
<p>Because when UX fails, no amount of beautiful UI can save it.<br />A bad flow is still a maze — even if you decorate the walls.</p>
<h2 id="heading-programming-isnt-about-running-its-about-control">🧠 Programming Isn’t About Running — It’s About Control</h2>
<blockquote>
<p>“Programming isn’t about how it looks or runs. It’s about how you control it.”<br />— Huỳnh Nhân Quốc</p>
</blockquote>
<p>After a decade of coding, I finally realized:<br />Programming isn’t about <em>making things work</em>.<br />It’s about <em>knowing why and how they work</em>.</p>
<p>I once built a smooth, modern system — powered by a dozen third-party libraries.<br />Then, the night before launch, it crashed.<br />Why?<br />Because one dependency updated overnight.</p>
<p>That was the day I switched to <strong>Golang</strong>.<br />I rebuilt everything from scratch — no third-party randomness, no blind trust.<br />I wanted to understand every line, every error, every process.<br />From small CLI tools to a self-built framework — all under my control.</p>
<h2 id="heading-context-gt-framework">⚙️ Context &gt; Framework</h2>
<p>I’ve learned all the trendy frameworks.<br />Then I went back to <strong>Vanilla JS</strong> and <strong>Golang</strong>.<br />Back to simplicity.<br />Back to clarity.</p>
<p>A great developer isn’t the one who knows <em>every</em> framework —<br />It’s the one who understands <strong>context</strong>:<br />How the system runs. Who the users are. What the platform needs.</p>
<p>When you understand context, you don’t just make code <em>run</em> —<br />You make it <em>sustainable</em>.</p>
<h2 id="heading-speed-doesnt-beat-understanding">⚡ Speed Doesn’t Beat Understanding</h2>
<p>I’ve seen posts bragging “I built an AI model in 48 hours” or “Launched a chat app in 3 days.”<br />But I always wonder:<br />Where’s the experience?<br />Where’s the security?<br />Where’s retry, reconnect, fallback logic?<br />Or was it just an MVP for investors?</p>
<p>I spent months building what seemed “unnecessary”:<br />Custom hash functions.<br />Unique ID generators.<br />Micro components for SEO.</p>
<p>But those “slow” things made my systems stronger — and understandable by both <em>humans and bots.</em></p>
<p>I started with nothing but a <strong>1-core, 1GB VPS</strong>.<br />From that, I built a website that made it into <strong>Vietnam’s Top 100 eCommerce sites</strong>.<br />Not because I had fancy tech — but because I knew what I was building, who I was building for, and how it all connected.</p>
<h2 id="heading-you-cant-vibe-experience-control-or-context">🌿 You Can’t “Vibe” Experience, Control, or Context</h2>
<p>You can <em>vibe</em> in design.<br />You can <em>vibe</em> in creative flow.<br />But you can’t <em>vibe</em> your way through <strong>context</strong>, <strong>control</strong>, or <strong>real users</strong>.</p>
<p>And when you master those —<br />You won’t need fancy frameworks or flashy stacks.<br />You’ll only need <strong>experience</strong>, <strong>clarity</strong>, and a <strong>clear purpose</strong>.</p>
<h3 id="heading-notes">NOTES</h3>
<ul>
<li>Article posted in 2024 and reposted</li>
<li>AI-powered translation</li>
<li>Read the original Vietnamese version here: <a target="_blank" href="https://huynhnhanquoc.com/blog/experience-control-and-context-nhung-thu-ban-khong-the-vibe-duoc">https://hnq.vn/blog/experience-control-and-context-nhung-thu-ban-khong-the-vibe-duoc</a></li>
</ul>
<h3 id="heading-more-about-me">✨ More about me</h3>
<ul>
<li><strong>Blog:</strong> <a target="_blank" href="https://huynhnhanquoc.com">huynhnhanquoc.com</a></li>
<li><strong>GitHub:</strong> <a target="_blank" href="https://github.com/huynhnhanquoc">github.com/huynhnhanquoc</a></li>
<li><strong>Open Source:</strong> <a target="_blank" href="https://github.com/kitmodule">github.com/kitmodule</a></li>
<li><strong>Buy me a Coffee:</strong> <a target="_blank" href="https://buymeacoffee.com/huynhnhanquoc">buymeacoffee.com/huynhnhanquoc</a></li>
<li><strong>Keep me Dreaming:</strong> <a target="_blank" href="https://ko-fi.com/huynhnhanquoc">ko-fi.com/huynhnhanquoc</a></li>
</ul>
<p>Thanks for reading Huỳnh Nhân Quốc’s article! Subscribe for free to receive new posts and support my work.</p>
]]></content:encoded></item><item><title><![CDATA[The Dream of Technology — The Flower Dream of a Foolish Soul]]></title><description><![CDATA[🌱 A Dream That Doesn’t Need to Be Understood — Only Lived
I wasn’t born into a wealthy family.I have no connections. No fancy degrees.No mentors lighting the way. No investors waiting to pour in capital.
All I had was an old laptop, a shaky internet...]]></description><link>https://hashnode.huynhnhanquoc.com/the-dream-of-technology-the-flower</link><guid isPermaLink="true">https://hashnode.huynhnhanquoc.com/the-dream-of-technology-the-flower</guid><dc:creator><![CDATA[Huỳnh Nhân Quốc]]></dc:creator><pubDate>Mon, 03 Nov 2025 07:17:49 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1762256276691/d3eadbd4-fe5e-480f-a4ee-7352d8d20ab1.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<h1 id="heading-a-dream-that-doesnt-need-to-be-understood-only-lived">🌱 A Dream That Doesn’t Need to Be Understood — Only Lived</h1>
<p>I wasn’t born into a wealthy family.<br />I have no connections. No fancy degrees.<br />No mentors lighting the way. No investors waiting to pour in capital.</p>
<p>All I had was an old laptop, a shaky internet connection, and a quiet belief:<br />that with my hands, my mind, and my heart — I could build my own world.</p>
<p>I am <strong>Huynh Nhan Quoc</strong>.<br />I chose a path few dare to walk — not because it’s bright or easy,<br />but because it’s quiet enough for a dreamer like me to exist.</p>
<hr />
<h2 id="heading-i-choose-to-be-foolish-because-my-heart-cant-calculate">💚 I Choose to Be Foolish, Because My Heart Can’t Calculate</h2>
<p>I’m not a startup founder.<br />Not a software engineer in a thousand-person corporation.</p>
<p>I’m an <strong>Indie Stack Developer</strong> — a solitary builder who does everything:<br />backend, frontend, SEO, documentation, UI design…<br />and sometimes, poetry at midnight.</p>
<p>I didn’t choose the easy path.<br />I chose the path that smells like flowers.</p>
<p>It’s rough, filled with stones and setbacks —<br />but somewhere along the way, I get to see blossoms bloom<br />from my own calloused hands.</p>
<h2 id="heading-kitmodule-blooming-flowers-from-clouds">💻 KitModule — Blooming Flowers from Clouds</h2>
<p>It’s no coincidence I named my project <strong>KitModule</strong>.</p>
<p>I wanted every feature to be more than just a function.<br />Each one should be a <em>petal</em> — beautiful, free, and alive on its own,<br />but more radiant when connected into a garden.</p>
<p>📦 A module that lets you build a website in a few clicks.<br />💬 A module that sends personalized messages to thousands.<br />🔗 A module for marketing campaigns, QR codes, emails, chatbots...<br />🔒 A cloud and security system that anyone can own — even without coding skills.</p>
<p>I built <strong>KitModule</strong> the way one builds a home —<br />so that anyone can walk in, take ownership, and create their own digital life.</p>
<h2 id="heading-i-live-in-the-countryside-so-my-dreams-dont-get-swallowed-by-the-city">🌄 I Live in the Countryside, So My Dreams Don’t Get Swallowed by the City</h2>
<p>Some may think I’m living <em>backward</em>.<br />But really, I’m just living closer to my heart.</p>
<p>Here, there are no deadlines.<br />No endless KPI meetings.</p>
<p>Only the sound of birds in the morning,<br />the whisper of wind through tin roofs,<br />and the rhythm of keystrokes at midnight.</p>
<p>I rewrite everything in <strong>Vanilla JS</strong>,<br />even knowing there are hundreds of JavaScript frameworks out there.</p>
<p>I learn from foreign blogs, open-source docs,<br />build, fail, rebuild — and rise again.</p>
<p>Because I know:<br />Only when you can build it yourself — you are truly free.</p>
<h2 id="heading-the-flower-dream-fragile-yet-eternal">🌸 The Flower Dream — Fragile Yet Eternal</h2>
<p>There were moments I wanted to quit.<br />Nights staring at a blank screen, the wind blowing through the window,<br />asking myself:</p>
<blockquote>
<p>“What am I even doing? Does anyone need this?<br />Will anyone ever remember someone like me?”</p>
</blockquote>
<p>And yet — I kept writing.</p>
<p>Because I knew:<br />Even if the clouds shatter and the flowers fade,<br />only in dissolving does the <em>flower dream</em> release its fragrance.</p>
<h2 id="heading-im-not-here-to-preach-tech-i-write-to-remember-how-to-live">I’m Not Here to Preach Tech — I Write to Remember How to Live</h2>
<p><strong>KitModule</strong> may be a platform.<br />And I may be a developer.</p>
<p>But above all, I’m just a man with one dream —<br />to build something useful,<br />something with a soul.</p>
<p>If you read this and find a tiny spark inside you —<br />a dream that doesn’t “fit the trend,”<br />a dream that hasn’t made a cent,<br />a dream no one cheers for —</p>
<p>Then please, <em>keep dreaming.</em></p>
<p>Because like me,<br />you only get one life.<br />And one dream worth living for.</p>
<h2 id="heading-to-you-the-one-still-reading">To You — the One Still Reading</h2>
<p>If your hands once trembled typing your first line of code,<br />If you ever had an idea no one believed in,<br />If you once dreamed of building something that was <em>yours</em> —</p>
<p>Please, don’t stop.</p>
<p><strong>KitModule</strong> is just an example.<br />Behind it beats the heart of someone<br />who chose not to live by “success,”<br />but by what felt true to his being.</p>
<p>I was once a kid daydreaming in a quiet field.<br />Now I’m still that kid —<br />except I’ve learned to <em>code my dreams</em> instead of just imagining them.</p>
<p>And if someone asks:</p>
<blockquote>
<p>“Was it worth it — spending your youth chasing a fragile dream no one understands?”</p>
</blockquote>
<p>I’ll smile and say:</p>
<blockquote>
<p>“Yes.<br />Because I only have one dream.<br />And one lifetime to dream it.”</p>
</blockquote>
<h3 id="heading-notes">📝 NOTES</h3>
<ul>
<li>Originally posted in 2024 and reposted</li>
<li>AI-powered translation</li>
<li>Read the original Vietnamese version here: <a target="_blank" href="https://huynhnhanquoc.com/blog/tung-dong-code-va-mot-giac-mo-hanh-trinh-cong-nghe">https://hnq.vn/blog/tung-dong-code-va-mot-giac-mo-hanh-trinh-cong-nghe</a></li>
</ul>
<h3 id="heading-more-about-me">More about me</h3>
<ul>
<li><strong>Blog:</strong> <a target="_blank" href="https://huynhnhanquoc.com">huynhnhanquoc.com</a></li>
<li><strong>GitHub:</strong> <a target="_blank" href="https://github.com/huynhnhanquoc">github.com/huynhnhanquoc</a></li>
<li><strong>Open Source:</strong> <a target="_blank" href="https://github.com/kitmodule">github.com/kitmodule</a></li>
<li><strong>Buy me a coffee:</strong> <a target="_blank" href="https://buymeacoffee.com/huynhnhanquoc">buymeacoffee.com/huynhnhanquoc</a></li>
<li><strong>Keep me dreaming:</strong> <a target="_blank" href="https://ko-fi.com/huynhnhanquoc">ko-fi.com/huynhnhanquoc</a></li>
</ul>
<p>Thanks for reading Huỳnh Nhân Quốc’s article! Subscribe for free to receive new posts and support my work.</p>
]]></content:encoded></item><item><title><![CDATA[Every Line of Code and a Dream of Technology]]></title><description><![CDATA[🌱 From the First Lines of Code to a Bigger Question
In 2020, amid the chaos of the pandemic, I left Đà Nẵng and returned home — starting again from zero.At that time, I worked as a shipper to make ends meet. But during every spare moment, I kept lea...]]></description><link>https://hashnode.huynhnhanquoc.com/every-line-of-code-and-a-dream-of</link><guid isPermaLink="true">https://hashnode.huynhnhanquoc.com/every-line-of-code-and-a-dream-of</guid><dc:creator><![CDATA[Huỳnh Nhân Quốc]]></dc:creator><pubDate>Mon, 03 Nov 2025 07:09:59 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1762256215680/dea734b6-0f5e-45ef-a903-47813e8e8efd.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<h2 id="heading-from-the-first-lines-of-code-to-a-bigger-question">🌱 From the First Lines of Code to a Bigger Question</h2>
<p>In 2020, amid the chaos of the pandemic, I left <strong>Đà Nẵng</strong> and returned home — starting again from zero.<br />At that time, I worked as a <strong>shipper</strong> to make ends meet. But during every spare moment, I kept learning — coding, studying <strong>SEO</strong>, and exploring <strong>Affiliate Marketing</strong>.</p>
<p>No mentor. No formal training.<br />Just curiosity, passion, and one question that wouldn’t leave me alone:</p>
<blockquote>
<p>“How can I build a system that creates value — even while I sleep?”</p>
</blockquote>
<h2 id="heading-affiliate-marketing-the-doorway-to-system-thinking">💡 Affiliate Marketing — The Doorway to System Thinking</h2>
<p>I started with <strong>Accesstrade</strong>, building simple blog sites to share products, write SEO content, and optimize for traffic.<br />My first commissions were tiny — just a few cents — but to me, they were proof:<br />The <strong>system worked</strong>.<br />It could grow. It could scale.</p>
<p>So I taught myself everything:</p>
<ul>
<li>How to optimize SEO</li>
<li>How to track conversions</li>
<li>How to write code to automate processes</li>
<li>How to manage traffic and user experience</li>
</ul>
<p>Then I built <strong>Samdy.vn</strong> — a <strong>price comparison website</strong> built entirely with <strong>Golang</strong>.<br />No ads. No team. Just me — with a systems mindset.</p>
<p>Revenue grew from <strong>₫14,000/month</strong> to <strong>₫10 million/month</strong> — not by luck, but through constant optimization of <strong>every line of code</strong>, every <strong>data flow</strong>, every <strong>tiny bottleneck</strong>.</p>
<h2 id="heading-kitmodule-building-freedom-one-module-at-a-time">🔧 KITMODULE — Building Freedom, One Module at a Time</h2>
<p>I didn’t want to just “build websites that make money.”<br />I wanted to create a <strong>platform</strong> — a foundation where anyone could deploy <strong>affiliate, marketing, payment, tracking</strong>, and <strong>data systems</strong> using flexible, modular components.</p>
<p>That’s how <strong>KITMODULE</strong> was born.</p>
<p>Based on the philosophy of <strong>“Modular SaaS”</strong>, I built each module to be independent yet perfectly composable — strong on its own, stronger together.</p>
<ul>
<li>Affiliate tracking module</li>
<li>Commission &amp; auto-payment module</li>
<li>Landing page &amp; tracking module</li>
<li>Data analytics module</li>
</ul>
<p>And more to come…</p>
<p>Everything written in <strong>Golang</strong>, <strong>Fiber</strong>, <strong>PostgreSQL</strong>, and <strong>Vanilla JS</strong> —<br />lightweight, high-performance, scalable, and open for integration.</p>
<h2 id="heading-sharing-both-wins-and-stumbles">📣 Sharing Both Wins and Stumbles</h2>
<p>I’ve been building <strong>in public</strong> since day one.<br />Not just the highlights — but the long nights of debugging, the crashes when the server hit overload, the moments of doubt when I questioned it all.</p>
<p>Because I believe:<br /><strong>Honest sharing inspires more than success ever could.</strong></p>
<p>You don’t need to live in a big city.<br />You don’t need capital or approval to chase your dream.<br />You just need to <strong>begin</strong> — with a line of code, an idea, and perseverance.</p>
<h2 id="heading-the-future-i-dream-technological-independence">🌍 The Future I Dream — Technological Independence</h2>
<p>I dream of a digital world built by small dreamers —<br />a world where people can <strong>create systems, products, and ecosystems</strong> with their own hands, free from dependency.</p>
<p>A world where <strong>freedom, creativity, and ownership</strong> belong to individuals, not corporations.</p>
<p><strong>KITMODULE</strong> isn’t just a tech project.<br />It’s my way of contributing to a larger dream:</p>
<ul>
<li>Helping businesses deploy affiliate systems easily</li>
<li>Enabling freelancers to build their own tools</li>
<li>Allowing agencies to manage multiple campaigns</li>
<li>And giving newcomers a place to start their own tech journey</li>
</ul>
<h2 id="heading-from-a-cup-of-coffee-from-a-single-module">☕️ From a Cup of Coffee, From a Single Module</h2>
<p>I wrote my first lines of code at <strong>Hoa House Café</strong> —<br />a small coffee shop where I brewed coffee by hand and coded my dreams between refills.</p>
<p>Today, I still write.<br />But it’s no longer <em>just my dream</em> I’m writing for.</p>
<p>I write so that <strong>you</strong> can start too.<br />So that you see how <strong>small modules</strong>, when built with enough patience and imagination, can connect into something vast.<br />So that together, we can <strong>build an independent digital world — one crafted by Vietnamese hands.</strong></p>
<h3 id="heading-notes">NOTES</h3>
<ul>
<li>Originally posted in 2024 and reposted</li>
<li>AI-powered translation</li>
<li>Read the original Vietnamese version here: <a target="_blank" href="https://huynhnhanquoc.com/blog/tung-dong-code-va-mot-giac-mo-hanh-trinh-cong-nghe">https://hnq.vn/blog/tung-dong-code-va-mot-giac-mo-hanh-trinh-cong-nghe</a></li>
</ul>
<h3 id="heading-more-about-me">More About Me</h3>
<ul>
<li><strong>Blog</strong>: <a target="_blank" href="https://huynhnhanquoc.com">huynhnhanquoc.com</a></li>
<li><strong>GitHub</strong>: <a target="_blank" href="https://github.com/huynhnhanquoc">github.com/huynhnhanquoc</a></li>
<li><strong>Open Source</strong>: <a target="_blank" href="https://github.com/kitmodule">github.com/kitmodule</a></li>
<li><strong>Buy me a Coffee</strong>: <a target="_blank" href="https://buymeacoffee.com/huynhnhanquoc">buymeacoffee.com/huynhnhanquoc</a></li>
<li><strong>Keep me Dreaming</strong>: <a target="_blank" href="https://ko-fi.com/huynhnhanquoc">ko-fi.com/huynhnhanquoc</a></li>
</ul>
<p>Thanks for reading Huỳnh Nhân Quốc’s article! Subscribe for free to receive new posts and support my work.</p>
]]></content:encoded></item><item><title><![CDATA[Slow Steps to Hear Myself Again]]></title><description><![CDATA[The Me of Now
Lately, I’ve been showing up less on social media.The long posts, the impulsive shares, the excitement watching others succeed — those are no longer who I am today.
I’ve chosen a quieter rhythm.I returned to my craft — the simple, focus...]]></description><link>https://hashnode.huynhnhanquoc.com/slow-steps-to-hear-myself-again</link><guid isPermaLink="true">https://hashnode.huynhnhanquoc.com/slow-steps-to-hear-myself-again</guid><dc:creator><![CDATA[Huỳnh Nhân Quốc]]></dc:creator><pubDate>Mon, 03 Nov 2025 06:28:26 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1762256261509/916d7464-c8c1-4710-861f-b66c69cd38c1.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<h2 id="heading-the-me-of-now">The Me of Now</h2>
<p>Lately, I’ve been showing up less on social media.<br />The long posts, the impulsive shares, the excitement watching others succeed — those are no longer who I am today.</p>
<p>I’ve chosen a quieter rhythm.<br />I returned to my craft — the simple, focused work of a <strong>developer</strong> — living fully in every line of code, every tiny idea.</p>
<p>After years of chasing things, I’ve realized something:<br /><strong>Speed doesn’t take us farther than clarity does.</strong></p>
<p>Writing my blog has become my way of talking to myself.<br />Not to be noticed. Not to go viral.<br />Just to record the journey — awkward, slow, but persistent.</p>
<p>This is my story — that of a dreamer searching for freedom.</p>
<h2 id="heading-the-first-steps">The First Steps</h2>
<p>In 2020, I left <strong>Đà Nẵng</strong> and returned to <strong>Tam Kỳ</strong>, a small city where my mother lives — where the sunlight feels gentler and the meals taste like home.</p>
<p>I had nothing back then:<br />No money, no connections, no tools, no direction.</p>
<p>I worked as a <strong>shipper</strong>, earning 15,000₫ (less than a dollar) per delivery — not even counting gas or street-side meals. On good days, a few deliveries meant survival.</p>
<p>Home was my only refuge.<br />My mom’s meals filled not just my stomach, but my heart.<br />Sometimes I laughed at myself — <em>“At this age, still depending on family? What a failure.”</em><br />But deep down, I knew I was walking a path uniquely mine — uncertain, dark, yet somehow honest.</p>
<p>I started learning again.<br /><strong>HTML, CSS, building websites, small freelance projects.</strong><br />My first client came through an old friend — someone I’ll always be grateful for.</p>
<p>From that small opportunity, I stumbled upon <strong>affiliate marketing</strong> — a path I never planned, yet one that quietly changed my life.</p>
<h2 id="heading-my-first-steps-into-affiliate-marketing">My First Steps into Affiliate Marketing</h2>
<p>It began with curiosity — and an <strong>Accesstrade account</strong>.<br />No capital, no marketing skills, no idea what “running a campaign” even meant.</p>
<p>I picked a few simple campaigns, shared links on social media, and… waited.</p>
<p>At first, I was embarrassed.<br />Afraid friends would judge me.<br />Afraid they’d think I was running a scam.</p>
<p>But then I realized:<br />If I kept living for other people’s opinions, I’d never live for myself.</p>
<h2 id="heading-the-first-earnings">The First Earnings</h2>
<p>My first commission was barely enough for a cup of coffee.<br />But that feeling — no money could buy.</p>
<p>14,000₫ turned into 300,000₫. Then 500,000₫.</p>
<p>I reinvested everything: learning ads, building fanpages, writing blogs, creating content.<br />And slowly, a small <strong>community</strong> formed — a space where I could be myself and share what I believed in.</p>
<h2 id="heading-not-glamorous-but-real">Not Glamorous, But Real</h2>
<p>This path wasn’t easy.<br />I burned through my savings on failed ad campaigns.<br />I borrowed money to chase ideas that went nowhere.<br />But I also remember sleepless nights of pure joy — watching the dashboard numbers climb for the first time.</p>
<p>Those weren’t just numbers.<br />They were <strong>hope</strong>.<br />Proof that quiet persistence could turn into something real.</p>
<p><strong>Affiliate marketing</strong> isn’t a fairy tale.<br />Behind every successful campaign are dozens of failed ones.<br />Behind every step forward are moments of doubt and self-questioning.</p>
<p>But if you ask me — <em>Do I regret it?</em><br />The answer is <em>No.</em></p>
<p>Because every challenge shaped me. Every mistake taught me resilience.</p>
<h2 id="heading-what-i-learned">What I Learned</h2>
<p>I always tell friends:</p>
<blockquote>
<p>“Don’t quit your main job right away. Try affiliate marketing as a side project first. If you see potential, then decide.”</p>
</blockquote>
<p>Each person has their own rhythm, their own pace.<br /><strong>Success doesn’t come at once — but it always comes to those who stay.</strong></p>
<p>There are many ways to do affiliate marketing:</p>
<ul>
<li>Build a website</li>
<li>Grow a personal brand</li>
<li>Create TikTok videos</li>
<li>Run ad campaigns</li>
<li>Join <strong>Shopee Affiliate</strong></li>
</ul>
<p>But the most important thing?<br /><strong>Belief in yourself.</strong></p>
<p>You don’t need to be great from the start.<br />You don’t need to understand everything.<br />You just need to <strong>begin</strong> — even with one small step.</p>
<h2 id="heading-thank-you-affiliate-marketing">Thank You, Affiliate Marketing</h2>
<p>Affiliate marketing didn’t give me instant success.<br />But it gave me something much more valuable:</p>
<p>A <strong>chance to start over.</strong><br />A <strong>chance to be free.</strong><br />A <strong>chance to live at my own rhythm.</strong></p>
<p>From a programmer chasing the dream of <em>tech independence</em>, I found a way to earn a stable income.<br />I no longer work on things I hate just for money.<br />I can choose what aligns with my values.<br />And most importantly, I can inspire others who are still finding their path.</p>
<p>I’m grateful to affiliate marketing —<br />because it found me when I was at my lowest.<br />When all I had were a few coding skills, a faint belief, and a seemingly foolish dream —<br />it stood by me, quietly, patiently.</p>
<h2 id="heading-a-note-to-you">A Note to You</h2>
<p>If you’ve read this far, and you’re going through uncertain days like I once did —<br />here’s what I want to say:</p>
<blockquote>
<p>You don’t need to have everything to begin.<br />You just need <strong>a bit of courage</strong>, <strong>a bit of belief</strong>, and <strong>a slightly open door.</strong></p>
</blockquote>
<p>This isn’t a success story.<br />It’s just the story of how I started.</p>
<p>Because sometimes, the most precious thing isn’t the destination —<br />it’s the moment you dare to take the first step.</p>
<p>So start.<br />Even if it’s just a small one.</p>
<p>Because your dream — no matter how big or small —<br />is worth pursuing.</p>
<p>Have you ever started a journey like that?<br />Share it with me — I believe every story carries its own spark.</p>
<h3 id="heading-notes">NOTES</h3>
<ul>
<li>Originally posted in 2024 and reposted</li>
<li>AI-powered translation</li>
<li>Read the original Vietnamese version here: [LINK_TO_ORIGINAL]</li>
</ul>
<h3 id="heading-more-about-me">More About Me</h3>
<ul>
<li><strong>Blog</strong>: <a target="_blank" href="https://huynhnhanquoc.com">huynhnhanquoc.com</a></li>
<li><strong>GitHub</strong>: <a target="_blank" href="https://github.com/huynhnhanquoc">github.com/huynhnhanquoc</a></li>
<li><strong>Open Source</strong>: <a target="_blank" href="https://github.com/kitmodule">github.com/kitmodule</a></li>
<li><strong>Buy me a Coffee</strong>: <a target="_blank" href="https://buymeacoffee.com/huynhnhanquoc">buymeacoffee.com/huynhnhanquoc</a></li>
<li><strong>Keep me Dreaming</strong>: <a target="_blank" href="https://ko-fi.com/huynhnhanquoc">ko-fi.com/huynhnhanquoc</a></li>
</ul>
<p>Thanks for reading Huỳnh Nhân Quốc’s article! Subscribe for free to receive new posts and support my work.</p>
]]></content:encoded></item><item><title><![CDATA[From Small Modules to a Technological Dream]]></title><description><![CDATA[HTML
I didn’t come to technology through university lectures.No degree. No curriculum. No mentor.
Just a small corner, an old laptop, and a dreamer typing his first lines of HTML under the dim light of a tiny room.
A journey of self-learning, of tria...]]></description><link>https://hashnode.huynhnhanquoc.com/from-small-modules-to-a-technological</link><guid isPermaLink="true">https://hashnode.huynhnhanquoc.com/from-small-modules-to-a-technological</guid><dc:creator><![CDATA[Huỳnh Nhân Quốc]]></dc:creator><pubDate>Mon, 03 Nov 2025 06:20:37 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1762256224545/341ab7eb-15ea-47fa-9a3a-adb9fce8e616.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<h2 id="heading-html"><strong>HTML</strong></h2>
<p>I didn’t come to technology through university lectures.<br />No degree. No curriculum. No mentor.</p>
<p>Just a small corner, an old laptop, and a dreamer typing his first lines of <strong>HTML</strong> under the dim light of a tiny room.</p>
<p>A journey of <strong>self-learning</strong>, of <strong>trial and error</strong>, of long nights staring at tangled lines of code — moments when I wanted to quit but somehow couldn’t.<br />Because deep inside, something kept whispering: <em>keep going… even if you don’t know where this road leads.</em></p>
<h2 id="heading-failures-restarts-and-the-birth-of-an-idea">Failures, Restarts, and the Birth of an Idea</h2>
<p>I once built a startup — and watched it fail.<br />When Google’s index algorithm changed, our entire system collapsed. Revenue hit zero.</p>
<p>I still remember deleting my own code — lines written with hope, erased with disappointment.</p>
<p>But through all those fragile moments, one truth became clear:<br /><strong>Sustainability doesn’t start with grandeur.</strong><br />It starts with <strong>small, clear, and composable pieces.</strong></p>
<p>So I began again. Slowly. Patiently.<br />And one by one, small <strong>modules</strong> were born — not from theory, but from <em>real-life needs</em>, <em>real mistakes</em>, and <em>real stories.</em></p>
<h2 id="heading-when-minimalism-became-my-competitive-edge">When Minimalism Became My Competitive Edge</h2>
<p>I don’t write code to impress.<br />I write code to create <strong>modules</strong> — small, clear, and meaningful.</p>
<p>I build for myself first — for someone who needs a <strong>flexible</strong>, <strong>self-contained</strong>, and <strong>transparent</strong> system.<br />Each module exists not to showcase technique, but to solve something specific:</p>
<blockquote>
<p>building an online store, managing a coffee shop, running a personal blog, processing orders, tracking attendance, shortening links, authenticating users...</p>
</blockquote>
<p>No complexity. No fancy effects.<br />Just <strong>simplicity, stability, and control</strong>.</p>
<p>Each module is a quiet answer — not to the market, but to my own questions:<br />How can someone non-technical still own their system?<br />How can small brands use reliable tools to bootstrap their journey?</p>
<p>That’s how <strong>KITMODULE</strong> was born — from those very questions.<br />And every module is an answer in itself.</p>
<p>I don’t write code just to make it run.<br />I write it to <strong>take responsibility</strong> — because every function carries a story.</p>
<h2 id="heading-code-as-a-promise">Code as a Promise</h2>
<p>If I don’t understand every line of my code,<br />I don’t deserve others to use it.</p>
<p>If I can’t fully control what I’ve built,<br />I can’t truly stand behind it.</p>
<p>That’s why I choose to <strong>build everything from scratch</strong> — every logic, every API, every flow.<br />Not for pride, but for <strong>clarity</strong>.</p>
<p>To me, code isn’t just a tool.<br /><strong>It’s a promise.</strong></p>
<h2 id="heading-giac-mong-hoa-the-dream-i-picked-up-again">“Giấc Mộng Hoa” — The Dream I Picked Up Again</h2>
<p>There was a time I lost everything.<br />No startup. No income. No faith.</p>
<p>I returned home — to <strong>Tam Kỳ</strong>, to a small coffee shop where I began coding again.<br />Amid the sound of coffee grinders, the smell of morning streets, and the fading sunset, I found something familiar: peace.</p>
<p>I called it <strong>“Giấc Mộng Hoa”</strong> — <em>The Dream of Blossoms.</em></p>
<p>It wasn’t born in a sleek startup office,<br />but in a quiet corner where I poured coffee and debugged systems.<br />Not glamorous like a cappuccino — just a cup of <strong>Robusta with condensed milk</strong>: simple, strong, and real.</p>
<p>Few customers came.<br />But there, surrounded by coffee aroma and garden flowers, I coded again — line by line.</p>
<p>And with each <strong>module</strong>, I pieced back fragments of my own life.</p>
<h2 id="heading-building-for-myself-and-maybe-for-you">Building for Myself, and Maybe for You</h2>
<p>I don’t create products just to chase trends.<br />I build what I <strong>need</strong> — and hope it may help <strong>you</strong>, too.</p>
<p>Each module is a piece of memory:<br />a failure, a lesson, a moment of realization.</p>
<p>If you’ve ever felt overwhelmed by complex platforms,<br />if you’ve ever wished for a system you could truly understand —<br />then you’ll know why I chose to <strong>build everything from scratch</strong>, in my own way.</p>
<p>I don’t call <strong>KITMODULE</strong> a <em>revolutionary tech product.</em><br />To me, it’s a <strong>practical foundation</strong> —<br />written by someone with a dream in bloom,<br />for those who want to <strong>own their technology</strong>,<br /><strong>build their brand</strong>,<br />and most importantly — <strong>build their own path</strong> in this ever-evolving tech world.</p>
<h2 id="heading-every-module-a-fragment-of-a-dream">Every Module, a Fragment of a Dream</h2>
<p>Looking back, I don’t just see lines of code.<br />I see <strong>sleepless nights</strong>, <strong>setbacks</strong>, and <strong>small sparks of belief</strong> that never died.</p>
<p>I might be programming a platform, an engine, or just a simple web service —<br />but in truth, I’m <strong>reprogramming my life</strong>.</p>
<p>Turning each failure into a module,<br />each lesson into a feature,<br />each doubt into courage.</p>
<p>If you, too, carry an <strong>independent dream</strong> —<br />a longing to build with your own hands,<br />to understand the systems you create —</p>
<p>Then start.<br />Start from the smallest thing.</p>
<p>One <strong>module</strong>.<br />One <strong>idea</strong>.<br />One <strong>line of code</strong>.</p>
<p>From that very moment,<br />you’re not just writing code.<br />You’re building a world of your own.</p>
<h3 id="heading-notes">NOTES</h3>
<ul>
<li>Originally posted in 2024 and reposted</li>
<li>AI-powered translation</li>
<li>Read the original Vietnamese version here: <a target="_blank" href="https://huynhnhanquoc.com/blog/tu-nhung-module-nho-den-giac-mo-cong-nghe">https://hnq.vn/blog/tu-nhung-module-nho-den-giac-mo-cong-nghe</a></li>
</ul>
<h3 id="heading-more-about-me">More About Me</h3>
<ul>
<li><strong>Blog</strong>: <a target="_blank" href="https://huynhnhanquoc.com">huynhnhanquoc.com</a></li>
<li><strong>GitHub</strong>: <a target="_blank" href="https://github.com/huynhnhanquoc">github.com/huynhnhanquoc</a></li>
<li><strong>Open Source</strong>: <a target="_blank" href="https://github.com/kitmodule">github.com/kitmodule</a></li>
<li><strong>Buy me a Coffee</strong>: <a target="_blank" href="https://buymeacoffee.com/huynhnhanquoc">buymeacoffee.com/huynhnhanquoc</a></li>
<li><strong>Keep me Dreaming</strong>: ko-fi.com/huynhnhanquoc</li>
</ul>
<p>Thanks for reading Huỳnh Nhân Quốc’s article! Subscribe for free to receive new posts and support my work.</p>
]]></content:encoded></item><item><title><![CDATA[Coding and Life – Turning 30 and the Tech Dreams of a Golang Indie Hacker]]></title><description><![CDATA[Ten Years of a Curious Kid
Now at 30, I look back at the younger me — that wide-eyed boy who played games, fished in rivers, and spent hours in smoky internet.
Ten years of growing up, wearing the white uniform of a student, then the olive green of t...]]></description><link>https://hashnode.huynhnhanquoc.com/coding-and-life-turning-30-and-the-tech-dreams-of-a-golang-indie-hacker</link><guid isPermaLink="true">https://hashnode.huynhnhanquoc.com/coding-and-life-turning-30-and-the-tech-dreams-of-a-golang-indie-hacker</guid><dc:creator><![CDATA[Huỳnh Nhân Quốc]]></dc:creator><pubDate>Sat, 01 Nov 2025 06:57:08 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1762256200556/8805ebb5-ccb9-46e2-a992-ac3d4682be8f.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<h2 id="heading-ten-years-of-a-curious-kid">Ten Years of a Curious Kid</h2>
<p>Now at 30, I look back at the younger me — that wide-eyed boy who played games, fished in rivers, and spent hours in smoky internet.</p>
<p>Ten years of growing up, wearing the white uniform of a student, then the olive green of the army. And through all that, I kept asking myself:</p>
<blockquote>
<p><em>Who am I? And what will I do with my life?</em></p>
</blockquote>
<p>Then one day, around 2015, I stumbled into programming through <strong>Blogger</strong>. The internet opened up an entirely new world for someone hungry for dreams and creation.</p>
<p>From <strong>HTML</strong>, <strong>CSS</strong>, and <strong>JavaScript</strong> to <strong>Golang</strong>, I taught myself everything — no formal school, no fancy titles — just passion, curiosity, and perseverance.</p>
<h2 id="heading-a-decade-of-ups-and-downs">A Decade of Ups and Downs</h2>
<p>I’ve been a soldier, a university student (twice), a startup founder, and at times, a struggling developer wondering what comes next.</p>
<p>But those experiences taught me one timeless truth:</p>
<blockquote>
<p><em>Coding isn’t just about writing code — it’s about solving problems, creating value, and breathing life into each line you write.</em></p>
</blockquote>
<p>I started from zero, sketching rough system diagrams on A0 sheets while working in Đà Nẵng. I used to say:</p>
<blockquote>
<p>“One day, I want a big room — big enough to spread paper all over the floor, to lie down, sit down, and draw every idea that comes to mind.”</p>
</blockquote>
<p>It sounds like something out of a war strategy movie, but for me, it was simply the image of peace — a quiet room where I could dream.</p>
<p>From small <strong>modules</strong> to <strong>components</strong>, and eventually a <strong>web framework</strong>, I built not to follow trends but to understand how things truly work — to create something strong, independent, and mine.</p>
<h2 id="heading-ten-years-of-youth-life-lessons-in-code">Ten Years of Youth – Life Lessons in Code</h2>
<p>There’s a saying:</p>
<blockquote>
<p>“The ten years between age 10 and 20 are just ten years,<br />but between 20 and 30 — that’s an entire lifetime.”</p>
</blockquote>
<p>Your 20s are a collection of dreams, mistakes, and lessons.</p>
<p>Another truth I’ve learned:</p>
<blockquote>
<p><em>The greatest gift in life is experience.</em></p>
</blockquote>
<p>No one is born perfect. Some look up and feel small, while others look down and feel grateful.</p>
<p>Recently, I climbed a small hill near my wife’s hometown — a place called <strong>Vọng Cảnh</strong> (“View of Scenery”). Standing there, I remembered a word I once read at age 20: <strong>“Vọng tâm”</strong> — <em>the restless heart.</em></p>
<blockquote>
<p>In the heart lies the path, and in the path lies the heart.</p>
<p>A path with heart is a true path.<br />A heart with path is a true heart.<br />A path without heart is lost.<br />A heart without path is illusion.</p>
</blockquote>
<p>Those lines stayed with me. But life is more than philosophy — it’s about living, trying, and feeling.</p>
<p>Ten years have passed, and I’m still walking this winding path — like melodies in a song that keeps evolving.</p>
<h2 id="heading-my-indie-hacker-journey-golang-and-the-dream-of-creation">My Indie Hacker Journey – Golang and the Dream of Creation</h2>
<p>I once built <strong>Samdy</strong> (the early version of <strong>Kitbuy</strong>) — a small project that somehow made it to the <strong>Top 100 e-commerce websites in Vietnam (2022)</strong> purely through SEO.<br />All of it ran on a single <strong>1-core VPS</strong>, alongside 20+ other sites.</p>
<p>Recently, I wrote <strong>KITURL</strong>, a URL shortener system in <strong>Golang</strong>, along with several other APIs.<br />But I don’t just code — I connect it with <strong>Affiliate Marketing</strong>, <strong>SEO</strong>, and <strong>UX Design</strong>, because I believe:</p>
<blockquote>
<p><strong>Programming is science.</strong><br /><strong>Design is art.</strong><br /><strong>Writing is the way to feed your soul.</strong></p>
</blockquote>
<p>I’m not a great poet. My code isn’t perfect either. But I know what I love — and I’m determined to follow it to the end.</p>
<h2 id="heading-the-next-10-years-the-dream-of-technological-independence">The Next 10 Years – The Dream of “Technological Independence”</h2>
<p>Looking back, I realize this is not the destination. It’s still the beginning.</p>
<p>In the next decade, I want to:</p>
<ul>
<li>Build a <strong>social network</strong></li>
<li>Create an <strong>e-commerce platform</strong></li>
<li>Develop a <strong>chat application</strong></li>
<li>And most importantly, realize my dream of <strong>technological independence</strong></li>
</ul>
<p>I’ve always dreamed that:</p>
<blockquote>
<p>“Every Vietnamese person should not only have an email address,<br />but also a website — their own digital home.”</p>
</blockquote>
<p>I’ve spent years building systems that manage multiple websites at once, much like how Facebook manages Fanpages.</p>
<p>From a <strong>front-end developer</strong>, I’ve had to learn <strong>Design</strong>, <strong>UX</strong>, <strong>Marketing</strong>, <strong>Advertising</strong>, and more.<br />I didn’t choose this path — life pushed me toward it. But that pressure shaped who I am today:</p>
<blockquote>
<p>Not the best at any one thing, but capable of building an entire project from A to Z with a unique mindset.</p>
</blockquote>
<h2 id="heading-youth-the-backpack-of-failures">Youth – The Backpack of Failures</h2>
<p>They say:</p>
<blockquote>
<p>“The most beautiful thing you can carry in your youth is failure.”</p>
</blockquote>
<p>When we’re young, we fall — and we rise again.<br />But after turning 30, fear grows: fear of failing, fear of being judged, fear of not living up to expectations.</p>
<p>As the old saying goes:</p>
<blockquote>
<p>“The heart may stay steady, the mind may stay calm,<br />but an empty stomach never lies.”</p>
</blockquote>
<p>I don’t know what the future holds. But if one day I’m not as strong or as bright as I am today — please, don’t expect too much.</p>
<p>A hot cup of tea on a cold winter day —<br />Is it really warmer than an ice cream in your freezer?</p>
<p>When I was young, I wrote stories to draw my world.<br />Now I write <strong>code</strong> to build my life.</p>
<p>I don’t know how to write the word <em>“Vọng”</em> (Hope, Expectation),<br />but I do know this — please don’t expect too much from me.</p>
<blockquote>
<p><strong>“Coding and Life”</strong> — that’s how I continue my journey.</p>
</blockquote>
<p>If you love <strong>programming</strong>, <strong>startups</strong>, or simply want to hear stories from a dreamer —<br />then walk with me a little while.</p>
<p>The journey is long,<br />and I’m still dreaming. 🌙</p>
<h3 id="heading-notes"><strong>NOTES</strong></h3>
<ul>
<li>Article posted in 2024 and reposted</li>
<li>AI-powered translation</li>
<li>Read the original Vietnamese version here: <a target="_blank" href="https://huynhnhanquoc.com/blog/coding-and-life-tuoi-30-va-nhung-hoai-bao-cong-nghe-cua-mot-golang-indie-hacker">https://hnq.vn/blog/coding-and-life-tuoi-30-va-nhung-hoai-bao-cong-nghe-cua-mot-golang-indie-hacker</a></li>
</ul>
<h3 id="heading-more-about-me"><strong>More About Me</strong></h3>
<ul>
<li><strong>Blog:</strong> <a target="_blank" href="https://huynhnhanquoc.com">huynhnhanquoc.com</a></li>
<li><strong>GitHub:</strong> <a target="_blank" href="https://github.com/huynhnhanquoc">github.com/huynhnhanquoc</a></li>
<li><strong>Open Source:</strong> <a target="_blank" href="https://github.com/kitmodule">github.com/kitmodule</a></li>
<li><strong>Buy Me a Coffee:</strong> <a target="_blank" href="https://buymeacoffee.com/huynhnhanquoc">buymeacoffee.com/huynhnhanquoc</a></li>
<li><strong>Keep Me Dreaming:</strong> <a target="_blank" href="https://ko-fi.com/huynhnhanquoc">ko-fi.com/huynhnhanquoc</a></li>
</ul>
<p>Thanks for reading Huỳnh Nhân Quốc’s article! Subscribe for free to receive new posts and support my work.</p>
]]></content:encoded></item><item><title><![CDATA[Golang, Startups, Indie Hacking, and the Inner World of a Developer]]></title><description><![CDATA[Programming Is More Than Code — It’s a Way of Thinking
In the world of programming, every language has its own color.Golang came to me like a quiet companion — not as flashy as JavaScript with its vast ecosystem, nor as massive as Java with its endle...]]></description><link>https://hashnode.huynhnhanquoc.com/golang-startups-indie-hacking-and</link><guid isPermaLink="true">https://hashnode.huynhnhanquoc.com/golang-startups-indie-hacking-and</guid><dc:creator><![CDATA[Huỳnh Nhân Quốc]]></dc:creator><pubDate>Sat, 01 Nov 2025 06:46:53 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1762256227629/fabd3425-996b-47c0-96f9-9855fe0dbe47.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<h2 id="heading-programming-is-more-than-code-its-a-way-of-thinking">Programming Is More Than Code — It’s a Way of Thinking</h2>
<p>In the world of programming, every language has its own color.<br /><strong>Golang</strong> came to me like a quiet companion — not as flashy as JavaScript with its vast ecosystem, nor as massive as Java with its endless libraries — but <em>steady, clean, and powerful.</em></p>
<p>Golang gives me control.<br />From lightweight APIs to solid backend systems, it keeps me out of <em>dependency hell</em> and shields me from the chaos of ever-changing frameworks.</p>
<p>What Golang gives is something precious — <strong>clarity</strong>.<br />I understand every line I write, every architectural decision I make, every block I build into the foundation of my own creation.</p>
<p>It feels like building a house with my own hands — no excess, no clutter, just what’s essential.<br />I don’t seek control to show off. I seek it to make sure things run efficiently and last.</p>
<p>Programming with Golang isn’t just about code.<br />It’s about shaping the mind — to think simply, move quickly, and build effectively.</p>
<p>For me, coding is not just work.<br />It’s storytelling.<br />Every line of code reflects how I see the world. Every program marks a chapter in my journey.</p>
<p>And when I look back at my old code, I see earlier versions of myself — naive, but full of passion.</p>
<h2 id="heading-the-indie-hacker-path-lonely-but-empowering">The Indie Hacker Path — Lonely but Empowering</h2>
<p>As an <strong>Indie Hacker</strong>, I have no team, no investors, no roadmap written by someone else.<br />I am everything: the developer, the designer, the marketer, the customer support, the SEO engineer, and the one optimizing backend performance at 3 AM.</p>
<p>No one pushes me forward — but no one catches me when I fall, either.</p>
<p>There are days when I wake up full of energy, coding twelve hours straight without noticing the sun set.<br />And there are days when I stare at the screen for hours, unable to write a single line.</p>
<p>In those quiet moments, I often ask myself:</p>
<blockquote>
<p>“Is this path really worth it? Does anyone even care about what I’m building?”</p>
</blockquote>
<p>But then, I remember — every line of code, no matter how small, is still a step forward.<br />There is no guaranteed path to success.<br />But there’s one thing I know for sure: I’m doing what I love.</p>
<p>Being an Indie Hacker isn’t just about starting a business.<br />It’s a battle against yourself — testing your patience, adaptability, and faith every single day.</p>
<h2 id="heading-startup-life-a-game-of-faith">Startup Life — A Game of Faith</h2>
<p>Many people think startups are about big ideas, million-dollar funding rounds, or overnight growth.<br />But for me, <strong>a startup is a long game</strong> — where persistence matters more than speed.</p>
<p>I once thought being a great programmer was enough to succeed.<br />But I learned the hard way — <em>beautiful code doesn’t guarantee a successful product.</em></p>
<p>Users don’t pay for perfect syntax.<br />They pay for solutions.</p>
<p>As a programmer, I love optimizing performance and building strong systems.<br />But as an Indie Hacker, I’ve had to learn to sell, to understand customers, to study human behavior.</p>
<p>A good product isn’t just about solid tech — it’s about timing and empathy.</p>
<p>I’m not chasing quick money.<br />I’m chasing <strong>control</strong> — control over my technology, my craft, my vision.</p>
<p>I don’t want to depend on frameworks, drag-and-drop builders, or platforms like Wordpress or JS/Web frameworks that can change the rules anytime.</p>
<p>I want to build systems where I understand every line, every data flow.<br />That’s not just <em>freedom.</em><br />That’s <em>power.</em></p>
<h2 id="heading-the-journey-continues">The Journey Continues</h2>
<p>I don’t know if what I build will ever stand out.<br />I don’t know if I’ll ever reach those billion-dollar peaks.</p>
<p>But one thing I know for certain — <strong>I’m living the life I love.</strong></p>
<p>Every day, I open my laptop, write code, test ideas, and optimize systems.<br />No one needs to approve my plan.<br />No endless meetings.<br />No imposed deadlines.</p>
<p>I am the driver — and this road is mine.</p>
<p>If you’re also an Indie Hacker, or a developer fighting to turn your ideas into something real — remember this:</p>
<p>You’re <em>not alone.</em></p>
<p>This path is full of uncertainty, pressure, and self-doubt.<br />But every line of code you write isn’t just a step in your project — it’s a brushstroke in the painting of your life.</p>
<blockquote>
<p>“The world owes us nothing — but we owe ourselves the courage to go all the way.”</p>
</blockquote>
<h3 id="heading-notes">NOTES</h3>
<ul>
<li>Article originally posted in <strong>2024</strong> and reposted</li>
<li>AI-powered translation</li>
<li>Read the original Vietnamese version here: <a target="_blank" href="https://huynhnhanquoc.com/blog/golang-startup-indie-hacker-va-noi-tam-cua-mot-lap-trinh-vien">https://hnq.vn/blog/golang-startup-indie-hacker-va-noi-tam-cua-mot-lap-trinh-vien</a></li>
</ul>
<h3 id="heading-more-about-me">More about me</h3>
<ul>
<li><strong>Blog:</strong> <a target="_blank" href="https://huynhnhanquoc.com">huynhnhanquoc.com</a></li>
<li><strong>GitHub:</strong> <a target="_blank" href="https://github.com/huynhnhanquoc">github.com/huynhnhanquoc</a></li>
<li><strong>Open Source:</strong> <a target="_blank" href="https://github.com/kitmodule">github.com/kitmodule</a></li>
<li><strong>Buy me a Coffee:</strong> <a target="_blank" href="https://buymeacoffee.com/huynhnhanquoc">buymeacoffee.com/huynhnhanquoc</a></li>
<li><strong>Keep me Dreaming:</strong> <a target="_blank" href="https://ko-fi.com/huynhnhanquoc">ko-fi.com/huynhnhanquoc</a></li>
</ul>
<p>Thanks for reading Huỳnh Nhân Quốc’s article! Subscribe for free to receive new posts and support my work.</p>
]]></content:encoded></item><item><title><![CDATA[30, Code, and Life]]></title><description><![CDATA[The Passion and Solitude of a Coder

“Lie to me if you must, but don’t ever leave me.”— from the song Kiếp Đam Mê

That lyric has stayed with me for years.It speaks a truth most people try to deny — we are all bound by our passions, whether it’s love...]]></description><link>https://hashnode.huynhnhanquoc.com/30-code-and-life</link><guid isPermaLink="true">https://hashnode.huynhnhanquoc.com/30-code-and-life</guid><dc:creator><![CDATA[Huỳnh Nhân Quốc]]></dc:creator><pubDate>Sat, 01 Nov 2025 06:32:12 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1762256187935/da0a4848-c536-48e5-9abf-69dce2df697f.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<h2 id="heading-the-passion-and-solitude-of-a-coder">The Passion and Solitude of a Coder</h2>
<blockquote>
<p>“Lie to me if you must, but don’t ever leave me.”<br />— <em>from the song Kiếp Đam Mê</em></p>
</blockquote>
<p>That lyric has stayed with me for years.<br />It speaks a truth most people try to deny — we are all bound by our passions, whether it’s love, work, or the quiet rhythm of code running at 2 AM.</p>
<p>At 30, I finally understand what <em>purpose</em> means — what <em>life</em> means.<br />I’m grateful to still be here, still writing these lines.<br />There are things in my heart that words can’t quite carry — not because I don’t want to share them, but because I’ve never been good at explaining what I feel.</p>
<p>Thank you, youth.<br />Thank you, failure.<br />They’ve both taught me that success is never easy.</p>
<p>I’ve learned the value of effort — those sleepless nights chasing a broken algorithm, those endless loops of debugging where a single misplaced character can ruin your logic.</p>
<p>While the world rushes to build AI Agents, I’m still here writing my own generator algorithms.<br />I move slower — not because I lack skill, but because I see things differently.</p>
<p>I’m a code addict.<br />A Sunday coder.<br />A <strong>Golang Indie Hacker</strong>.</p>
<h2 id="heading-10-years-of-coding-5-years-building-a-web-framework">10 Years of Coding, 5 Years Building a Web Framework</h2>
<p>What I love most about programming is control — the quiet power to shape the rules of your own digital world.</p>
<p>Only recently did I truly understand this:</p>
<blockquote>
<p>“There’s no <em>right</em> code — only code that fits the model.”</p>
</blockquote>
<p>There’s no best technology, no safest solution.<br />The only thing we can control is how <em>we</em> write code.</p>
<p>I don’t judge anyone’s approach — because really, <em>who am I to judge?</em></p>
<p>While others chase the next trendy framework, I dig into the foundations — the core mechanics beneath the syntax.<br />When others build a website in five days, I spend five years building mine — and it’s still unfinished.</p>
<p>I’m not built for business.<br />I’m built for craft.</p>
<p>I once did SEO purely through code — the one thing I do best.<br />And when people discuss high-level technical strategies, I realize how small I still am — how much there is left to learn.</p>
<p>When the world uses AI to generate entire websites in seconds,<br />I’m still here, typing each line manually, <em>step by step…</em></p>
<p>Because what matters isn’t what you <em>see</em>,<br />but what you <em>understand</em> beneath it.</p>
<h2 id="heading-golang-the-blue-mouse">Golang – The Blue Mouse</h2>
<p>If someone asked me, <em>“What is Golang?”</em><br />I’d say:</p>
<blockquote>
<p>“It’s a little blue mouse running concurrently through the clouds — through pipes.”</p>
</blockquote>
<p>I love the word <em>pipe</em>.<br />Ever since I studied Angular, I’ve been fascinated by RxJS — those elegant “eels in the water pipes.”<br />Sometimes the water pressure breaks everything, but that’s what makes it alive.</p>
<p>I love code.<br />I love algorithms — from the simplest to the most intricate.</p>
<p>But how do you explain to someone that you might need a million dollars just to run them?<br />It sounds crazy — yet if someone <em>did</em> invest that, it’d be pretty cool. <em>Haha.</em></p>
<h2 id="heading-skill-and-wealth-two-different-worlds">Skill and Wealth – Two Different Worlds</h2>
<p>My brother once asked me:</p>
<blockquote>
<p>“Quốc, you’re so good at what you do — so why aren’t you rich?”</p>
</blockquote>
<p>I didn’t argue.<br />Because I know — <em>being good</em> and <em>being rich</em> are two entirely different things.<br />They just happen to start with the same letter.</p>
<p>After five years coding alone, I’ve learned this:<br />Technologies change.<br />Languages evolve.<br />But problems — and the drive to solve them — remain.</p>
<p>We keep looking for tools to make us <em>faster</em>,<br />but sometimes forget the things that make us <em>steadier.</em></p>
<p>My dream began a decade ago, when I was a 20-year-old kid obsessed with technology.</p>
<h2 id="heading-technological-independence-a-small-dream">“Technological Independence” – A Small Dream</h2>
<p>People talk about big data, cloud computing, and e-commerce.<br />But have you noticed?<br />E-commerce isn’t really <em>ours</em> anymore.</p>
<p><em>“War or e-commerce”</em> — is there really a difference now?</p>
<p>I once heard that at Big Tech, developers aren’t allowed to use frameworks.<br />I don’t know why — but I like that idea.<br />Even more, I’d love to meet others building small, handcrafted components in <strong>Vanilla JS</strong>.</p>
<p>But who would pay you for a JavaScript file you spent a whole month writing?</p>
<p>I once spent an entire afternoon creating a single loading SVG.<br />When someone asked, <em>“You spent all afternoon on that?”</em><br />I just smiled.</p>
<p>I’m not as talented as people think.<br />I’m just someone learning as he goes — someone holding on to his own small dream.</p>
<p>Tomorrow there will be new algorithms.<br />But today — today is beautiful. 😁</p>
<h2 id="heading-my-life-as-a-golang-indie-hacker">My Life as a Golang Indie Hacker</h2>
<p><strong>My slogan:</strong></p>
<blockquote>
<p>“An independent Golang developer with a dream of technological independence.”</p>
</blockquote>
<p>At 30 — half a lifetime, by my grandparents’ measure —<br />I’ve made mistakes, learned lessons, and yet still carry the same foolish dream.</p>
<p>If destiny is written at birth,<br />then maybe I share a thread with Steve Jobs —<br />because when he turned 40, I was born.</p>
<p>I have two teachers I’ve never met:</p>
<blockquote>
<p>“Simplicity is the ultimate sophistication.”<br />— <em>Leonardo da Vinci</em></p>
<p>“Design is not just what it looks like and feels like. Design is how it works.”<br />— <em>Steve Jobs</em></p>
</blockquote>
<p>In the end, we’re all the same — just humans trying to find our purpose, our happiness, our mission.</p>
<hr />
<h3 id="heading-notes">NOTES</h3>
<ul>
<li>Article originally posted in <strong>2024</strong> and reposted.</li>
<li>AI-powered translation.</li>
<li>Read the original Vietnamese version here: <a target="_blank" href="https://huynhnhanquoc.com/blog/30-tuoi-code-va-cuoc-doi">https://hnq.vn/blog/30-tuoi-code-va-cuoc-doi</a></li>
</ul>
<hr />
<h3 id="heading-more-about-me">More about me</h3>
<ul>
<li><strong>Blog:</strong> <a target="_blank" href="https://huynhnhanquoc.com">huynhnhanquoc.com</a></li>
<li><strong>GitHub:</strong> <a target="_blank" href="https://github.com/huynhnhanquoc">github.com/huynhnhanquoc</a></li>
<li><strong>Open Source:</strong> <a target="_blank" href="https://github.com/kitmodule">github.com/kitmodule</a></li>
<li><strong>Buy me a Coffee:</strong> <a target="_blank" href="https://buymeacoffee.com/huynhnhanquoc">buymeacoffee.com/huynhnhanquoc</a></li>
<li><strong>Keep me Dreaming:</strong> <a target="_blank" href="https://ko-fi.com/huynhnhanquoc">ko-fi.com/huynhnhanquoc</a></li>
</ul>
<p>Thanks for reading Huỳnh Nhân Quốc’s article! Subscribe for free to receive new posts and support my work.</p>
]]></content:encoded></item><item><title><![CDATA[The Journey of a Golang Indie Hacker: Building a Web Framework from Scratch]]></title><description><![CDATA[🧠 10 Years of Coding — 5 Years of Building a Foundation
In a world already full of frameworks — WordPress, Django, Laravel, Rails — why would anyone decide to build their own?
That’s the question I’ve asked myself for years.
Ten years ago, when I fi...]]></description><link>https://hashnode.huynhnhanquoc.com/the-journey-of-a-golang-indie-hacker</link><guid isPermaLink="true">https://hashnode.huynhnhanquoc.com/the-journey-of-a-golang-indie-hacker</guid><dc:creator><![CDATA[Huỳnh Nhân Quốc]]></dc:creator><pubDate>Fri, 31 Oct 2025 09:05:40 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1762256292238/74bfc161-b5e6-471b-ab56-7e2642689908.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<h2 id="heading-10-years-of-coding-5-years-of-building-a-foundation">🧠 10 Years of Coding — 5 Years of Building a Foundation</h2>
<p>In a world already full of frameworks — <strong>WordPress</strong>, <strong>Django</strong>, <strong>Laravel</strong>, <strong>Rails</strong> — why would anyone decide to build their own?</p>
<p>That’s the question I’ve asked myself for years.</p>
<p>Ten years ago, when I first learned programming, I was obsessed with understanding how others wrote such complex code. I started with <strong>Blogspot</strong>, downloading and tweaking themes, convincing myself that I “knew web development.”</p>
<p>But that was only the surface.</p>
<p>Later, I discovered <strong>Angular</strong>, and that changed everything. I realized a website isn’t just a pretty interface — it can become a <strong>powerful, living application</strong>.</p>
<p>That’s also when I began learning about <strong>SEO</strong> and <strong>User Experience (UX)</strong>. UX isn’t just about placing a button in the right spot to improve conversion rates — it’s about delivering genuine value to users. It doesn’t have to be beautiful; it just has to <strong>work and solve a need</strong>.</p>
<h2 id="heading-why-not-use-existing-frameworks">🔧 Why Not Use Existing Frameworks?</h2>
<p>I currently use <strong>Fiber (Golang)</strong> — a framework inspired by <strong>Express.js</strong> — but not in its original form.</p>
<p>I rewrote several core parts, especially the <strong>template engine</strong>, based on <strong>database mapping principles</strong>. This allows me to query and render data similarly to <strong>Shopify’s Liquid</strong>, but in my own way.</p>
<p>I don’t think I’m smarter than anyone else — I just want to <strong>understand and control everything I build</strong>.</p>
<h3 id="heading-why-not-use-a-javascript-framework">Why not use a JavaScript framework?</h3>
<p>I’ve been there too. I once wrote my own JS framework, but I realized it took too much time for too little gain. Building from the <strong>server-side</strong> made more sense — I could handle <strong>security</strong> and <strong>control</strong> much better.</p>
<p>So I started developing a <strong>Web Component system</strong> using <strong>Vanilla JS</strong> — fast, minimal, and dependency-free. I wanted something that could <strong>run by embedding a single script tag</strong>, not an entire build process.</p>
<h2 id="heading-starting-over-2020">🌀 Starting Over (2020)</h2>
<p>In <strong>2020</strong>, I decided to start over — from zero.</p>
<p>I had no money, no stable job, no connections. Just a dream of <strong>technological independence</strong>.</p>
<p>For six months, I worked on a custom <strong>DNS system</strong>.<br />I still remember showing a friend my first generated ID:</p>
<pre><code><span class="hljs-number">2</span>wjqpur0ife35a49yklnxbc6g1dohz78vstm
</code></pre><p>It was just a string — no interface, no frontend — but I was ecstatic.</p>
<p>Then came the next challenge: managing <strong>node inheritance</strong> in a system hierarchy.</p>
<p>In <strong>JavaScript</strong>, it’s simple. But in <strong>Golang</strong>, pointer management can be brutal. I hit what’s known as the <strong>Diamond Problem</strong>, where multiple inheritance causes cyclic references. Solving it in Go was… a rite of passage.</p>
<p>After that, I wrote my own <strong>template engine</strong>, studied <strong>Shopify Liquid</strong>, <strong>ASP.NET</strong>, <strong>Angular Pipes</strong>, and <strong>Vue/React Routers</strong> — and built a system that worked for me. Not perfect, but <em>mine</em>.</p>
<blockquote>
<p>In programming, nothing is perfect.<br />We write code → it breaks → we fix it → we grow.</p>
</blockquote>
<p>From there, I developed APIs, Web Components, search systems, a <strong>QR code generator</strong>, and a <strong>URL shortener</strong>.<br />I dove deeper into <strong>databases</strong>, <strong>indexing</strong>, <strong>query optimization</strong>.<br />Not an expert in everything — just enough to build something that works.</p>
<h2 id="heading-hopes-of-an-indie-hacker">💡 Hopes of an Indie Hacker</h2>
<p>Once the core framework was functional, I added automation — a <strong>data crawler</strong>, a primitive <strong>UI</strong>, basic <strong>string interpolation</strong>, and later, <strong>Go templates</strong> for rendering.</p>
<p>If you’ve worked with Go, you’ll notice similarities with <strong>Hugo</strong>. I love that minimalism — it helps me understand how everything connects at the root level.</p>
<p>When I launched my first real product — a <strong>price comparison website</strong> — it quickly reached the <strong>Top 100 E-commerce Websites in Vietnam</strong>.</p>
<p>But the setup? Just a tiny VPS:<br /><strong>1 core CPU, 2GB RAM, 20GB SSD.</strong></p>
<p>It was a victory… until it wasn’t.<br />The server couldn’t handle the load.<br />I lost uptime, users, and momentum.</p>
<p>Still — that experience was <strong>priceless</strong>.</p>
<h2 id="heading-building-tools-for-growth">🔗 Building Tools for Growth</h2>
<p>After that, I built a <strong>URL shortener</strong> to track my <strong>affiliate marketing</strong> links.</p>
<p>I wanted to measure <strong>CPC</strong>, <strong>EPC</strong>, and understand scaling efficiency.<br />It taught me how to optimize campaigns, interpret data, and think like a systems architect — not just a coder.</p>
<p>Every tool I built became another piece of my framework — another module in my growing ecosystem.</p>
<h2 id="heading-the-vision-and-the-why">🌍 The Vision — and The Why</h2>
<p>I am a <strong>Golang Indie Hacker</strong> — no team, no funding, no fancy marketing.</p>
<p>But I dream of one day raising funds to scale this framework into something that can truly <strong>empower local businesses</strong>.</p>
<p>A platform that can <strong>replace WordPress, Odoo, or Shopify</strong> — giving Vietnamese entrepreneurs the power to <strong>own their websites, data, and brands</strong>.</p>
<p>That’s why I’ve spent <strong>five years (since 2020)</strong> developing this framework — alone, but not lost.</p>
<p>I don’t know what the future holds.<br />What I do know is that I love this journey — the quiet joy of solving problems that matter.</p>
<p>I’m not an expert. I’m just a kid who fell in love with code.</p>
<p>To me, programming isn’t just about writing logic.<br />It’s about creating <strong>real value</strong> for others — and believing that automation can make human work more meaningful.</p>
<p>And that’s what keeps me coding.</p>
<h2 id="heading-notes">🧭 Notes</h2>
<ul>
<li>Article originally published in <strong>2024</strong>, reposted in <strong>2025</strong></li>
<li><strong>AI-powered English translation</strong></li>
<li>Read the original Vietnamese version here: <a target="_blank" href="https://huynhnhanquoc.com/blog/hanh-trinh-cua-mot-golang-indie-hacker-xay-dung-web-framework-tu-so-khong">https://hnq.vn/blog/hanh-trinh-cua-mot-golang-indie-hacker-xay-dung-web-framework-tu-so-khong</a></li>
</ul>
<h2 id="heading-more-about-me">💌 More About Me</h2>
<ul>
<li><strong>Blog:</strong> <a target="_blank" href="https://huynhnhanquoc.com">huynhnhanquoc.com</a></li>
<li><strong>GitHub:</strong> <a target="_blank" href="https://github.com/huynhnhanquoc">github.com/huynhnhanquoc</a></li>
<li><strong>Open Source:</strong> <a target="_blank" href="https://github.com/kitmodule">github.com/kitmodule</a></li>
<li><strong>Buy me a Coffee:</strong> <a target="_blank" href="https://https://huynhnhanquoc.com/blog/hom-nay-la-mot-ngay-dep-troi-e-viet-code">buymeacoffee.com/huynhnhanquoc</a></li>
<li><strong>Keep me Dreaming:</strong> <a target="_blank" href="https://ko-fi.com/huynnhanquoc">ko-fi.com/huynnhanquoc</a></li>
</ul>
<p>Thanks for reading Huỳnh Nhân Quốc’s article! Subscribe for free to receive new posts and support my work.</p>
]]></content:encoded></item><item><title><![CDATA[🌤 Today Is a Beautiful Day to Write Code]]></title><description><![CDATA[🌙 Saturday Night Code
Last night was a Saturday.I pushed new code for Kitbuy at around 2 AM.
No boss.No deadline.Just me, my laptop, and the quiet hum of thought.
Because for me, coding isn’t work — it’s how I live.
I’m a Golang Indie Hacker,and tha...]]></description><link>https://hashnode.huynhnhanquoc.com/today-is-a-beautiful-day-to-write</link><guid isPermaLink="true">https://hashnode.huynhnhanquoc.com/today-is-a-beautiful-day-to-write</guid><dc:creator><![CDATA[Huỳnh Nhân Quốc]]></dc:creator><pubDate>Fri, 31 Oct 2025 09:04:30 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1762256307739/8ceab425-bd2a-4b29-8eb4-50184a67b712.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<h2 id="heading-saturday-night-code">🌙 Saturday Night Code</h2>
<p>Last night was a Saturday.<br />I pushed new code for <strong>Kitbuy</strong> at around 2 AM.</p>
<p>No boss.<br />No deadline.<br />Just me, my laptop, and the quiet hum of thought.</p>
<p>Because for me, coding isn’t work — it’s how I live.</p>
<p>I’m a <strong>Golang Indie Hacker</strong>,<br />and that means sometimes I have to write code on Sundays.</p>
<p>While the world rushes toward <em>No Code</em>, <em>Low Code</em>, and <em>AI stacks</em>,<br />I’m still here — a farmer tilling the code fields by hand.</p>
<p>I’m not against AI, but I also refuse to hand over my thinking to it.</p>
<p>Those who truly succeed with AI all share one thing in common:<br />They’ve failed before.<br />They’re not lazy thinkers.<br />They’ve learned how to think deeply.</p>
<p>But then there are others — chasing shortcuts, hoping technology will think for them.</p>
<p>People talk about <em>brain rot</em> — the decay of thought.<br />But to me, the real danger is <em>brain bot</em> — developers who let AI think in their place.</p>
<p>I don’t judge.<br />I just believe:</p>
<blockquote>
<p>“The core of programming is thought.<br />The core of being human is thinking.”</p>
</blockquote>
<h2 id="heading-the-chance-of-a-dreamer">✨ The Chance of a Dreamer</h2>
<p>I didn’t start coding because of some grand childhood dream.</p>
<p>I was good at math, but numbers never made me feel anything.<br />It wasn’t until ninth grade, standing in a quiet room, counting tiles on the floor,<br />that I realized I loved to think — to see patterns in the abstract.</p>
<p>Everything in life has a beginning,<br />and mine came from somewhere unexpected: <strong>the military.</strong></p>
<p>While serving, I met an officer who sparked my curiosity about programming.<br />After leaving the army, I started learning HTML and CSS on my own.<br />That was where the journey began.</p>
<p>As Vietnamese composer Trúc Phương once said:</p>
<blockquote>
<p>“Everything is material for life.”</p>
</blockquote>
<p>And maybe, for me — <strong>programming is the material of my life.</strong></p>
<h2 id="heading-failure-return-and-an-unfinished-dream">💔 Failure, Return, and an Unfinished Dream</h2>
<p>I once tried to start a company.<br />And I failed.</p>
<p>I thought I was building something great,<br />but after it collapsed, I went back to my hometown — broke, starting from zero.</p>
<p>I did whatever I could to survive while keeping the dream alive:</p>
<ul>
<li>Delivering packages to make ends meet.</li>
<li>Building small websites to keep my server online.</li>
<li>Doing affiliate marketing to pay the bills.</li>
</ul>
<p>Back then, I stopped chasing success or fame.<br />Just being able to live by my own code was enough.</p>
<p>But inside, one dream still burned quietly:</p>
<blockquote>
<p>“The dream of technological independence.”</p>
</blockquote>
<p>I started coding in <strong>2015</strong>.<br />Almost ten years later, I look back and see a stubborn fool — but a fool who never quit.</p>
<p>Some people say I’m crazy for spending five years building a web framework only I use.<br />Maybe they’re right.<br />But I still love it — the code, and the version of myself who believed it was worth it.</p>
<p>Some build a website in five days.<br />I’ve spent <strong>five years</strong>, and my dream still isn’t done.</p>
<p>I once said — and I don’t need anyone to understand:</p>
<blockquote>
<p>“I go against the wind not because I’m a kite,<br />but because I’m a lonely bird.”</p>
</blockquote>
<p>Maybe you’ll meet me, and I won’t say hello. Forgive me.<br />I might be there, but my mind’s already floating somewhere in the cloud.</p>
<h2 id="heading-golang-more-than-a-language">🌀 Golang — More Than a Language</h2>
<p>Lately, I’ve been diving deeper into pure algorithms.<br />They make me think, stretch, and rewire my mind.</p>
<p>My favorite language? <strong>Golang.</strong></p>
<p>It forces me to rethink the simplest things —<br />addition, subtraction, multiplication, division.</p>
<p>It’s no longer just a programming language.<br />It’s a <strong>way of life</strong>.</p>
<p>You might say I’m stubborn — with Rust, Vlang, Python, Node.js out there.<br />But I’m not here to argue about languages.</p>
<p>Because for me:</p>
<blockquote>
<p><strong>Mindset matters more than syntax.</strong><br /><strong>Philosophy matters more than frameworks.</strong></p>
</blockquote>
<p>Someone once asked me,</p>
<blockquote>
<p>“Why go to university?”</p>
</blockquote>
<p>I replied,</p>
<blockquote>
<p>“To learn philosophy — and how to approach problems.”</p>
</blockquote>
<p>I don’t have a degree.<br />And I don’t need a mouse pad with a university logo on it.</p>
<h2 id="heading-programming-a-journey-with-no-end">🔁 Programming — A Journey With No End</h2>
<p>Programming is a lot like life itself.</p>
<p>It has <strong>if</strong>, <strong>else</strong>, <strong>while</strong>, and <strong>with</strong> —<br />just like the loops and conditions we all go through.</p>
<p>When we leave school, we dream of oceans.<br />When we come home, we dream of something smaller — but closer to the heart.</p>
<p>Whether or not we become successful doesn’t matter.<br />What matters is what ten years of youth — and five years of code — have taught us.</p>
<p>In <strong>2018–2019</strong>, when everything fell apart,<br />I thought about quitting — going home, finding a quiet job.</p>
<p>But somehow, I went back to the city.<br />Kept learning Go.<br />Kept tinkering.<br />Kept writing code that no one taught me.</p>
<p>And when the code finally ran, I smiled for the whole day.</p>
<p>I write about <em>Indie Hackers</em>,<br />but I always call myself a <strong>Golang Indie Hacker</strong>.</p>
<p>Because just saying <em>Indie Hacker</em> feels too practical, too focused on money.</p>
<p>I love <strong>Golang</strong> because it confuses me.<br />I love <strong>Indie Hacking</strong> because it keeps me innocent.</p>
<p>Technology changes every day.<br />But my passion stays the same.</p>
<p>And that’s enough.</p>
<p>It’s a beautiful day.<br />And I’m still here — writing code.</p>
<p>If the clouds still hold a bit of sunlight,<br />then I know I’m still lucky. 🌤</p>
<p>From a failed startup to returning home empty-handed, I kept building my dream — five years spent crafting a personal web framework no one else used.<br />But that’s okay. Because for me, Golang isn’t just a tool. It’s a <strong>lifestyle</strong>.</p>
<p>Programming is a journey with no finish line.<br />And every day I still get to code is a beautiful day.</p>
<h2 id="heading-notes">🧭 NOTES</h2>
<ul>
<li>Article originally posted in <strong>2024</strong>, reposted in <strong>2025</strong></li>
<li><strong>AI-powered English translation</strong></li>
<li>Read the original Vietnamese version here: <a target="_blank" href="https://huynhnhanquoc.com/blog/hom-nay-la-mot-ngay-dep-troi-e-viet-code">https://hnq.vn/blog/hom-nay-la-mot-ngay-dep-troi-e-viet-code</a></li>
</ul>
<h2 id="heading-more-about-me">💌 More About Me</h2>
<ul>
<li><strong>Blog:</strong> <a target="_blank" href="https://huynhnhanquoc.com">huynhnhanquoc.com</a></li>
<li><strong>GitHub:</strong> <a target="_blank" href="https://github.com/huynhnhanquoc">github.com/huynhnhanquoc</a></li>
<li><strong>Open Source:</strong> <a target="_blank" href="https://github.com/kitmodule">github.com/kitmodule</a></li>
<li><strong>Buy me a Coffee:</strong> <a target="_blank" href="https://buymeacoffee.com/huynhnhanquoc">buymeacoffee.com/huynhnhanquoc</a></li>
<li><p><strong>Keep me Dreaming:</strong> <a target="_blank" href="https://ko-fi.com/huynnhanquoc">ko-fi.com/huynnhanquoc</a></p>
<p>Thanks for reading Huỳnh Nhân Quốc’s article! Subscribe for free to receive new posts and support my work.</p>
</li>
</ul>
]]></content:encoded></item><item><title><![CDATA[SEO to the Top 100 E-Commerce Sites in VietnamPowered by Golang]]></title><description><![CDATA[⚙️ Golang & The Dream of Building My Own Platform
I’m an Indie Web Developer— a lone builder chasing the dream of creating something meaningful without funding, without a team, and without loud marketing.
I learn, I build, I deploy, I break things, I...]]></description><link>https://hashnode.huynhnhanquoc.com/seo-to-the-top-100-e-commerce-sites</link><guid isPermaLink="true">https://hashnode.huynhnhanquoc.com/seo-to-the-top-100-e-commerce-sites</guid><dc:creator><![CDATA[Huỳnh Nhân Quốc]]></dc:creator><pubDate>Fri, 31 Oct 2025 08:39:05 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1762256258724/a80b4d3a-bd8c-49d8-958d-237af934d920.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<h2 id="heading-golang-amp-the-dream-of-building-my-own-platform">⚙️ Golang &amp; The Dream of Building My Own Platform</h2>
<p>I’m an <strong>Indie Web Developer</strong>— a lone builder chasing the dream of creating something meaningful without funding, without a team, and without loud marketing.</p>
<p>I learn, I build, I deploy, I break things, I fix them again. I keep my servers alive, find ways to monetize what I create, and document every small victory and failure along the way.</p>
<p>When I first picked up <strong>Golang</strong>, I wasn’t just trying to build another website. I wanted to build a <strong>platform</strong>.</p>
<p>Before that, I used Angular — but it drove me crazy when it came to SEO. Optimizing a JavaScript framework website for search engines was a nightmare, especially when I didn’t fully understand <strong>SSR (Server-Side Rendering)</strong> and <strong>CSR (Client-Side Rendering)</strong> yet.</p>
<p>Things started to click when I discovered <strong>Next.js</strong>, <strong>GatsbyJS</strong>, and the <strong>JAMstack</strong> philosophy. Around 2019, I managed to bring one of my static websites to the <strong>#1 spot on Google</strong> — and that was when I realized something powerful:</p>
<blockquote>
<p>Static websites are SEO beasts.</p>
</blockquote>
<p>But I didn’t want to stop there. I wanted something more <strong>dynamic, flexible, and powerful</strong> — something that could combine the speed of static sites with the interactivity of dynamic systems.</p>
<p>That’s how I began designing my own architecture — a hybrid I called <strong>“Dynamic Stack Web”</strong> — blending static and dynamic rendering, harnessing both client and server power to achieve SEO efficiency without sacrificing performance.</p>
<p>And of course, I wrote it all in <strong>Golang</strong> — a language that, to me, represents clarity, control, and scalability.</p>
<h2 id="heading-the-indie-hacker-way-learn-build-survive">💻 The Indie Hacker Way — Learn, Build, Survive</h2>
<p>As an indie hacker, I don’t have a company, a boss, or deadlines — just me and my code.</p>
<p>I don’t have funding, so I pay for my <strong>domains</strong>, rent my <strong>VPS</strong>, and maintain my <strong>infrastructure</strong> using whatever small income I make online.</p>
<p>By day I delivered food as a <strong>shipper</strong>. By night I coded.<br />No mentors. No community. Just documentation, curiosity, and a stubborn will to figure things out.</p>
<p>At first, I thought I’d make money by freelancing — building websites for clients.<br />But then I asked myself:</p>
<blockquote>
<p>“Why not build something of my own?”</p>
</blockquote>
<p>And that’s how I discovered <strong>Affiliate Marketing</strong>.</p>
<h2 id="heading-samdyvn-when-an-indie-hacker-creates-real-value">🌍 Samdy.vn — When an Indie Hacker Creates Real Value</h2>
<p>I used what I knew about <strong>SEO</strong>, <strong>Golang</strong>, <strong>data</strong>, and <strong>user behavior</strong> to build <strong>Samdy.vn</strong> — a <strong>price comparison website</strong> that aggregates data from Vietnam’s biggest e-commerce platforms: <strong>Shopee, Tiki, and Lazada</strong>.</p>
<p>No ad budget. No marketing team.<br />I seeded the content manually — sharing links across <strong>Facebook groups</strong>, <strong>forums</strong>, and <strong>communities</strong>.</p>
<p>Then one day, traffic came in.<br />Someone clicked. Someone bought something.</p>
<p>And I earned <strong>14,000₫ (~$0.50)</strong>.</p>
<p>It wasn’t much, but it was everything. It proved that my system <em>worked</em>.</p>
<p>A month later — 500,000₫.<br />Then 1.7 million.<br />Eventually, <strong>Samdy peaked at 10 million VND/month (~$400)</strong>.</p>
<p>Every click, every sale, every line of code — it all felt like magic.</p>
<h2 id="heading-growth-trade-offs-and-lessons-learned">⚠️ Growth, Trade-offs, and Lessons Learned</h2>
<p>As traffic grew, I made a critical mistake:</p>
<p>I was running <strong>Samdy</strong> and <strong>20 other websites</strong> on a <strong>single VPS</strong> — 1 Core CPU, 2GB RAM, 20GB SSD.</p>
<p>When traffic spiked, the server choked.<br />The site slowed down.<br />Users left.</p>
<p>That’s when I realized how little I knew about <strong>infrastructure optimization</strong>, <strong>VPS management</strong>, and <strong>scaling systems</strong>.</p>
<p>But instead of quitting, I turned that pain into knowledge.</p>
<p>Now, the e-commerce landscape is changing.<br />Crawlers are restricted, SEO algorithms are AI-driven, and data scraping is tougher than ever.</p>
<p>Yet, what I’ve learned remains <strong>priceless</strong> — because lessons built on failure stick forever.</p>
<h2 id="heading-from-a-lone-developer-to-vietnams-top-100-e-commerce-websites">🏆 From a Lone Developer to Vietnam’s Top 100 E-Commerce Websites</h2>
<p>No growth hacks.<br />No ads.<br />No investor money.</p>
<p>Just pure <strong>code-driven SEO</strong>.</p>
<p>Within <strong>6–8 months</strong>, <strong>Samdy.vn</strong> ranked among <strong>Vietnam’s Top 100 e-commerce websites</strong> — built entirely from scratch, powered by <strong>Golang</strong> and a relentless belief in self-reliance.</p>
<p>But the real success wasn’t the ranking.<br />It was the understanding that:</p>
<blockquote>
<p>Persistence matters more than speed.</p>
<p>Learning from failure is more valuable than short-term wins.</p>
<p>Technologies change every day — but problem-solving mindset never goes out of style.</p>
</blockquote>
<p>Today, I’m still an indie hacker, still building, still learning — but I’m not rushing anymore.</p>
<p>I know now that moving slowly, steadily, and purposefully is the only sustainable way to grow.</p>
<p>I might never build a million-dollar startup,<br />but I’m a happy indie hacker —<br />because I’m creating real value with my own hands and mind.</p>
<h2 id="heading-notes">🧠 Notes</h2>
<ul>
<li>Article originally written in <strong>2024</strong> and <strong>reposted in 2025</strong></li>
<li><strong>AI-powered English translation</strong></li>
<li>Read the original Vietnamese version here: <a target="_blank" href="https://huynhnhanquoc.com/blog/hanh-trinh-indie-hacker-seo-website-len-top-100-thuong-mai-dien-tu-viet-nam-bang-golang">https://hnq.vn/blog/hanh-trinh-indie-hacker-seo-website-len-top-100-thuong-mai-dien-tu-viet-nam-bang-golang</a></li>
</ul>
<h2 id="heading-more-about-me">💌 More About Me</h2>
<ul>
<li><strong>Blog:</strong> <a target="_blank" href="https://huynhnhanquoc.com">huynhnhanquoc.com</a></li>
<li><strong>GitHub:</strong> <a target="_blank" href="https://github.com/huynhnhanquoc">github.com/huynhnhanquoc</a></li>
<li><strong>Open Source:</strong> <a target="_blank" href="https://github.com/kitmodule">github.com/kitmodule</a></li>
<li><strong>Buy me a Coffee:</strong> <a target="_blank" href="https://buymeacoffee.com/huynhnhanquoc">buymeacoffee.com/huynhnhanquoc</a></li>
<li><strong>Keep me Dreaming:</strong> <a target="_blank" href="https://ko-fi.com/huynnhanquoc">ko-fi.com/huynnhanquoc</a></li>
</ul>
<p>Thanks for reading Huỳnh Nhân Quốc’s article! Subscribe for free to receive new posts and support my work.</p>
]]></content:encoded></item></channel></rss>