Reading
Books that I read in 2018
- Designing Data-Intensive Applications by Martin Kleppmann
- My comment: I think this is probably the best book that I read in 2017 (I started reading it since the end of 2017). It covers a lot of theoretical details in distributed systems. If you read this book first, then it saves a lot of efforts when you study techniques, such as distributed storage and consensus algorithms. Also, this book gives you a better understanding about why these frameworks are doing this and what problems they are trying to solve. Some parts are not easy to read and understand for me. But it is worth reading if you would like to dive into the world of distributed systems.
- Big Data: Principles and best practices of scalable realtime data systems by Nathan Marz
- I learned some good ideas and concepts from this book:
- Maintain an immutable master data store
- All views can be inferred from the master data store
- Have the ability to reprocess data to resolve data corruption caused by bugs and human errors
- The logic of batch processing is simple
- Keep an update-to-date view requires random writes and make things complex
- Lambda architecture is very interesting, but I feel that there are two big troubles: maintaining two views is complicated and running batch processing on master data store regularly is expensive.
- I learned some good ideas and concepts from this book:
Books that I have read before and highly recommend:
Data structure & algorithms
- Introduction to Algorithms by Charles E. Leiserson, Clifford Stein, Ronald Rivest, and Thomas H. Cormen
- The Algorithm Design Manual by Steven Skiena
- Algorithms, 4th Edition by Robert Sedgewick and Kevin Wayne
- Introduction to the Design & Analysis of Algorithms by Anany Levitin
- Data Structures and Algorithm Analysis in C by Mark Allen Weiss
Programming language
- Effective Python: 59 Specific Ways to Write Better Python by Brett Slatkin
- A Byte of Python by Swaroop C H
- Learn You a Haskell for Great Good!: A Beginner’s Guide by Miran Lipovaca
- Thinking in Java 4th Book by Bruce Eckel
- The C Programming Language 2nd Edition by Brian W. Kernighan, Dennis M. Ritchie
Coding skills
- Structure and Interpretation of Computer Programs by Gerald Jay Sussman and Hal Abelson
- Programmers At Work by Susan Lammers (Bill Gates’s Chapter)
- Writing Solid Code by Steve Maguire
- Programming Pearls by Jon Bentley
System
- Distributed Systems: Concepts and Design by George Coulouris, Jean Dollimore, and Tim Kindberg
- Distributed Algorithms An Intuitive Approach by Wan Fokkink
English writing
- The Book on Writing by Paula Larocque