Hands On Kafka

Hands On Kafka

Home
Notes
Course Curriculum
Uber-Lite: Architecting High-…
Archive
Newsletters
About
Lesson 6: Introduction to Uber H3 - Hexagonal Spatial Indexing
The Naive Approach (And Why It Dies at Scale)
2 hrs ago
Day 50: Processor API - Building ML-Powered Content Recommendations
What We’re Building Today
Feb 7
Lesson 5: The Limits of Geohash - Why Uber Ditched Rectangles for Hexagons
The Naive Approach: Geohash Everywhere
Feb 4
Day 49: Fault Tolerance & Recovery in Kafka Streams
Building Bullet-Proof Engagement Scoring for StreamSocial
Feb 3

January 2026

Lesson 4: Geospatial Indexing 101 - Why Scanning is Death
The Naive Approach: Linear Distance Scanning
Jan 31
Day 48: Interactive Queries - Building StreamSocial’s Live Trending API
What We’re Building Today
Jan 28
Lesson 3: Kafka Architecture Mechanics - Durability Without Performance Death
The Problem: Replication is Not High Availability
Jan 27
Day 47: Table-Table Joins - Matching User Preferences with Content Metadata
What We’re Building Today
Jan 24
Lesson 2: The Log Abstraction - Why Kafka Isn't a Queue
The Naive Approach: Treating Kafka Like RabbitMQ
Jan 22
Day 46: Stream-Table Joins - Enriching Events in Real-Time
What We’re Building Today
Jan 20
Lesson 1: The Monolith vs. The Event Log
Why Your Database is the Bottleneck (And How Uber Escaped It)
Jan 18
Day 45: KTable Operations - Real-Time User Reputation System
What We’re Building Today
Jan 16
© 2026 SystemDR · Privacy ∙ Terms ∙ Collection notice
Start your SubstackGet the app
Substack is the home for great culture