Time Travel and Schema Evolution in the Streaming Lakehouse

TLDR Iceberg tracks every Flink checkpoint as an immutable snapshot. That gives you time travel queries on a streaming pipeline for free, with about 30-second granularity. You can add columns to a live Iceberg table while Flink is writing to it. Old rows get NULLs for the new columns, and the pipeline keeps running without rewriting data or taking downtime. DuckDB reads the same Iceberg tables without Trino running. Three different query engines can hit the same data without copying anything. ...

April 8, 2026 · 6 min · Viktor Gamov

Building a Streaming Lakehouse with Open Source: Kafka to Iceberg to Trino to Superset

TLDR I built an open-source streaming lakehouse: Kafka ingests events, Flink processes them, Iceberg stores them as tables, Trino queries them, and Superset visualizes them. One make demo command runs it all locally. Even when your data lands in Iceberg automatically (as it does with Confluent Tableflow), you still need a query engine and a visualization layer. This stack builds that full picture with open-source components. MinIO went closed-source, so I switched to SeaweedFS (thanks to Robin Moffatt’s research). And Flink’s dependency management is still a jar-shaped nightmare. ...

April 2, 2026 · 10 min · Viktor Gamov

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

When AI Alignment Experts Can't Align Their Own AI

TLDR Meta’s director of AI alignment told her agent "confirm before acting." It deleted her entire inbox anyway. OpenClaw hit 250k GitHub stars in 60 days, its codebase hit 400,000 lines, and about 12% of its skill marketplace was malware. NanoClaw runs every agent in its own Linux container with 4,000 lines of code you can read in one sitting. I picked a third option. It runs on the JVM. ...

March 30, 2026 · 6 min · Viktor Gamov

Twelve Million Java Developers and the AI Ecosystem Forgot About Them

TLDR There are twelve million Java developers and the AI ecosystem built everything for Python first. LangChain4j fixes that. You can wire up an LLM, give it tools (database queries, API calls, search), and let it decide which tool to use and when. That’s an agent, built in Java. It handles prompt templates, chat memory, RAG pipelines, MCP support, and tool calling across 20+ LLM providers through a single API. ...

March 26, 2026 · 5 min · Viktor Gamov

Goodbye Confluent

TL;DR May 6th, 2021, was my last day at Confluent. Here is an email, that I sent to my former co-workers @ConfluentInc. Dear team, I’d like to let you know that I am leaving my position of Developer Advocate on May 6th. I have really enjoyed my time here in Confluent, and I appreciate having had the opportunity to work with with many of you. It was quite a ride, but I would do it again without any doubts. ...

May 6, 2021 · 1 min · Viktor Gamov

5 Kubernetes Tools You Probably Don't Use (But You Should)

TL;DR In this post, I’m going to talk about few tools that I found very useful during my Kubernetes development and presentations. Table 1. Revisions history Version Date Comments v1.1 03/26/2019 Finished draft v1.0 03/11/2019 Initial draft Earlier this year, I recorded a three-episode series, «Streaming on Kubernetes: It doesn’t have to be the hard way.» There I showed some demos of the Confluent Operator on Kubernetes. Many people reached out after and asked - «What kind of terminal do you use,» «What kind of plugins do you use» and so far and so on. And today, I’m going to be talking about five Kubernetes tools that I use in my demos (of during preparations to it) that you’re probably don’t use but defiantly should. ...

March 26, 2020 · 5 min · Viktor Gamov

The Ultimate Oracle Code One 2019 Guide for Kafka and Stream Processing wisdom seekers

TL;DR Oracle Code One 2019 is upon us! Read this post to find all sessions where you can learn things Apache Kafka® and stream processing! Also, I will be listing very subjective personal recommendations. Don’t hesitate to reach-out if you would like me to add any details! Table 1. Revisions history Version Date Comments v1.0 9/16/2019 Initial revision Monday Apache Kafka Versus Integration Middleware (MQ, ETL, ESB): Friends or Enemies? [DEV1187] by Kai Waehner 09:00 AM - 09:45 AM | Moscone South - Room 302 Getting Started with Kafka [DEV2417] Nikhil Nanivadekar 12:30 PM - 01:15 PM | Moscone South - Room 207/208 Building Event-Driven Applications with Oracle’s Fn Project and Apache Kafka [DEV1917] 01:30 PM - 02:15 PM | Moscone South - Room 304 Building Reactive Pipelines: How to Go from Scalable Apps to Scalable Systems [DEV1256] by Mark Heckler 12:30 PM - 01:15 PM | Moscone South - Room 207/208 Streaming Machine Learning with Python, Jupyter, TensorFlow, Apache Kafka, and KSQL [DEV1185] 04:00 PM - 04:45 PM | Moscone South - Room 201 Query and Analyze Kafka Streams with Oracle SQL [DEV4292] 05:00 PM - 05:45 PM | Moscone South - Room 204 ...

September 16, 2019 · 5 min · Viktor Gamov

Stream Processing Like You Have Never Seen Before

TL;DR This is playbook for «Stream Processing like you have never seen before» talk Full source code is available Table 1. Revisions history Version Date Comments v1.1 11/05/2019 Updated version, presented at NYC Cloud Native meetup v1.0 09/05/2019 Initial revision, presented at DC Spring Meetup Spring Kafka Application Getting started Go to https://start.spring.io and generate project using «Spring for Apache Kafka», «Spring for Apache Kafka Streams», «Lombok», «Cloud Streams» ...

September 5, 2019 · 4 min · Viktor Gamov

Where in the world is Viktor in second half of 2019

TL;DR This blog post inspired by similar posts of my colleagues' @rmoff [1] and @riferrei [2]. You can find all my speaking appearances until the end of 2019. Table 1. Revisions history Version Date Comments v1.1 10/03/2019 Added New York events v1.0 9/05/2019 Initial revision September 🇺🇸 5th of September: Washington, DC — DC Spring Framework I will be talking about integration between Kafka and SpringFramework. And I will try to live code! ...

September 3, 2019 · 3 min · Viktor Gamov