Recently I decided to start a small personal tech blog.

The goal is simple: a place where I can document things I learn about software engineering, cloud architecture, and system design.

In this post I’ll briefly explain how this blog was built.


Requirements

Before choosing the tech stack, I had a few simple requirements:

  • fast and lightweight
  • easy writing workflow
  • minimal maintenance
  • Git-based workflow
  • close to zero cost

Since the blog mainly contains text content, a static site generator made the most sense.


Tech Stack

The stack is intentionally minimal:

  • Hugo — static site generator
  • Markdown — writing posts
  • GitHub — source control
  • Static hosting — deployment

The entire site is generated as static HTML files.

There is:

  • no backend
  • no database
  • no server logic

This keeps the system simple and reliable.


Why Hugo?

There are many ways to build a blog today. I considered several options.

OptionProsCons
HugoVery fast, simple, markdown-basedRequires some setup
WordPressEasy to start, many pluginsHeavy, requires maintenance
GhostGreat writing experienceHosting cost
Next.js BlogVery flexibleMore complex than necessary

I eventually chose Hugo because it fits the philosophy of this blog:

  • fast
  • minimal
  • low maintenance

For a personal engineering blog, this trade-off works well.


Architecture

The architecture of the blog is intentionally simple.

Write Markdown
      ↓
Git Commit
      ↓
Hugo Build
      ↓
Static HTML
      ↓
Hosting

Or simply:

Writer → Markdown → Hugo → Website

Because everything is static, deployment is cheap and the site is very reliable.


Writing Workflow

All posts are written as Markdown files inside the repository.

Example:

content/posts/how-i-built-this-blog.md

Typical workflow:

Write → Commit → Push → Deploy

If you’re a developer, this workflow feels very natural.


Challenges I Ran Into

Even with a simple stack, there were a few small challenges.

Theme customization

Many Hugo themes include features that I don’t really need.

What I wanted was:

  • minimal layout
  • fast loading
  • clean typography

Solution:
Start with a minimal theme and customize it gradually.


Content structure

At first it wasn’t obvious what format the blog should follow:

  • tutorials
  • long articles
  • short notes
  • learning logs

Eventually I decided to focus mostly on engineering notes.

This format lowers the barrier to writing and makes it easier to publish regularly.


Bilingual content

I want the blog to support both English and Vietnamese.

Writing every article twice can be time consuming.

One possible workflow looks like this:

Idea
 ↓
Outline
 ↓
Generate EN draft
 ↓
Translate to VI
 ↓
Review & publish

AI tools can help generate the initial drafts, while the final editing remains manual.


What I Learned

Building a blog today is actually much easier than it used to be.

With tools like Hugo, the entire system can be built with:

  • Markdown
  • a few configuration files
  • static hosting

The technology itself is not the difficult part.

The real challenge is consistently writing and sharing what you learn.


What’s Next

Now that the blog is running, the focus will shift from building to writing.

Some topics I plan to write about include:

  • AWS architecture
  • system design
  • distributed systems
  • engineering lessons from real systems
  • study notes from certifications

I also plan to gradually improve the blog itself, such as:

  • better multilingual navigation
  • search functionality
  • RSS feed
  • small automation tools for content generation

Final Thoughts

The blog is intentionally simple for now.

Like most side projects, it will probably evolve slowly over time as I keep writing and improving it along the way. Hopefully, I can share a lot of useful knowledge with you.