“Software does not fail” is a provocative statement and your initial reaction maybe to dismiss it. But if we look deeper, software “failure” is never random compared to possible random failure of hardware components (refer to Dr Nancy Leveson, YouTube, Engineering a Safer World). Yes, there are hard to reproduce issues but software execution is as per the code. The failure is of assumptions, requirements and unhandled conditions that go into writing that code. For example, the recent AWS us-east-1 incident involved no hardware or software failure, rather the complexity of interaction of various components and assumptions made in the…

Getting started from an excellent intro from Charlie Flanagan and his Machine Learning for Business class here is some experimentation with my own models, Google AutoML and AWS SageMaker.


Product reviews from a women’s clothing ecommerce store are provided. Based on each review it has been classified as whether the reviewer would recommend that product or not. Along with each review some additional features are also provided. The goal is to create a model that can predict the likelihood of product recommendation given the customer review and some additional features.

My Attempt

Using Colab and following Charlie’s example.

Step1 — Data and…

In a recent presentation about API Gateways, I got a question about service mesh and I did not understand the question or have a good answer. So here is an attempt to understand these concepts and see how they fit together in the context of a typical container based microservice deployment. At the end of the day it is about routing and shaping traffic.

API Gateways have been around for a while and are an essential component of the “Full Lifecycle API Management” products as Gartner puts it. In this full lifecycle, the API Gateway is typically a L7 reverse…

Photo by Steve Johnson on Unsplash

In this post I am expanding on an original question I asked recently where I am looking for an opinionated build/deploy solution. I will provide some context on the software delivery model and tools used today, challenges with it and issues I am seeking to answer.

I live in the backend Java/Kubernetes ecosystem for Cloud/SaaS services so all examples are in context of that world. Tools/frameworks listed are examples only.


There are numerous tools and frameworks that need to be stitched together to perform various necessary steps to deliver a cloud service. …

Image credit Unsplash

Kubernetes docs give a good explanation of what their probes are but for your app how can we best translate these?

Think of kubelet asking the following questions to your app and here are some suggestions on how you should answer. Note that kubelet continuously asks these questions, not just at startup.

Readiness Probe

Can this pod serve traffic?

Currently I have this limited to “can I connect to my database?” That is the absolute must have. If the database is unreachable then this pod is not ready.

One decision you need to make is about partial availability. For example some microservices…

Get a Postgres dump:

pg_dump -h <host-name> -U <db-user-name> --password <database-name> > outfile.dmp

This will prompt for a password and then create the dump.

Some commands that are used occasionally and end up needing a stack overflow search.

Hard Reset

Get rid of any commits that are not pushed and reset to origin.

git checkout master
git reset --hard origin/master

Soft Reset

Get rid of commits not pushed but keep the changes.

git reset HEAD~1 --soft

Developing locally in a microservices environment can be a bit of a pain. Assuming a Kubernetes world, Minikube helps immensely and to take it a step further Telepresence is my new friend.

What I am doing is replacing a service running inside Minikube with one running on my local host (in IntelliJ). This helps to debug and change code quickly without have to build the image and update it in Minikube.

Assuming you have 3 microservices with a flow like Request → ServiceA → ServiceB → ServiceC. …

Using a pre-signed S3 URL to upload a gzip file took some time to figure out so here is what worked for me.

I’m using Spring rest template. Note the content-type and content-encoding headers.

gzip s3 upload
Image Credit

Getting into the world of Ethereum one of the learning curve has been about gas.

Gas is essentially how you track and then compute the cost you need to pay for the transaction you submit to the Etheruem network and is collected by the miners.


gasLimit, startGas, gasUsed, gasRemaining and gasPrice.

The fuel analogy is good but what helps me understand is the unit of measure for each.

I think of all these attributes except gasPrice in the unit “cycle” (thinking about CPU cycles per instruction) while gasPrice is “ETH/cycle”. …

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