## Bookshelf Here's a collections of books and papers that I've read. ## πŸ“š books πŸ“š - Operating Systems: Three Easy Pieces [(link)](https://pages.cs.wisc.edu/~remzi/OSTEP) - Designing Data-Intensive Applications [(link)](https://dataintensive.net/) - The Rust Programming Language [(link)](https://doc.rust-lang.org/book/) - Writing An Interpreter In Go [(link)](https://interpreterbook.com/) - Writing A Compiler In Go [(link)](https://compilerbook.com/) - Rust Atomics and Locks [(link)](https://marabos.nl/atomics/) - Elixir in Action [(link)](https://www.manning.com/books/elixir-in-action) ## πŸ“ papers πŸ“ #### *distributed systems* - Time, Clocks, and the Ordering of Events in a Distributed System [(paper)](https://www.microsoft.com/en-us/research/uploads/prod/2016/12/Time-Clocks-and-the-Ordering-of-Events-in-a-Distributed-System.pdf) - ZooKeeper: Wait-free coordination for Internet-scale systems [(paper)](https://www.usenix.org/legacy/event/atc10/tech/full_papers/Hunt.pdf) - Paxos Quorum Leases: Fast Reads Without Sacrificing Writes [(paper)](https://dl.acm.org/doi/10.1145/2670979.2671001) - (Raft) In Search of an Understandable Consensus Algorithm [(paper)](https://raft.github.io/raft.pdf) - Zanzibar: Google’s Consistent, Global Authorization System [(paper)](https://zanzibar.tech/) - Kafka: a Distributed Messaging System for Log Processing [(paper)](https://notes.stephenholiday.com/Kafka.pdf) - MapReduce: Simplified Data Processing on Large Clusters [(paper)](https://static.googleusercontent.com/media/research.google.com/en//archive/mapreduce-osdi04.pdf) - Immutability Changes Everything [(paper)](https://dl.acm.org/doi/pdf/10.1145/2844112) #### *systems* - LazyLog: A New Shared Log Abstraction for Low-Latency Applications [(paper)](https://dassl-uiuc.github.io/pdfs/papers/lazylog.pdf) - Asynchronous I/O β€” With Great Power Comes Great Responsibility [(paper)](https://arxiv.org/pdf/2411.16254) - Logical Memory Pools: Flexible and Local Disaggregated Memory [(paper)](https://conferences.sigcomm.org/hotnets/2023/papers/hotnets23_amaro.pdf) - A Scalable Concurrent malloc(3) Implementation for FreeBSD [(paper)](https://people.freebsd.org/~jasone/jemalloc/bsdcan2006/jemalloc.pdf) - Anatomy of the LSM Memory Buffer: Insights & Implications [(paper)](https://dl.acm.org/doi/pdf/10.1145/3662165.3662766) - Statistically Rigorous Java Performance Evaluation [(paper)](https://dri.es/files/oopsla07-georges.pdf) - Lupin: Tolerating Partial Failures in a CXL Pod [(paper)](https://www.cs.utexas.edu/~witchel/pubs/zhu24dimes-lupin.pdf) #### *databases* - DINOMO: A Key-Value Store for Disaggregated Persistent Memory [(paper)](https://arxiv.org/pdf/2209.08743) - Cassandra: A Decentralized Structured Storage System [(paper)](https://www.cs.cornell.edu/projects/ladis2009/papers/lakshman-ladis2009.pdf) - Dynamo: Amazon’s Highly Available Key-value Store [(paper)](https://www.allthingsdistributed.com/files/amazon-dynamo-sosp2007.pdf) - Are You Sure You Want to Use MMAP in Your DBMS? [(paper)](https://db.cs.cmu.edu/papers/2022/cidr2022-p13-crotty.pdf) - The Snowflake Elastic Data Warehouse [(paper)](https://dl.acm.org/doi/10.1145/2882903.2903741) #### *cloud and virtualization* - Serverless in the Wild: Characterizing and Optimizing the Serverless Workload at a Large Cloud Provider [(paper)](https://www.usenix.org/system/files/atc20-shahrad.pdf) - Firecracker: Lightweight Virtualization for Serverless Applications [(paper)](https://www.usenix.org/system/files/nsdi20-paper-agache.pdf) - Learning Scheduling Algorithms for Data Processing Clusters [(paper)](https://dl.acm.org/doi/pdf/10.1145/3341302.3342080) - Memory Resource Management in VMware ESX Server [(paper)](https://www.waldspurger.org/carl/papers/esx-mem-osdi02.pdf) - Unikernels: Library Operating Systems for the Cloud [(paper)](https://mort.io/publications/pdf/asplos13-unikernels.pdf) ---