RSSAmplifier

Blog

A pragmatic engineer blog, written by a human.

Senior backend engineer writing about distributed systems, observability, AI in software development, and pragmatic career growth for developers.

nguyengineer.devRSS feed ↗20 posts

Latest posts

Scaling database practices

Scaling databases can feel like a scary topic. I'm not going to wait until I "know everything" to write about it though, there is always a higher mountain. This post is just my little hill of scaling

How I built and scaled real‑time chat app from 2 to millions of users — without a rewrite?

Real-time is one of those features that demos in an afternoon and humbles you for a month. Open a WebSocket, push a message, watch it appear on the other screen — done, right? That's the part that's e

We won Honestbee Logistics Challenge 2016

I usually go out and join tech events in the city. I’ve joined several of them, but the most memorable was the event where my friends and I won first prize by solving a delivery optimization problem.

Migrating a decade of production data from an abandoned database (RethinkDB) to MongoDB

Back in 2015, when the Node.js, NoSQL, and microservices ecosystem was still fresh and the tooling hadn’t matured, choosing one solution over the other would be a hit-and-miss situation. We didn’t kno

Developers, what should we do next in the age of AI?

At this point, April 2026, everyone is familiar with AI integrated deeply into the software development process. Some worry that AI will eventually replace or devalue them. I know that's the common co

Start With a Monolith. Split It Only When You Have To

Conway's Law says systems end up mirroring the communication structure of the teams that build them. A small team produces a unified system; a distributed organization produces distributed software. W

Self-host your Wakatime stats for (almost) free with Supabase Postgres + Google Cloud Run

In my previous post, I introduce the project Wakapi - an alternative to Wakatime but it totally free, it mean you have to self hosted it somewhere. https://hashnode.com/post/cm3i8c9mp001609ku3rhieuku The database Wakapi provide several choices of d...

Wakapi: my first contribution to the open source

I have been using Wakatime since 2017, but I stopped using it in recent years because the free plan, which only provides a two-week range report, is not very helpful. I primarily relied on it for the yearly report to see how much I coded over the pas...

Series Building a Chat System that Scales: A Developer's Journey

A Developer's Journey I've always wanted to build a chat system, just for the joy of it. The original plan was simple: set up an old HP Elitedesk as a server, NAT the ports, point a domain to it, and share it with friends. But as I looked at today's ...

Replace string contains special character in Vim

A Simple Solution to a Tricky Problem If you've ever tried to replace a string containing special characters in Vim, especially across multiple files, you know it can be a real headache. The usual search and replace commands often fall short, getting...

Connect Cloud Run Services to VPC via Terraform

Introduction In this guide, we'll walk through setting up two Cloud Run services - a public frontend and a private backend - using Terraform. We'll use Google Artifact Registry to store our Docker images. This setup demonstrates how to create a secur...

Building a data analytic Slack App with Machine Learning

Clustering Slack alerts with TF-IDF and DBSCAN Most teams have a Slack channel full of alerts that everyone eventually mutes. When something breaks, the relevant message is buried under hundreds of co

My problem-solving frameworks

A problem-solving framework is a checklist of questions that help you break down a problem and figure out how to solve it. It's like a step-by-step guide to understanding the issue, brainstorming solutions, picking the best one, and then implementing...

Design (and code) a job scheduling system

User story (simple) As a user, I want to set up a time delay for my actions (e.g., send email) in a certain period, a certain day of the week, or a specific day of the year. So that my action can be executed with timing accuracy. Function requirement...

How I emerging AI into daily life (2023)

I'm using the latest commercial AI technologies, including Copilot for business, Copilot chat, Grammarly, Notion AI, ChatGPT Plus, and maybe other AI features embedded in a product that I am not aware

I'm surfing on the trend of HTMX

I'm tired of JS, not to mention TS and mostly I blame the whole JS ecosystem. If I can come in time to tell one thing to my younger self I will tell him all in BTC back in 2012! Just kidding, I will tell him to choose Java or at least C# Asp.net. Don...

Quickly create a scatch in Neovim

I missed the feature of quickly creating a scratch when I switched back to Vim from Webstorm. A scratch file is handy, it auto-saves somewhere on your computer and allows you to paste temporary content here to do whatever you want. In Vim or Neovim ...

Finally, I found the best way to keep dot files in sync

I was struggling to keep my dotfiles in GitHub in sync with the dot files in the $HOME directory. But now it is so smooth. Cut to the chase, here is what I do: The $HOME folder will be the single source of truth. I keep all the original files here ...

Don't outsource your core competencies

I have scheduled myself to write a weekly blog, so I am now thinking about what I want to share this week. There's always so much to talk about when it comes to AI and its impact on businesses. This w

An underrated problem solving skill

It is the ability to transform the verbal, rough description into programmable tasks. And this skill is hard to test out during the interview. Normally we - software engineers go to an interview, and they throw a competitive programming problem to us...