After coming to Uber, I am having a lot of fun with JavaScript lately. While I am still learning, I wanted to share with you some fun stuffs around loops and iterations.

Iterations are a fundamental part of any Algorithmic design. Now there are many ways to learn loops and conditionals (or such fundamentals as such), but here, I wanted to take a particular way of thinking about Iterations and generalizing the same idea over a wide variety of day to day use cases. So, without further due let’s begin.

If you simply console.log() the Array.prototype, expand on it and…

Story of Git

Oh my Git! Now a days, its is an indispensable tool in my day to day work. When I initially learned Git, it was a daunting experience, I come from Perforce background before that and I hated it (for good reasons of course). But today, Git is everywhere, be it developer, devops person, designer, even content and art creators are also using Git in a big way. So knowing this tool by heart will go a long way.

In this story, I will share how I learned Git, its a bit different from traditional guides you might find elsewhere, my…


You know when I write about a topic, most of the times, it’s out of some learning that I needed to go through myself or some problem that I have faced and struggled out of it through the test of time.

This post is of the later category, Metrics collection and Monitoring system is very important for a healthy and scalable software system. Its your eyes and ears for what is happening inside the system. …


This is a true story of how I learned Exception Handling in Java. Somehow from the beginning, I struggled with it badly, I could never have my head wrapped around how to really use Exceptions, when to define new of them, specially to verify the correctness of a program at hand. Below quote succinctly summarizes the issues with classic OOP exception handling,

“Every time you call a function that can raise an exception and don’t catch it on the spot, you create opportunities for surprise bugs caused by functions that terminated abruptly, leaving data in an inconsistent state, or other…


This blog post is Part 2 in a two part series on learning asynchronous and reactive programming. If you have not yet got a chance to read Part 1 yet, even though it's not required, I would highly recommend doing so to set the context right in place.

Reactive Asynchronous Programming in Java using Reactor Core (Part 1)

This part will be a little bit more intense, long, and build on what we have already seen so far. I have tried to keep the explanation substantially small and provide simple examples where ever possible.

In this part, we will learn…


It will be two part series where in the first part we learn about the basics and motivation behind Reactive Programming, how it can help modern applications to scale, will introduce to Project Reactor and basics of Reactive Programming using Reactor and Spring.

The second part is a more advanced discussion on how to work with existing codebase and leverage reactive styles, how to handle back pressure, do error handling and much more.

Reactive Asynchronous Programming in Java using Reactor Core (Part 2)

Today, most modern applications can reach huge numbers of concurrent requests or users. Modern capabilities of modern…

Arindam Paul

Sr. Architect at Uber

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store