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.
| Option | Pros | Cons |
|---|---|---|
| Hugo | Very fast, simple, markdown-based | Requires some setup |
| WordPress | Easy to start, many plugins | Heavy, requires maintenance |
| Ghost | Great writing experience | Hosting cost |
| Next.js Blog | Very flexible | More 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.
