SELECT * FROM stream: An Interactive Guide to Flink's Table-Stream Duality

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. ...

April 1, 2026 · 5 min · Viktor Gamov

Hands-On with Confluent Cloud: Apache Kafka, Flink, and Tableflow

GitHub Repository | Duration: 2 hours | Difficulty: Beginner to Advanced Overview This hands-on workshop walks you through building a complete real-time data pipeline using Confluent Cloud. You’ll stream live cryptocurrency price data from the CoinGecko API, process it with Apache Flink SQL, and materialize it as Apache Iceberg tables using Tableflow — all queryable through DuckDB. What You’ll Learn Set up and configure a Kafka cluster on Confluent Cloud Create topics and ingest live data using HTTP Source Connector Materialize Kafka topics as Iceberg tables with Tableflow Write Flink SQL for real-time stream processing Query real-time and historical data with DuckDB ...

January 15, 2025 · 2 min · Viktor Gamov