# Books and Papers

## Books

#### Distributed Systems

1. Distributed Systems; Andrew S. Tanenbaum
2. Designing Data-Intensive Applications; Kleppman
3. Designing Event-Driven Systems; Stopford
4. Kafka: The Definitive Guide; Neha Narkhede, Gwen Shapira, Todd Palino
5. Making Sense of Stream Processing; Kleppmann
6. I Heart Logs; Kreps
7. Microservices AntiPatterns and Pitfalls, Richards
8. Software Architecture Patterns, Richards

#### Operating Systems, Networks & SRE

1. Modern Operating Systems; Andrew S. Tanenbaum
2. Computer Networks; Andrew S. Tanenbaum
3. The Site Reliability Engineering: How Google Runs Production Systems; Murphy, Beyer, Jones, Petoff
4. The Site Reliability Workbook; Murphy, Beyer, Jones, Petoff
5. Linux System Programming; Love
6. Linux Kernel Development; Love
7. The Linux Programmer's Toolbox; Fusco
8. Systems Performance: Enterprise and the Cloud; Gregg
9. UNIX and Linux System Administration Handbook;  [Evi Nemeth](https://www.amazon.com/s/ref=dp_byline_sr_book_1?ie=UTF8\&field-author=Evi+Nemeth\&text=Evi+Nemeth\&sort=relevancerank\&search-alias=books), [Garth Snyder](https://www.amazon.com/s/ref=dp_byline_sr_book_2?ie=UTF8\&field-author=Garth+Snyder\&text=Garth+Snyder\&sort=relevancerank\&search-alias=books), [Trent R. Hein](https://www.amazon.com/Trent-R-Hein/e/B001IGFJ5Q/ref=dp_byline_cont_book_3), [Ben Whaley](https://www.amazon.com/Ben-Whaley/e/B0725R4PV5/ref=dp_byline_cont_book_4), [Dan Mackin](https://www.amazon.com/Dan-Mackin/e/B076FDP78H/ref=dp_byline_cont_book_5)&#x20;

#### Databases

1. Database Internals. A Deep Dive into How Distributed Data Systems Work; [Alex Petrov](https://www.amazon.com/Alex-Petrov/e/B07YC94DMN/ref=dp_byline_cont_book_1)&#x20;
2. Database Design for Mere Mortals: A Hands-On Guide to Relational Database Design;

   &#x20;[Michael J. Hernandez](https://www.amazon.com/Michael-J-Hernandez/e/B000APGESM/ref=dp_byline_cont_book_1)
3. High Performance MySQL: Optimization, Backups, and Replication; [Baron Schwartz](https://www.amazon.com/Baron-Schwartz/e/B00OWS7XGU/ref=dp_byline_cont_book_1)
4. [The Art of PostgreSQL](https://theartofpostgresql.com/); [Dimitri Fontaine](https://www.youtube.com/watch?v=09b-uk9UXbM)

#### Performance Engineering

1. Every Computer Performance Book: How to Avoid and Solve Performance Problems  on The Computers You Work With; [Bob Wescott](https://www.amazon.com/Bob-Wescott/e/B00C7CHP34/ref=dp_byline_cont_book_1)&#x20;
2. The Practical Performance Analys&#x74;**;** [Neil Gunther](https://www.amazon.co.uk/s/ref=dp_byline_sr_book_1?ie=UTF8\&field-author=Neil+Gunther\&text=Neil+Gunther\&sort=relevancerank\&search-alias=books-uk)&#x20;
3. Systems Performance: Enterprise and the Cloud; [Gregg](https://www.amazon.com/Brendan-Gregg/e/B004GG0SEW)
4. BPF Performance Tools; [Gregg](https://www.amazon.com/Brendan-Gregg/e/B004GG0SEW)
5. Performance Solutions: A Practical Guide to Creating Responsive, Scalable Softwar&#x65;**;** [Connie U. Smith](https://www.amazon.com/Connie-U-Smith/e/B001IQXC9Q/ref=dp_byline_cont_book_1), [Lloyd G. Williams](https://www.amazon.com/s/ref=dp_byline_sr_book_2?ie=UTF8\&field-author=Lloyd+G.+Williams\&text=Lloyd+G.+Williams\&sort=relevancerank\&search-alias=books)
6. The Art of Capacity Planning: Scaling Web Resources; John Allspaw
7. Java Performance - The Definitive Guide; [Scott Oaks](https://www.amazon.com/Scott-Oaks/e/B000APH2E2)
8. Optimizing Java: Practical Techniques for Improving JVM Application Performance;  [Benjamin J Evans](https://www.amazon.com/Benjamin-J-Evans/e/B07DGL1TM4/ref=dp_byline_cont_book_1) , [James Gough](https://www.amazon.com/s/ref=dp_byline_sr_book_2?ie=UTF8\&field-author=James+Gough\&text=James+Gough\&sort=relevancerank\&search-alias=books), [Chris Newland](https://www.amazon.com/Chris-Newland/e/B07L4YL11R/ref=dp_byline_cont_book_3)
9. High Performance Browser Networking: What every web developer should know about networking and web performance; [Ilya Grigorik](https://www.amazon.com/Ilya-Grigorik/e/B00CNKCS1E/ref=dp_byline_cont_ebooks_1)
10. High-Performance Java Persistence; [Vlad Mihalcea](https://www.amazon.com/Vlad-Mihalcea/e/B01N8PGJ7E/ref=dp_byline_cont_book_1)&#x20;
11. [Go-Perf Book,](https://github.com/dgryski/go-perfbook) Thoughts on Go performance optimization, [Damian Gryski](https://twitter.com/dgryski)
12. The Garbage Collection Handbook: The Art of Automatic Memory Management;

    [Richard Jones](https://www.amazon.com/Richard-Jones/e/B000AQTHV2/ref=dp_byline_cont_book_1), [Antony Hosking](https://www.amazon.com/Antony-Hosking/e/B004QJ36QG/ref=dp_byline_cont_book_2), [Eliot Moss](https://www.amazon.com/s/ref=dp_byline_sr_book_3?ie=UTF8\&field-author=Eliot+Moss\&text=Eliot+Moss\&sort=relevancerank\&search-alias=books)

#### Programming languages

1. Core Java, Volume I and II; Horstmann
2. Thinking in Java; Eckel
3. OCA/OCP Java SE 7 Programmer I & II Study Guide; Sierra & Bates
4. Effective Java; Bloch
5. Java Concurrency in Practice; Goetz
6. Spring Boot in Action; Walls
7. Java EE 7 Development with WildFly; Ćmil, Matłoka, Marchioni
8. Java Performance - The Definitive Guide - Scott Oaks
9. The C Programming Language; Kernighan, Ritchie
10. The C++ Programming Language; Stroustrup
11. Effective Modern C++; Meyers
12. The Go Programming Language; Donovan and Kernighan
13. Learning Python: Powerful Object-Oriented Programming; Lutz
14. Scala for the Impatient; Horstmann
15. Functional Programming in Scala; Chiusano, Bjarnason
16. Scala in Depth, Suereth
17. Javascript: The Good Parts, Crockford
18. Seven Languages in Seven Weeks, Tate
19. [The Rust Programming Language Paperback](https://doc.rust-lang.org/book/); [Steve Klabnik](https://www.amazon.com/Steve-Klabnik/e/B06XYFKYZB/ref=dp_byline_cont_book_1)

#### Design Patterns

1. Design Patterns; Gang of Four
2. Head First, Design Patterns; Sierra, Robson, Bates & Freeman

#### Algorithms & Maths

1. Algorithms Unlocked, Cormen
2. Introduction to Algorithms, Cormen
3. Algorithms, 4th Edition by Robert Sedgewick and Kevin Wayne
4. A Programmer's Introduction to Mathematics, Kun

#### Craftsmanship

1. Clean Code; Martin
2. Working Effectively with Legacy Code; Martin
3. The Pragmatic Programmer; Hunt
4. Test Driven Development: By Example, Hunt
5. The Software Craftsman: Professionalism, Pragmatism, Pride; Mancuso

#### Domain Driven-Design

1. Domain Driven-Design, Evans
2. Implementing Domain-Driven Design, Vernon

#### Devops

1. The Goal 1 & 2, Goldratt
2. The Phoenix Project, Kim
3. The DevOPS Handbook, Kim

## Papers and articles

1. <https://paperswelove.org/>
2. What Every Programmer Should Know About Memory <https://www.akkadia.org/drepper/cpumemory.pdf>
3. First "Software Engineering" Nato Conference White Paper <http://homepages.cs.ncl.ac.uk/brian.randell/NATO/nato1968.PDF>
4. <https://aws.amazon.com/whitepapers/architecting-for-the-aws-cloud-best-practices/>&#x20;
5. On the Impact of Memory Allocation on High-Performance Query Processing <https://arxiv.org/abs/1905.01135>
6. I/O Is Faster Than the CPU – Let’s Partition Resources and Eliminate (Most) OS Abstractions <https://penberg.org/parakernel-hotos19.pdf>
7. The benefits and costs of writing a POSIX kernel in a high-level language <https://www.usenix.org/system/files/osdi18-cutler.pdf>
8. Learn where some of the network sysctl variables fit into the Linux/Kernel network flow <https://github.com/leandromoreira/linux-network-performance-parameters>
9. Distributed consensus revised <https://blog.acolyer.org/2019/05/07/distributed-consensus-revised-part-i/>
10. Monitoring and Tuning the Linux Networking Stack: Sending Data <https://blog.packagecloud.io/eng/2017/02/06/monitoring-tuning-linux-networking-stack-sending-data/>
11. The Definitive Guide to Linux System Calls\
    <https://blog.packagecloud.io/eng/2016/04/05/the-definitive-guide-to-linux-system-calls/>
12. <https://blog.packagecloud.io/tag/linux/>
13. Simple Testing Can Prevent Most Critical Failures: An Analysis of Production Failures in Distributed Data-Intensive Systems <https://www.usenix.org/system/files/conference/osdi14/osdi14-paper-yuan.pdf>
14. <https://github.com/trimstray/technical-whitepapers>

## Various

1. Data and Reality: A Timeless Perspective on Perceiving and Managing Information in Our Imprecise World; by [William Kent](https://www.amazon.com/William-Kent/e/B001HPIOCS/ref=dp_byline_cont_book_1) , [Steve Hoberman](https://www.amazon.com/s/ref=dp_byline_sr_book_2?ie=UTF8\&field-author=Steve+Hoberman\&text=Steve+Hoberman\&sort=relevancerank\&search-alias=books)
