# The Indie Path


## 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 opportunity to start over.

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.

Looking back, I realized that those days taught me the most important lesson: **big dreams don’t begin with leaps; they begin with slow, small steps.**

## Golang and the Dream of a Fool

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.

I started from scratch: learning syntax, practicing routers with `mux`, exploring `fiber`, 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 **everything to the core**.

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 **laying the first bricks of a dream yet to take shape**.

## SSR — Returning to the Original Dream

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:

```
add(a, b) => a + b
```

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.

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.

Working with SSR, I realized something many modern frameworks forget: **the web isn’t about complexity, it’s about improving experiences**. 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.

## JavaScript and Dreams

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.

I saw a different world. JS didn’t need frameworks to be powerful. **Vanilla JS** — simple and free — gave me a sense of true mastery. I sometimes wondered:

> “Are JS frameworks just flawed versions of JavaScript itself?”

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: **two-way binding**.

From those nights, **Kit JS** was born.

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, `define`, `reference`, to inheritance. To me, Kit JS is more than code; it’s a message:

> “Understand technology before depending on it.”

## Openness and the Indie Path

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.

I like to call myself an **indie-stack developer** — 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.

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.

If no one paves the way, our first lines of code **become the path**.

The dream of technological independence isn’t about creating a million-dollar product. It’s about **understanding technology, being free with it, and letting it bridge passion with real value**.

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 **a dreamer with an old laptop and a flower on the keyboard** — a fool who believes that with a dream, we can create an entire world.

**NOTES**

- Article posted in 2025 and reposted
- AI-powered translation
- Read the original Vietnamese version here: [https://hnq.vn/blog/con-duong-indie](https://huynhnhanquoc.com/blog/con-duong-indie)

**More about me:**

- Blog: [huynhnhanquoc.com](https://huynhnhanquoc.com)
- GitHub: [github.com/huynhnhanquoc](https://github.com/huynhnhanquoc)
- Open Source: [github.com/kitmodule](https://github.com/kitmodule)
- Buy me a Coffee: [buymeacoffee.com/huynhnhanquoc](https://buymeacoffee.com/huynhnhanquoc)
- Keep me Dreaming: [ko-fi.com/huynhnhanquoc](https://ko-fi.com/huynhnhanquoc)

Thanks for reading Huỳnh Nhân Quốc’s article! Subscribe for free to receive new posts and support my work.

