All Posts

2026

Connecting Codex to Google Workspace via MCP

6 minute read

When you work with an AI coding agent like Codex, the real productivity gains come from letting it interact with the systems around your code — not just the ...

Back to top ↑

2025

Building a Conference Audio Call System

7 minute read

Imagine you’re chatting with friends over a group call. You hear everyone’s voices blending together smoothly, without your own voice echoing back at you. Pr...

Back to top ↑

2024

How to Securely Store Passwords in Databases

18 minute read

In today’s digital age, securing user passwords is more important than ever. This article will guide you through the essentials of password security, ensurin...

10 Types of Locks with Redis: Pros and Cons

27 minute read

In this blog post, we will explore the fascinating world of distributed locking mechanisms using Redis. We’ll start with a compelling discussion on why distr...

Introducing My Interactive Web Chatbot

4 minute read

Today, I’m thrilled to introduce you to my new interactive web chatbot and share the fun journey behind its creation. First, a bit about me—your friendly tec...

10 Cache Concepts Every Programmer Should Know

31 minute read

Caching is a powerful technique that can significantly improve the performance and scalability of applications. This blog post will guide you through the ess...

Navigating Pitfalls in Datadog Tracing

10 minute read

Ready to conquer the world of servers with Datadog? This guide is your treasure map. It’s going to help you dodge sneaky pitfalls like hostname detection mon...

Diving into the Node.js Event Loop

39 minute read

In this comprehensive guide, we’ll embark on a journey into the Node.js event loop, a fundamental concept that underpins the asynchronous nature of Node.js. ...

Back to top ↑

2023

HTTP/2 vs WebSocket: A Comparative Analysis

13 minute read

This blog post aims to provide a comprehensive comparison between HTTP/2 and WebSocket, two fundamental protocols that power the modern web. We will start by...

Demystifying ContextVar in Python

13 minute read

This blog post will demystify ContextVar, a simple way to share values between functions and coroutines in Python. We’ll start with an introduction to Contex...

Temporal vs Airflow: A Comparative Analysis

12 minute read

In this blog post, we will delve into a comparative analysis of two popular workflow orchestration platforms, Temporal and Airflow. By understanding their ba...

Prompt Engineering

17 minute read

Welcome to this blog where I’ll be your guide into the fascinating world of prompt engineering! This emerging field is changing the way we interact with AI s...

Understanding the Event Loop in Python

10 minute read

The event loop is a fundamental concept in Python, particularly when dealing with asynchronous programming. It is the core of every asyncio application and p...

Back to top ↑

2021

Nhật ký làm quen với Streaming Data

5 minute read

Chào mọi người, không biết mọi người đã trải qua tính cảnh như mình chưa. Trước đây, mình là Software Engineer tại một công ty fintech và chuyên xây dựng hệ ...

Back to top ↑

2020

Executor: Worker Pool cho Golang

2 minute read

Mục đích mình tạo ra thư viện này vì các thư viện hiện tại của golang chưa có ai đáp ứng đủ nhu cầu Worker Pool của mình như linh hoạt với cách định nghĩa jo...

Back to top ↑

2019

Load testing với Locust và Boomer

9 minute read

Một bước mà chúng ta thường xuyên bỏ qua và coi thường khi xây dựng một service mới đó là load test nó. Load test là một quá trình quan trọng trước khi đưa s...

So sánh grpc gateway với gRPC web

4 minute read

Bạn đang có một service sử dụng gRPC để đảm bảo vấn đề hiệu năng khi giao tiếp. Nhưng rồi một ngày, bạn muốn xây một admin web cho nó nhưng trình duyệt lại k...

Prepared Statement Deep Dive

2 minute read

Để tối ưu hiệu năng của hệ thống, có rất nhiều cách để thực hiện nhưng hiệu quả nhất vẫn là tối ưu các câu truy vấn database. Một trong số này đó là sử dụng ...

Back to top ↑