TLDR I built an interactive tutorial that teaches Flink SQL’s table-stream duality with animated visualizations you can explore in your browser.
Six sections guide you from "what is a dynamic table" to writing live aggregation queries, with code examples in both SQL and the Table API.
It is open source, MIT licensed, and I’m accepting feature requests at the GitHub repo.
The Concept That Trips Everyone Up Every time I teach Flink SQL, I hit the same wall. The concept of table-stream duality makes perfect sense to me after years of experience, but I can see the exact moment when someone new to Flink gets confused. You say "a table is just a materialized view of a stream" and their eyes glaze over. By the time you say "a stream is just a changelog of a table" you’ve lost them entirely.
The problem is this concept is fundamentally visual. A stream of events flows in, a table updates as each event arrives, and changelog operations like inserts, updates, and retracts happen in real time. You can explain it with words, and every Flink tutorial does. But watching it happen step by step in front of you is a different kind of understanding.
So I built selectstar.stream to make the concept visible and interactive.
...