Hands On Kafka
Subscribe
Sign in
Home
Notes
Course Curriculum
Uber-Lite: Architecting High-…
Archive
Newsletters
About
Latest
Top
Discussions
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
3
Lesson 5: The Limits of Geohash - Why Uber Ditched Rectangles for Hexagons
The Naive Approach: Geohash Everywhere
Feb 4
1
3
Day 49: Fault Tolerance & Recovery in Kafka Streams
Building Bullet-Proof Engagement Scoring for StreamSocial
Feb 3
3
January 2026
Lesson 4: Geospatial Indexing 101 - Why Scanning is Death
The Naive Approach: Linear Distance Scanning
Jan 31
2
4
Day 48: Interactive Queries - Building StreamSocial’s Live Trending API
What We’re Building Today
Jan 28
5
Lesson 3: Kafka Architecture Mechanics - Durability Without Performance Death
The Problem: Replication is Not High Availability
Jan 27
4
2
Day 47: Table-Table Joins - Matching User Preferences with Content Metadata
What We’re Building Today
Jan 24
1
3
Lesson 2: The Log Abstraction - Why Kafka Isn't a Queue
The Naive Approach: Treating Kafka Like RabbitMQ
Jan 22
2
Day 46: Stream-Table Joins - Enriching Events in Real-Time
What We’re Building Today
Jan 20
1
2
Lesson 1: The Monolith vs. The Event Log
Why Your Database is the Bottleneck (And How Uber Escaped It)
Jan 18
4
4
Day 45: KTable Operations - Real-Time User Reputation System
What We’re Building Today
Jan 16
2
1
This site requires JavaScript to run correctly. Please
turn on JavaScript
or unblock scripts