Phần mềm
Hai chế độ: viết để giải thích, xây dựng để ra mắt.
Mình là Senior Software Engineer làm việc trên các hệ thống phân tán — những bài toán phối hợp, đánh đổi về tính nhất quán, những thứ hỏng lúc 3 giờ sáng. Bối cảnh đó định hình những gì mình viết ở đây, nhưng không giới hạn nó.
Nội dung ở đây có hai dạng. Đôi khi là giải thích: mình lấy thứ gì đó mình hiểu và viết ra cho đến khi người khác có thể hiểu được. Đôi khi là một sản phẩm: một thư viện, một công cụ, một hệ thống — thứ gì đó bạn có thể thực sự chạy được. Cả hai đều đáng làm.
Phạm vi cố ý rộng. Một thuật toán làm mình ngạc nhiên, một dự án OSS mình bắt đầu, một giao thức phân tán mình dành cả tuần để đọc, một tiện ích nhỏ giải quyết đúng một vấn đề — nếu nó đủ thú vị để viết, nó sẽ ở đây.
Bạn có thể đọc ba bài này, theo thứ tự
được chọn lọc“Không phải hướng dẫn nghề nghiệp. Cách suy nghĩ về nghề thủ công, sự chậm rãi, và thứ gì thực sự quan trọng trong một chặng đường dài sẽ theo bạn vào mọi thứ còn lại.”
“Code review không phải về việc tìm bug. Ba tầng — tính đúng đắn, thiết kế, và mối quan hệ con người giữa người viết và người đọc — và hầu hết các review dừng lại ở tầng đầu tiên.”
“Điều gì xảy ra khi hệ thống tin vào quá khứ gần của chính nó. Khoảng trống giữa lúc kiểm tra điều kiện và lúc hành động là nơi phần lớn bug production tinh vi nhất tồn tại.”
Những gì mình đang nghĩ đến
- Nháp
TypeScript series — hiện có bốn chương: Structural vs. Nominal Typing, Narrowing, Union & Intersection Types, Literal Types & const assertions. Series về type system như một công cụ tư duy, không phải hàng rào.
- Nháp
Strict mode trong TypeScript — từng flag thực sự làm gì, cấu hình đúng cho production, và tại sao bật strict không đồng nghĩa với việc viết code strict.
- Nháp
Một series về distributed consensus — Raft, Paxos, và tại sao chúng vừa đơn giản hơn vừa khó hơn người ta nói. Bắt đầu từ vấn đề, không phải từ thuật toán.
- Câu hỏi
Hệ thống phân tán hữu ích nhỏ nhất là gì? Một thứ thực sự dạy bạn điều gì đó, không chỉ một thứ tồn tại.
- Đang đọc
Đang đọc: Kleppmann, Designing Data-Intensive Applications. Cũng đang đọc: bài báo Raft, bài báo Spanner, và tài liệu CRDT — cố hiểu 'consistency' thực sự có nghĩa gì qua tất cả chúng.
Cũng trong Phần mềm
mọi bài viết, theo thứ tự thời gian →- LLM làm công cụ xây graph, và bài toán graph sai âm thầm17 thg 6, 202623 phút
- Centrality, ai quan trọng trong mạng lưới12 thg 6, 202628 phút
- Community detection, khi cụm tự nổi lên từ dữ liệu12 thg 6, 202628 phút
- Dấu hiệu nhận biết11 thg 6, 202626 phút
- Node và edge là quyết định thiết kế11 thg 6, 202626 phút
- Traversal và reachability: câu hỏi "cái gì chạm tới cái gì"11 thg 6, 202627 phút
- Đường đi ngắn nhất, nhưng "ngắn" theo nghĩa nào11 thg 6, 202631 phút
- Bạn đã giải graph problem cả tuần nay10 thg 6, 202627 phút