{ "@context": "https://schema.org", "@graph": [ { "@type": "WebSite", "@id": "https://www.ggorantala.dev/#website", "url": "https://www.ggorantala.dev/", "name": "Gopi Gorantala", "description": "Staff engineer building Kafka and Flink platforms for banking. Production failures traced to root cause." }, { "@type": "Person", "@id": "https://www.ggorantala.dev/#person", "name": "Gopi Gorantala", "url": "https://www.ggorantala.dev/", "jobTitle": "Staff Software Engineer", "worksFor": { "@type": "Organization", "name": "ING Bank" }, "sameAs": [ "https://x.com/ggorantala", "https://www.linkedin.com/in/ggorantala/", "https://github.com/ggorantala", "https://leetcode.com/ggorantala" ] } ] }
Skip to content

Gopi Gorantala

Staff engineer architecting Kafka and Flink platforms for banking, where a dropped event is a reconciliation break, not a retry. Through javahandbook.com, I share production-tested guidance on building reliable event-driven systems.

Introduce Yourself To Functional Programming

Functional programming is a paradigm that treats computation as the evaluation of functions, avoiding shared mutable state and side effects. It is far older than Java — Lisp introduced these ideas in 1958 — but Java only gained first-class support for it in Java SE 8 (March 2014), when lambda expressions,

Bit Manipulation Final Thoughts

This course has taught you how to re-write arithmetic operators like +, -, /, * into left, right shift, and other bit-level operations. I hope the knowledge you gain in this course will be useful in solving Leetcode, Hackerrank, HackerEarth, Codeforces, Codechef, and other online coding challenges. It will also help you

Members only

Getting Started With Real-Time Systems

Real-time data isn't "we'll know eventually" — it's knowing the instant something happens and acting on it. This lesson breaks down what real-time actually means, why Kafka exists, and how one event reaches many systems at once, in plain English.

Solution Review: Get the First Set Bit Position Using the Right Shift

In the kth bit set/unset problem, we first write the algorithm, then some pseudocode, and then implement the solution. In this lesson, we try to solve this algorithm using the left shift operator. Try solving it on your own. Solution review Imagine we check the right-most significant bit

Challenge 1: Get the First Set Bit Position Using the Right Shift

This problem is similar to the last lesson we discussed. If you need a clue, return to the previous lesson to further your understanding. Introduction In this question, we need to find the first set-bit position from the right. Problem statement Given an input number, find the first set-

Check If Kth Bit Is Set/Unset Using Right Shift

In the kth bit set/unset problem, we need to write a program that checks whether the kth bit of a number is 1 or 0. In this lesson, we try to find a bit in the binary representation of a number at the kth position and check if it

Solution Review: Get The First Set Bit Position Using the Left Shift

In the kth bit set/unset problem, we first write the algorithm, then some pseudocode, and then implement the solution. In this lesson, we try to solve this algorithm using the left shift operator. Try solving it on your own. Solution review Imagine we check the right-most significant bit

Challenge 1: Get the First Set Bit Position Using the Left Shift

This problem is similar to the last lesson we discussed. If you need a clue, return to the previous lesson to further your understanding. Introduction In this question, we need to find the first set-bit position from the right. Problem statement Given an input number, find the first set-

Members only

How Strings Are Used In Collections?

Learn how Java strings work as keys in HashMap, TreeMap, and HashSet collections. Master string comparison, hash codes, and avoid common pitfalls like case sensitivity and performance issues with long strings in data structures.

Members only

Thread Safety: StringBuilder vs. StringBuffer

Java StringBuffer vs StringBuilder: Thread Safety Guide. Learn when to use synchronized StringBuffer for multi-threaded apps vs faster StringBuilder for single-threaded performance. Complete comparison with examples and best practices for optimal string manipulation.