AWS announced s3 bucket keys which reduce the calls to the KMS (Key Management Service) when objects in S3 are encrypted/decrypted. If you have used S3 as data lake, you know how big the savings are!

Take a look at the announcement here

Although, the official documentation does not dig deep into the following :


Long time ago, I was doing resilience review for an application and figured that the shutdown hook was not executed by the application when the pod is deleted in Kubernetes, even though it had enough time to shutdown gracefully — defined by terminationGracePeriodSeconds

Only explanation is that the SIGTERM sent by kubelet is not actually received by the application. It had to do with the shell/exec form in dockerfile for ENTRYPOINTs. This is nothing new but this mistake is surprisingly common.

Understanding the difference between shell and exec forms

Both ENTRYPOINT/CMD in docker supports two forms,


I went through quite a bit of struggle to decode how to add custom plugin to protoc. In this article, I will introduce protocol buffer’s insertion points — which is hidden deep in the documentation, and how these are the key to write custom code generation for protos.

The “Why”

Only primitives are supported in protocol buffers. protoc can compile a string type in protocol buffer to java.lang.String and also to python String. But if you were to add support for, say, LocalDate, protoc should be able to represent this type in all the supported language. …


I was working on a POC in an application to trigger runs which would update status tables at both Postgres and SqlServer. Well, it was more than that but that is the problem statement I am going to focus on for this post.

We were using Spring batch for job framework. And the intent is to assign an unique timestamp for each runs — it is guaranteed to be unique because the application ensures that there is only one active job at any given time.

This unique timestamp is then assigned to the run_timestamp column in bunch of status tables…


I have not seen in-process schedulers used widely. There is usually a dedicated application that is built solely for the purpose of scheduling and maintaining job runs. That way, there is only one application that focuses on scheduling, holding the job runs, monitoring and alerting after x failures, enabling/disabling a job etc. All that you have to do, is to configure jobs at this dedicated job scheduler to perform certain actions at your application at certain frequency. But in the absence of such dedicated setup, you would probably want to do the scheduling in process.

In this post, I will…


I was playing around with Flyway and Spring boot recently.

The repo here answers all basic questions like :

In this post I will elaborate few use cases that I found to be a worthy mention.

Say you have a CacheService that loads the data from the database when it initializes. And you are using Flyway for migration.

@Service
class CacheService {

lateinit var employee: Employee…

I had signed up as a Mentor for a pilot program based on Experiential Learning to mentor a group of 5 people on technology that they have never used —Apache Kafka 🙌

The key was to give a scenario — which is not too hard to setup — and guide them to use Kafka to solve a basic problem statement.

More and more recipes would be added at each level which would force them to think about guarantees, data retention, scaling, etc.

Of course, this means that I should be 5 steps ahead preparing the recipes and also make sure…


A good way to dive in-depth with any technology/framework is actually to try out every essential feature yourself. If you want to learn Spring Framework and do not know where to start, here is the material to get you started.

List of recipes as of the published date of this post

I have formulated recipe based training — each recipe is a mini project focused on a particular problem and a feature to address that. I ran this programme for a small group of newbies. It was a huge hit! This also helped keep the training async considering the current covid situation.

Hope it helps you too.


If you haven’t already my blog on building serverless slack bot, do give it a read here

Couple weeks back, I built a slack app to conduct “The Virtual Treasure Hunt” for my team. The COVID lockdown has got us all working remotely with no interactions except for few work-related discussions. The idea was to increase interactivity and lighten the mood in the team.

Idea is simple. Slack Bot posts few puzzle/clues and you respond with what you have found — correct ones take you to next level. These are few examples of the quest.

Initially I built an interactive…


Few weeks back, I built a slack bot for the team which gives sassy replies when someone says “/hi”. The idea came from my colleague when he talked about an email bot when cc’ed, randomly updates the mail thread with funny things that his manager usually says. I took this idea and extended to Slack Bots, where everybody gets roasted.

It also became a guessing game where every time the bot replied, people went guessing who could have said that. We also hid few easter eggs like — you can say /hi @username and the bot would respond with one…

Vinodhini Chockalingam

Not a blogger. I mostly move my well-written notes here.

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