Streaming Agents with Flink Agents 0.4.0
Apache Flink Agents 0.4.0 was released. A look at its event-driven execution, memory, and recovery, how the project evolved over four releases, and the compatibility changes ahead of 1.0.

Apache Flink Agents 0.4.0 was released. A look at its event-driven execution, memory, and recovery, how the project evolved over four releases, and the compatibility changes ahead of 1.0.

I started contributing to open source in the second half of this year, and in October alone I ran into three kinds of votes: one that picks a committer, one that accepts a release, and an election for the people who steer a project.

I went to OpenAI DevDay Exchange in Seoul. OpenAI told developers to stop building their own harnesses and build services on the harness OpenAI runs, and the APIs that builders and software engineers use, along with where each should put their effort, looked a little further apart than before.

I watched the recording of Grafana's ObservabilityCON 2026 keynote. The dashboard company barely talked about dashboards for an hour. It showed an agent investigating an incident and opening a fix PR instead, and the instrumentation Grafana builds itself is now built inside OpenTelemetry.

With AI, small cards close in an afternoon, while the big card has sat in the same spot for two quarters. Back when every request went through the dev team as its one window, criteria that nobody had set were kept by accident. When AI removed that window, the cards that closed first began borrowing those criteria on a guess.

On January 20 we received ₩3,000,000 for a six-month subscription. How much is January revenue? I thought it was ₩3,000,000. I was wrong.

The month MCP hit 97 million downloads, Perplexity walked away and the Y Combinator CEO built a CLI alternative in 30 minutes. There are things the downloads don't tell you.

Dissecting failure is subtraction. Dissecting success is addition. On reproducing what worked in the next chapter.

A Broken Pipe that showed up once or twice a month, early in the morning. pool_pre_ping=True didn't stop it. The culprit was a scoped_session session that never got cleaned up when the request ended and stayed behind on a worker thread.

When the last legacy code is gone, is it still the same service? The code changes. The contract stays.
