Publication

Exploring modern software engineering,
one deep dive at a time.

Long-form technical content on AI, distributed systems, and software architecture — series, deep dives, and standalone essays.

10 series · 135 posts · updated Oct 2026

Featured Series

Active Latest 36/36 parts

Every Record Counts: Data Engineering for Backend Engineers

You can scale a payment service in your sleep, so why does the revenue dashboard disagree with itself? A three-season field guide to data engineering for backend engineers: warehouses, lakehouses and Iceberg tables, pipelines that survive re-runs, streams that respect event time, and AI that only sees numbers you can reconcile. Every record counts; we count them twice.

Active 5/5 parts

AI: Through an Architect's Lens

Exploring AI/ML concepts from a distributed systems architect's perspective — bridging theory with production-grade engineering.

Active 13/13 parts

Season 1: Kubernetes: The Container Odyssey

This is a 12-part Kubernetes tutorial series written for experienced software engineers who are new to Kubernetes. It follows the story of Alex, a senior backend engineer with a decade of experience in monoliths and VMs, who joins a fast-growing startup called NovaCraft where everything runs on Kubernetes. Each chapter solves a real problem Alex faces at NovaCraft, combining deep conceptual explanations with practical, runnable examples that you can follow on your macOS laptop. The series progresses from foundational concepts to production-ready practices, building on each previous chapter.

Complete 11/11 parts

The Adventures of Ava the Astronaut: Learning Python One Planet at a Time.

A python series designed for absolute beginners with a storytelling narrative throughout. Each part follows Ava's space adventure while teaching a core Python concept, includes tables for clarity, code examples, and a hands-on mini-project.

Active 11/11 parts

Season 2: Kubernetes: The Container Odyssey

This is the second season of "The Container Odyssey," a 10-part Kubernetes tutorial series written for experienced software engineers who have mastered core Kubernetes concepts and are now ready to tackle the broader ecosystem. It continues the story of Alex, who has been promoted to Platform Lead at NovaCraft and now faces the challenges of running Kubernetes at scale for 10+ engineering teams.

Active 9/9 parts

Redis Deep Dive: From Cache to AI Memory

This is an extensive, multi-part Redis tutorial series written for senior software engineers. It follows the story of Maya, a Staff Engineer at GlobalMart, who leads the architectural transformation of a struggling monolith into a distributed, AI-powered platform. Each chapter combines narrative storytelling with deep conceptual explanations, internal architecture breakdowns, Mermaid diagrams, and comprehensive Java Spring Boot examples. The series progresses from foundational memory management to advanced vector search and RAG implementations.

Complete 17/17 parts

Kotlin for Java Survivors: Life After Semicolons

A sixteen-part recovery program for Java developers moving to Kotlin: fewer NullPointerExceptions, zero semicolons, coroutines instead of thread pools, and two Spring Boot 4.1 services to prove it, one with an AI assistant that knows what it doesn't know. Just enough syntactic sugar to question why you suffered so long.

Complete 11/11 parts

Java Evolution: From 8 to 25

A comprehensive, release-by-release tour of every major feature added to Java from version 8 through version 25. Each part covers one release — explaining the concepts behind each feature, showing practical before-and-after code examples, and placing the change in the context of the language's evolution. Whether you are upgrading a legacy codebase or simply want to stay current with modern Java, this series gives you the depth and clarity to understand not just what changed, but why.

Complete 11/11 parts

Python for Java Developers: From Streams to Tensors

A 10-part, example-driven Python series for experienced Java, C# and other mainstream developers heading into data science, machine learning and AI. It follows Arjun, a veteran Java architect at a payments company, as he is pulled into an ML fraud-detection initiative and has to become productive in Python fast. Each part maps what you already know to the Pythonic way, explains the critical mental-model shifts in depth, and builds toward NumPy, pandas, scikit-learn, PyTorch and LLM-era tooling — with runnable code, tips, tricks and the gotchas that bite Java people specifically.

Complete 3/3 parts

The Log Never Lies: Change Data Capture with Debezium

Your service saved the row, then the pod died before the Kafka send. A three-part field guide to change data capture for Java developers: read the database's own log instead of trusting your code to remember, with PostgreSQL, Debezium, Kafka and Spring Boot, and the replication-slot habits that keep the disk from filling up at 3 a.m.

Latest

Conceptual Every Record Counts: Data Engineering for Backend Engineers

Part 26: "Time Is a Lie" — Streaming Fundamentals

Season 3 opens with a delivery van that warmed up where nobody could hear it. Rohan's consumer groups readings by arrival and misses the excursion. Event time, windows, watermarks, lateness, triggers, state, exactly-once and the Dataflow model, simulated in Python and previewed in Flink SQL.

Project Every Record Counts: Data Engineering for Backend Engineers

Part 27: "The Backbone" — Kafka for Analytics

Rohan has run Kafka for years, for services. Analytics asks different questions of it: which key keeps order, how long the log remembers, which schema change a registry must refuse, and whether a reader sees an aborted transaction. Topics as code, Avro through Apicurio Registry from Java 25 producers, a refused rename, the Iceberg Kafka Connect sink built from source, and Flink SQL reading the same bytes.

Project Every Record Counts: Data Engineering for Backend Engineers

Part 28: "Streaming SQL" — Apache Flink I

Rohan writes Flink SQL like a Postgres report: the live sales tile loses 84 late baskets and 2,338 lines carry prices no till charged. Flink's moving parts, dynamic tables and changelogs, windows, temporal joins, dedup, Top-N, and sinks that append or upsert into Kafka and Iceberg, reconciled store by store against the lakehouse.

Project Every Record Counts: Data Engineering for Backend Engineers

Part 29: "Stateful Streams in Java" — Apache Flink II

Rohan writes the stock-out detector like a Spring service, and a restart pages stores twice. Keyed state, event-time timers, side outputs, checkpoints and savepoints, exactly-once sinks, upgrades and backpressure in Flink's Java DataStream API, proven by killing a TaskManager mid-run.

Project Every Record Counts: Data Engineering for Backend Engineers

Part 30: "The Streaming Lakehouse" — Real-Time Tables and OLAP

Store managers want stock levels "live", and Rohan wants to commit every second. Ingrid runs the same stock metric at three latencies, an hourly batch, one-minute Iceberg commits and ClickHouse reading Kafka, and measures the freshness and the cost of each. Latency tiers, commit intervals and small files, compaction in the stream, Paimon and Fluss, Spark Real-Time Mode, streaming databases and real-time OLAP.

Project Every Record Counts: Data Engineering for Backend Engineers

Part 31: "Last Mile" — Serving Data: Semantic Layers, BI and Data APIs

Rohan wants a metrics endpoint with three handlers. Ingrid wants the three incident numbers defined once, whatever the tool or the slice. Cube defines net revenue, stock availability and conversion over the governed lake and serves them over REST and to Superset; OPA still decides who sees which rows. Semantic layers, ratios and semi-additive measures, caching, data APIs, embedded analytics, reverse ETL and data products.