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.
7 series · 79 posts · updated Oct 2026
Featured Series
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.
AI: Through an Architect's Lens
Exploring AI/ML concepts from a distributed systems architect's perspective — bridging theory with production-grade engineering.
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.
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.
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.
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.
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.
Latest
Part 0: Python for Java Developers: From Streams to Tensors
A 10-part, example-driven Python series for seasoned Java and C# developers moving into data science, ML and AI. Follow Arjun, a Java architect pulled into a fraud-detection ML project, from culture shock to PyTorch.
Part 1: "The Culture Shock" — Names, Objects and the Runtime
Arjun's first Python code review goes badly. We cover how Python executes code, why variables are names bound to objects, mutability and aliasing, is vs ==, truthiness, numeric surprises, modules, and a proper project setup with uv.
Part 2: "Collections Without Ceremony" — Lists, Dicts, Sets and Comprehensions
The Streams API, translated. Lists, tuples, dicts and sets; slicing and unpacking; comprehensions as the idiomatic map/filter/collect; sorting with keys; and the collections module — Counter, defaultdict, deque — applied to transaction data.
Part 3: "Functions Are Values" — Arguments, Closures and Decorators
No more single-method interfaces. Positional, keyword, *args and **kwargs; the mutable-default trap; lambdas; closures and LEGB scoping; and decorators — Python's ten-line answer to Spring AOP — for timing, retries and caching.
Part 4: "Objects Without the Ceremony" — Classes, Dunders, Dataclasses and Protocols
Arjun writes a Java-style Transaction class with getters and setters and gets gently mocked. Properties, the Python data model (__repr__, __eq__, __hash__, __len__, __getitem__), @dataclass, class methods, inheritance, enums, and duck typing formalised with Protocol.
Part 5: "The Lazy River" — Iterators, Generators and Context Managers
A 40 GB transaction export will not fit in memory. The iterator protocol, generators and yield, lazy generator pipelines, itertools, exceptions and EAFP, pathlib and csv, and with-statements as Python's try-with-resources.