Welcome—and thanks for being here. I'm a Staff Software Lead, with 15+ years in Java. For the last few years, I've lived in event-driven, distributed systems.
I build real-time platforms for financial infrastructure—streaming on Apache Kafka and Apache Flink, handling strict ordering, exactly-once processing, watermarking, and schema evolution with Avro.
I've built reconciliation pipelines for core banking, where a lost event isn't a bug—it's a financial discrepancy. I also led one platform's shift to a SaaS-ready, multi-tenant product, deployed globally.
I own the full lifecycle: Kafka topology, consumer lag, Flink state tuning, CI/CD for streaming jobs, plus the surrounding architecture—Cassandra, Oracle, Spring Boot.
Low-level design matters to me: clean class structures, solid interfaces. Systems fail at the seams, so I weigh trade-offs constantly—consistency vs. availability, throughput vs. latency.
I stay hands-on, shipping code and solving hard consistency problems, while also leading teams and mentoring engineers.
Check this out : Technical notes
Flink Heartbeat of TaskManager Timed Out: Causes and Fixes
Fix the Flink 'Heartbeat of TaskManager with id ... timed out' error. Real causes — GC pauses, OOMKilled pods, network saturation — and the exact config fixes.
Kafka TimeoutException: Expiring N record(s) — Cause and Fix
Kafka producer failing with TimeoutException: Expiring N record(s): ms has passed since batch creation? What delivery.timeout.ms really does — and the fix.
Kafka InconsistentClusterIdException: Cluster ID Mismatch Fix
Fix kafka.common.InconsistentClusterIdException: Cluster ID doesn't match stored clusterId in meta.properties — the Docker volume cause and the real fix.
Flink: Cannot Map Savepoint State for Operator — Fix It
Flink's "Cannot map checkpoint/savepoint state for operator to the new program" error breaks upgrades. Here's why it happens and how to fix it with stable uid().
Flink Checkpoint Expired Before Completing: Causes & Fixes
Fix the Apache Flink 'Checkpoint expired before completing' error. Learn why checkpoints time out under backpressure and large state, and the exact config to stop it.
Flink NoResourceAvailableException: Could Not Acquire Minimum Resources
Fix Flink's NoResourceAvailableException 'Could not acquire the minimum required resources' — slot arithmetic, slot sharing, and the config that actually solves it.
Java NullPointerException: Cannot invoke ... because ... is null
Decode the helpful NullPointerException message — Cannot invoke "String.length()" because "s" is null — find the exact null reference, and fix it for good.
Java ConcurrentModificationException: Causes and Fixes
ConcurrentModificationException usually has nothing to do with threads. Here is exactly what modCount does, why it fires, and the four fixes that actually work.