D3: Thinking with Joins | Hacker News Reader