Contents

Great Books and Papers

Contents

Books

  • A Philosophy of Software Design, John Ousterhout, Professor at Stanford University
  • The Innovator’s Dilemma, Clayton Christensen
  • UNIX - A History and a Memorior, Brian Kernighan, Professor at Princeton University
  • HOW NOT TO BE WRONG, Jordan Ellenberg, Professor of Mathematics at the University of Wisconsin-Madison
  • THINKING, FAST AND SLOW, Daniel Kahneman, Professor of Psychology Emeritus at Princeton University
  • China’s Economy, Arthur R. Kroeber

Papers

There are some papers that are so well written that I really enjoyed reading them. Here is a list of them.

  1. In Search of an Understandable Consensus Algorithm
    Decompose the consensus problem into multiple sub-problem and tackle each sub-problem individually

  2. Optimizing Space Amplification in RocksDB

    This paper provides a great introduction on LSM-tree, how RocksDB is used as the storage engine for MySQL and some statistics of three LSM-tree based systems used in production in Facebook.

  3. BlueCache: A Scalable Distributed Flash-based Key-value Store

    The system design is very clear from the paper. Learned a lot about its index and data store part.

  4. What’s Really New with NewSQL?

    Provides a historial view of how we enter into NewSQL and did an excellent survey of state-of-art NewSQL Databases

  5. NV-Tree: Reducing Consistency Cost for NVM-based Single Level Systems

    Excellent analysis of overhead in keeping B+ tree consistent, followed by a clear presentation of the proposed solution.

  6. The Multi-Queue Replacement Algorithm for Second Level Buffer Caches

    Excellent analysis of re-use distance in second-level cache, to motivate their cache design

  7. CAFTL: A Content-Aware Flash Translation Layer Enhancing the Lifespan of Flash Memory based Solid State Drives