#dev-tips
20 bài viết về chủ đề này
Database Index — Câu chuyện về thứ giúp query của bạn nhanh hơn 100 lần
Database Index — cấu trúc dữ liệu thần kỳ giúp query tốc độ từ O(n) thành O(log n). Cùng mình tìm hiểu B-Tree, cách index hoạt động, và kinh nghiệm dùng index trong thực tế.
Rate Limiting — Vũ khí bảo vệ API không thể thiếu
Tìm hiểu về rate limiting trong system design: Token Bucket, Leaky Bucket, Fixed Window, Sliding Window — và cách triển khai thực tế.
Xử lý lỗi với Async/Await trong JavaScript — không chỉ có try/catch
Mình chia sẻ mấy pattern xử lý lỗi với async/await trong JavaScript mà mình hay dùng, từ try/catch cơ bản tới .catch() chain và error boundary pattern.
Cái bẫy 'null reference' trong TypeScript và cách tránh
Mình chia sẻ mấy cái bẫy null/undefined hay gặp trong TypeScript và cách xử lý — từ optional chaining tới discriminated unions.
Thiết kế Rate Limiter — chuyện không chỉ đơn giản là đếm
Rate limiter là thứ backend dev nào cũng nghe qua, nhưng thiết kế sao cho đúng thì không phải ai cũng biết. Câu chuyện từ basic Token Bucket tới distributed với Redis.
Git: Interactive Rebase và Stash — mấy lệnh cứu mạng cho dev solo
Mình chia sẻ mấy lệnh Git thực tế — interactive rebase, stash, blame — giúp dev solo quản lý code gọn gàng hơn. Kinh nghiệm từ mấy lần lỡ tay và cách khắc phục.
TypeScript satisfies — khi type safety gặp trải nghiệm dev
TypeScript 4.9 giới thiệu satisfies operator — kiểm tra type mà không làm mất inference của literal types. Một tính năng nhỏ nhưng xài hằng ngày.
Rate Limiting — mấy thuật toán mà backend dev nào cũng gặp
Rate limiting không chỉ là chuyện 'chặn spam' — Token Bucket, Leaky Bucket, Fixed Window và Sliding Window có gì khác nhau? Bài này giải thích đơn giản, dễ hiểu.
.NET hồi 2026 — không còn là "ông già" công nghệ như mình nghĩ
Mình từng nghĩ .NET là cái gì đó xưa cũ, chỉ hợp với mấy công ty enterprise. Nhưng .NET bây giờ thay đổi quá nhiều — chạy Linux ngon, performance top đầu, ecosystem mở — làm mình phải suy nghĩ lại.
Context trong Go — thứ mà dev Go nào cũng cần nắm
Context package trong Go có vẻ đơn giản nhưng nếu xài sai là đau lắm. Mình kể ít chuyện về timeout, cancel, và mấy cái bẫy mà dev hay mắc.
The Power of Plain Text — Sức mạnh của sự đơn giản (Pragmatic Programmer #16)
Topic 16 của The Pragmatic Programmer nói về plain text — thứ tưởng xưa mà hoá ra là vũ khí lợi hại nhất của lập trình viên.
Rust — cái "bảo kê" mà dân code mình đang cần
Rust nổi lên như một ngôi sao sáng với ownership model, không garbage collector, performance ngang C++ mà an toàn hơn. Tại sao ai cũng rần rần học Rust?
Rust: Mấy đứa bạn mình cứ rủ nhau học, có gì hay vậy trời?
Rust đang hot rần rần trong cộng đồng dev — không chỉ chạy nhanh, còn auto-fix memory bug. Mình kể trải nghiệm học Rust và tại sao nó đáng để thử trong năm 2026.
Tại sao mình bắt đầu đọc code nguồn mở mỗi sáng (và bạn cũng nên thử)
Mỗi sáng 15 phút đọc code nguồn mở — thói quen nâng trình dev cực kỳ hiệu quả. Mình chia sẻ lợi ích, cách bắt đầu và tips chọn repo để đọc.
TypeScript satisfies — Cái 'công tắc' mà hồi đó mình ước có
Từ TypeScript 4.9+, satisfies operator giúp bạn vừa kiểm tra kiểu dữ liệu vừa giữ nguyên type inference chi tiết — một tip nhỏ mà cực kỳ hữu ích cho dân TypeScript.
Đọc code người khác — thói quen đơn giản mà lập trình viên nào cũng nên làm
Đọc code người khác không chỉ giúp bạn học hỏi cách viết hay hơn, mà còn rèn tư duy phản biện và kỹ năng làm việc nhóm. Một thói quen đơn giản nhưng cực kỳ hiệu quả.
TypeScript – Tận dụng discriminated unions + never để code vừa an toàn vừa sạch
Khám phá discriminated unions và exhaustive checking với never trong TypeScript — kỹ thuật giúp compiler tự động báo lỗi khi quên xử lý case, code sạch hơn và an toàn hơn.
Mấy mẹo JavaScript hiện đại giúp code sạch hơn — mà dễ xài lắm!
Khám phá Optional Chaining (?.) và Nullish Coalescing (??) — 2 tính năng JavaScript hiện đại giúp code gọn gàng, dễ đọc và ít bug hơn.