Foundational Learning Plan
Operating Systems
- BookOperating Systems - Three Easy Pieces
- BookLinux Kernel Development
- Ask HN: What should a systems/low-level software engineer know?
- BookSystems Performance - Enterprise and the Cloud
Distributed Systems
- BookDesigning Data-Intensive Applications
- Read aphyr/distsys-class (notes)
- MOOCMIT 6.824 Distributed Systems
- DynamoDB Paper (2022)
- A Distributed Systems Reading List
- Testing Distributed Systems
- https://github.com/theanalyst/awesome-distributed-systems
- Blog posts from http://www.bailis.org/blog
- Papers
- PaperThe Tail at Scale
- PaperConsistent hashing and random trees
- PaperSpanner — Google’s Globally-Distributed Database
- Chain Replication
- Amazon Dynamo (Leaderless, not DynamoDB)
- Amazon Aurora: On Avoiding Distributed Consensus for I/Os, Commits, and Membership Changes
- Building on Quicksand
- Life beyond distributed transactions
- CockroachDB
- Borg, Omega, and Kubernetes
-
- Talks
- Watch Kleppmann’s lectures (~7h in total)
Computer Architecture
- Computer Systems - A Programmer’s Perspective
- What Every Programmer Should Know About Memory (notes so far)
Networking
- Implementing TCP in Rust
- Linux Programming Interface: the IPC Chapters
- BookTCPIP Illustrated, Vol 1
- Beej’s Guide: Networks
- Beej’s Guide: IPC
- High Performance Browser Networking