books.md (4747B)
1 # Books 2 3 ## TypeScript 4 5 [TypeScript Deep Dive](https://basarat.gitbook.io/typescript/future-javascript/arrow-functions) - 6 This is great and succinct and freely available online 7 8 Effective TypeScript by Dan Vanderkam - very useful 9 10 ## Fundamentals of Software Engineering 11 12 The Pragmatic Programmer by Andrew Hunt, David Thomas (The Pragmatic Programmer: 13 Your Journey to Mastery, 20th Anniversary Edition) 14 15 The Mythical Man-Month 16 17 Become an Effective Software Engineering Manager 18 19 Site Reliability Engineering: How Google Runs Production Systems 20 21 Clean Code by Robert C Martin 22 23 A Philosophy of Software Design 24 25 ## Additional Software Engineering Reading 26 27 Fundamentals of Software Architecture: An Engineering Approach 28 29 Code Complete by Steve McConnell 30 31 JavaScript: The Good Parts 32 33 Design Patterns: Elements of Reusable Object-Oriented Software 34 35 Refactoring by Martin Fowler 36 37 Test-Driven Development by Example by Kent Beck 38 39 ## Rust 40 41 [Rust Atomics and Locks](https://mara.nl/atomics/) 42 43 Programming Rust, 2nd Ed. — Jim Blandy & Jason Orendorff Why: The definitive 44 reference on Rust’s ownership, borrowing, and unsafe code. Covers lifetimes, 45 async/await, and concurrency primitives in depth. Written by core language 46 designers. 47 48 Rust in Action — Tim McNamara Why: Focuses on systems programming patterns 49 (including allocators, FFI, and unsafe code) and includes practical async/Tokio 50 examples. Strong on performance-aware design. 51 52 ## Low-Latency Systems, Hardware-Aware Optimization & Allocators 53 54 Designing Data-Intensive Applications — Martin Kleppmann Why: Though not 55 Rust-specific, it’s essential for understanding latency, consistency, and 56 distributed system trade-offs. Covers observability, ordering, exactly-once 57 semantics, and system boundaries—directly relevant to your messaging and 58 observability needs. 59 60 High Performance Browser Networking — Ilya Grigorik Why: Surprisingly 61 relevant—covers TCP/UDP, zero-copy, kernel bypass concepts, and NUMA-aware 62 design patterns. Though focused on browsers, its low-level networking insights 63 translate directly to systems programming. 64 65 The Linux Programming Interface — Michael Kerrisk Why: The most comprehensive 66 reference on Linux syscalls, I/O models (including io_uring), and memory 67 management. Critical for understanding zero-copy, custom allocators, and 68 hardware-level profiling. 69 70 ## System Design, Architecture & Leadership 71 72 System Design Interview (2 vols) — Alex Xu Why: Excellent for scaling and 73 distributed system design patterns—especially useful for Kafka/NATS-style 74 systems and observability architecture. 75 76 Accelerate — Nicole Forsgren et al. Why: Evidence-based practices for DevOps, 77 CI/CD, and performance regression detection. Directly supports your CI/CD and 78 benchmarking-gates requirements. 79 80 The Pragmatic Engineer — Gustavo Sampaio Why: Covers architecture reviews, ADRs, 81 and engineering standards—ideal for leading Rust engineering culture 82 83 ## Observability, Testing & Reliability 84 85 Observability Engineering — Candace Gonzalez et al. Why: Covers 86 Prometheus/OpenTelemetry, tracing, alert design, and structured logging in 87 production systems—aligned with your observability stack. 88 89 Chaos Engineering — Casey Rosenthal et al. Why: The foundational text on fault 90 injection, chaos testing, and resilience design—directly matches your “chaos and 91 fault injection experience” requirement. 92 93 Property-Based Testing with Rust — John A. De Goes (free online) Why: While not 94 a traditional book, De Goes’ Modern Software Engineering and his PBT tutorials 95 are widely used in Rust for property-based testing and TDD as design discipline 96 97 ## Cloud Infrastructure (Azure/AWS) 98 99 Cloud Native Infrastructure — Karl Isenberg & George Miranda Why: Covers IAM, 100 secrets management, and infrastructure-as-code patterns across cloud 101 providers—including Azure-specific guidance. 102 103 Designing Distributed Systems — Brendan Burns Why: Written by a Kubernetes 104 co-creator; emphasizes patterns for reliability, observability, and managed 105 services—highly applicable to Azure/AWS deployments 106 107 ## Supplemental (Free & Online) 108 109 [The Rust Async Book](https://rust-lang.github.io/async-book/) 110 111 [The Rustonomicon](https://doc.rust-lang.org/nomicon/) 112 113 [Tokio docs & blog](https://tokio.rs/blog/) 114 115 io_uring & DPDK deep dives (e.g., 116 [A Deep Dive into Zero-Copy Networking and io_uring](https://medium.com/@jatinumamtora/a-deep-dive-into-zero-copy-networking-and-io-uring-78914aa24029), 117 [Zero-copy network transmission with io_uring](https://lwn.net/Articles/879724/)) 118 119 ## Personal Development 120 121 Deep Work by Carl Newport 122 123 How to measure anything 124 125 Tidy First 126 127 Becoming Evil: How Ordinary People Commit Genocide and Mass Killing by James 128 Waller 129 130 The Art of Memory - Frances Yates