Dấu Trang
Danh Mục
Đây là một số nguồn tài liệu mà mình tìm được hoặc tình cờ gặp trên internet suốt những năm qua; phần lớn những thứ ở đây mình thấy là đáng giá, hoặc vui, hoặc cả hai. Mình cố gắng chỉ thêm vào đây những nội dung web miễn phí, để bạn chỉ cần một cái browser là đọc được, không cần lằng nhằng gì thêm. Chúc bạn đọc vui!
Gần như tất cả tài liệu ở đây đều là tiếng Anh. Nên nếu bạn đọc được chúng thì mình cũng đoán là bạn hiểu được những gì mình viết ở trang này.
Thiết kế phần mềm⌗
Design Patterns - Refactoring.Guru
Giới thiệu rất nhiều design pattern thông dụng, kèm cả sự hài hước.
Microservice Architecture - Chris Richardson
Các bài viết về thiết kế và pattern của microservices.
The Grug Brained Developer - grug brain developer
grug brain thích đơn giản.
Sự nghiệp và lãnh đạo kỹ thuật⌗
Technical Leadership and Glue Work - Tanya Reilly
Mình biết đến talk này qua cuốn Staff Engineer: Leadership beyond the Management Track của Will Larson. Góc nhìn của Reilly giúp mình hiểu rõ hơn một senior engineer hiệu quả cần làm gì, đặc biệt là những phần glue work ít được nhìn thấy nhưng lại giúp cả team vận hành trơn tru. Talk cũng chỉ ra rủi ro khi ôm những việc này quá sớm, trước khi chúng được ghi nhận hoặc đánh giá đúng mức. Cá nhân mình không nghĩ mình đang ôm quá nhiều glue work, nhưng đây vẫn là một lời cảnh báo hữu ích.
Mình khá bất ngờ vì talk cuốn hơn dự kiến. Nội dung càng đáng chú ý hơn khi mục tiêu của mình là tiến tới vai trò Staff+ engineer.
Ngôn ngữ và Runtime⌗
What Color is Your Function? - Robert Nystrom
Thời còn học đại học, mình cực kỳ bực mình với chuyện dùng async khi làm Google Firebase cho môn Android. Thế là mình lên internet tìm một cái buồng vọng âm để hợp thức hóa sự bực mình đó! Và này! Mình tìm được bài này! Đáng đọc.
Crafting Interpreters - Robert Nystrom
Tìm hiểu interpreter của các ngôn ngữ lập trình hoạt động thế nào, rồi tự tay làm một cái.
Global Interpreter Lock - Python
Bạn từng nghe người ta nói Python chậm và không chạy được nhiều thread chưa? Đây chính là lý do.
What is Ownership? - The Rust Programming Language
Một cách quản lý bộ nhớ máy tính thú vị và độc đáo.
Go Concurrency Patterns - Rob Pike
Go Concurrency Patterns: Pipelines and cancellation - Sameer Ajmani
Giới thiệu một số concurrency pattern trong Go, để bạn không phải viết code concurrency kinh dị (như mình)!
A Guide to the Go Garbage Collector - Go
Garbage collector? Là cái gì? Bài này sẽ trả lời những câu hỏi đó. Tuy nội dung dành riêng cho Go, pattern mark-sweep vẫn có mặt trong phần lớn các ngôn ngữ có garbage collector.
Các pattern và kỹ thuật để viết ứng dụng hiệu năng cao bằng Go.
Which Programming Language Can Handle the Most Users on a $12 Server? - Arjay McCandless
Một video thú vị về benchmark các ngôn ngữ và runtime khác nhau. Mình khá bất ngờ vì McCandless tiếp cận chủ đề này rất thực tế. Phần giải thích vì sao chọn cách thiết lập load test như vậy, rồi bàn về việc Postgres trở thành nút thắt hiệu năng mới sau khi tối ưu ở cấp độ ngôn ngữ, đặc biệt hữu ích.
Hệ thống phân tán⌗
Distributed Locks with Redis - Redis
Quản lý lock giữa nhiều thread trong cùng một process đã khó! Quản lý chúng giữa nhiều process, nhiều máy thì sao? Còn khó hơn nữa! Đây là một cách làm chuyện đó một cách tỉnh táo.
How to do distributed locking - Martin Kleppmann
Một bài đánh giá về thuật toán Redlock cho distributed locking.
The Raft Consensus Algorithm - Diego Ongaro, John Ousterhout
Một bài giới thiệu tốt về Raft, kèm danh sách các nguồn gốc: bài báo, luận án, và các bản cài đặt trong gần như mọi ngôn ngữ.
The Secret Lives of Data - Ben Johnson
Raft được trực quan hóa.
Một tuyển tập bài viết về hệ thống phân tán, database, và nhiều thứ khác.
Introduction to Distributed Systems - CosmicLearn
Một tutorial miễn phí đi qua gần như cả lĩnh vực theo thứ tự: networking và giao tiếp, thời gian và đồng bộ, consensus, consistency và replication, distributed transaction, lưu trữ, fault tolerance, và observability. Mình tình cờ gặp trang này và thấy nó hay hơn mong đợi. Trang còn nhiều chuyên mục khác nữa, mà mình thì chưa xem hết.
Cơ sở dữ liệu⌗
A Simple Guide to Five Normal Forms in Relational Database Theory - William Kent
Câu hỏi muôn thuở: làm sao mô hình hóa các thực thể ngoài đời thực thành dữ liệu một cách hiệu quả. Bài hướng dẫn này giúp bạn trả lời, bằng cách giải thích các nguyên tắc chuẩn hóa dữ liệu cốt lõi một cách dễ hiểu.
Use the Index, Luke! - Markus Winand
KHÔÔÔÔÔÔNGGGG!
SQLite Documentation - SQLite
Mình thừa nhận là chưa đọc hết, nhưng mình thấy phần Technical and Design Documentation đặc biệt hữu ích để hiểu một database có thể gặp những vấn đề gì và các database (hoặc ít nhất là SQLite) xử lý chúng ra sao.
Readings in Database Systems - Peter Bailis, Joseph M. Hellerstein, Michael Stonebraker
Hay còn được gọi là Red Book. Một chuyến đi có quan điểm rõ ràng qua những bài báo đã định hình ngành data management, từ các bài kinh điển đến những nghiên cứu gần đây hơn, mỗi chương đều được giới thiệu bởi một người góp phần dựng nên ngành này. Một tuyển tập bài đọc về database internals và cách thiết kế database, rất đáng đọc tiếp khi bạn đã dùng database đủ lâu để bắt đầu thắc mắc bên trong nó đang làm gì.
Database Internals: DBMS Architecture Fundamentals - CosmicLearn
Storage engine, B+ tree và LSM tree, lock và MVCC, write-ahead log và cơ chế recovery ARIES, rồi tới query planning và execution, tất cả đều có sơ đồ đi kèm. Một người bạn đồng hành thực tế của Red Book: các bài báo cho bạn biết vì sao mọi thứ thành ra như vậy, còn trang này cho bạn biết các mảnh ghép được lắp lại với nhau ra sao.
Web, Mạng và Bảo mật⌗
Adaptive and responsive design in Flutter - Flutter
Lần đầu đi làm front-end chuyên nghiệp, mình phát hiện ra có vô số độ phân giải màn hình và rất, rất nhiều loại thiết bị hiển thị, và việc xoay xở với tất cả những thứ đó làm mình phát điên. Mình sẽ không bao giờ nói phát triển front-end là dễ nữa!
Hypermedia Systems - Carson Gross, Adam Stepinski, Deniz Akşimşek
Một lần thăm lại cách phát triển web thời xưa, trong bối cảnh công nghệ hiện đại.
High Performance Browser Networking - Ilya Grigorik
Học cách các network protocol khác nhau hoạt động, và ảnh hưởng của chúng đến hiệu năng web.
Populating the page: how browsers work - MDN Web Docs
Câu trả lời cho dạng câu hỏi phỏng vấn “điều gì xảy ra sau khi bạn gõ google.com vào browser?”.
OWASP Cheat Sheet Series - OWASP
Vừa bị hack? Hay chỉ muốn chắc chắn rằng ứng dụng web của mình an toàn? Đây là một nơi rất tốt để bắt đầu.
DNSimple Comics - DNSimple
Truyện tranh giải thích cách các network protocol như DNS và HTTP hoạt động.
Machine Learning⌗
Interpretable Machine Learning - Christoph Molnar
Bạn có bao giờ thắc mắc trong số hàng nghìn, thậm chí hàng triệu parameter, những parameter nào thực sự ảnh hưởng đến model machine learning hay deep learning của mình, và chúng đại diện cho điều gì? Vậy thì quyển sách này dành cho bạn.
Novelty and Outlier Detection - Scikit Learn
Mình tìm được cái này khi làm luận văn tốt nghiệp, nhờ thầy hướng dẫn. Đề tài là phát hiện phát ngôn thù địch trong văn bản trên mạng xã hội (comment, bài đăng, v.v.). Vấn đề chính? Hóa ra phát ngôn thù địch không phổ biến như chúng mình tưởng, chúng chỉ ồn ào thôi. Dataset của bọn mình lệch tỉ lệ khoảng chín trên một, mà lại còn chọn lọc dữ liệu theo ý mình nữa. Một classifier truyền thống đơn giản là không hiệu quả trên một dataset lệch như vậy. Thế nên bọn mình thử kỹ thuật này, và… nó không tốt như bọn mình mong đợi, nhưng mình vẫn thấy đây là một thứ thú vị. Nên để nó ở đây như một vật lưu niệm của những ngày đó.
Triết học⌗
Thus Spake Zarathustra - Friedrich Nietzsche
Tác phẩm triết học kinh điển hiện đại về cuộc sống, đạo đức, và niềm tin.
Counsels and Maxims - Arthur Schopenhauer
Góc nhìn của một người theo chủ nghĩa bi quan (theo nghĩa trường phái triết học bi quan, không phải kiểu bi quan thường ngày) về cuộc sống và hạnh phúc.
The Problems of Philosophy - Bertrand Russell
Một bài đọc thú vị về thực tại, sự tồn tại, tự nhiên, nhận thức, v.v.
Chuyện bên lề⌗
Creepy crawlies - Konstantin Ryabitsev
Một bài viết vui về AI crawler, nhưng câu chuyện trong đó lại quen thuộc đến kỳ lạ. Từ rất lâu trước làn sóng AI hiện tại, mình từng làm trong mảng e-commerce intelligence, và cách scraping của bọn mình phát triển gần như đúng theo lộ trình trong bài: bắt đầu bằng HTTP request đơn giản, rồi giả user agent, dùng residential proxy, reverse-engineer chữ ký request, thậm chí dùng xử lý ảnh và machine learning để giải CAPTCHA. Mục đích có thể khác, nhưng cuộc mèo vờn chuột thì vẫn y hệt.
Chặn quá gắt thì UX và SEO chịu trận; thả quá lỏng thì chi phí hạ tầng tăng, hoặc bot gom sạch hàng giảm giá. Scraping từng bào mình đến mức phải bỏ nó khỏi CV, nhưng mình vẫn xem đây là một trong những công việc thử thách nhất mình từng làm. Giờ thỉnh thoảng đổi vai thành người bị crawl, mình chỉ biết nói: nghiệp quật thôi.