Study notes
Notes from books, talks, and experiments.
12 entries.
What I finally understood after six months of doing it wrong.
Three things stuck. Two of them surprised me.
How to choose the right number of Kafka partitions: balancing write throughput, consumer parallelism, and operability when scaling a Kafka deployment.
WebSockets demystified: why they exist, how bi-directional real-time communication works, and the trade-offs that matter when scaling WebSockets in production.
An introduction to the Paxos consensus algorithm for distributed systems, explained through the analogy of a chaotic Senate trying to agree on and pass a bill.
A deep dive into O(log n) time complexity: what it really means, why the logarithm's base matters for performance, and where it shows up in everyday algorithms.
Concurrency vs. parallelism explained with Python: how the GIL, threading, asyncio, and multiprocessing work, and when to choose each for system design.
How Bloom filters trade certainty for speed and space in system design, why that trade-off matters, and where to use this probabilistic data structure.
A tour through the evolution of databases, from flat files to relational, NoSQL, and NewSQL systems, with lessons on why modern database designs work this way.
A practical guide to MySQL internals for Java developers: storage engines, indexing strategies, and query optimization techniques that improve performance.
How Maven's dependency resolution relies on graph theory: depth-first search, breadth-first search, and topological sorting explained with real Maven graphs.
How CPU, memory, storage, GPU, and network hardware shape software performance in big data systems, with optimization techniques from real-world examples.