Jackson Kotlin extension and reified types
Jackson Kotlin module library is a pleasure to use. It greatly simplifies gnarly code, specifically one's involving TypeReference. Consider a sample json which looks like this: {"a" : ["b", "c"],"b" :...
View ArticleDeriving a Kotlin "Try" type
Functional programming languages like Scala often have a type called "Try" to hold the result of a computation if successful or to capture an exception on failure. This is an incredibly useful type,...
View ArticleCoroutine based Spring boot webflux application
I have worked with Spring Framework for ages and it still manages to surprise me with how cutting edge it continues to be but at the same time enabling a developer to put together a fairly sane app.The...
View ArticleProject reactor and Caching with Caffeine
So you have a function which takes a key and returns a project reactor Mono type. Mono<String> get(String key) { Random random = ThreadLocalRandom.current(); return Mono.fromSupplier(() -> key...
View ArticleJson Patch and Json Merge Patch in Java
Json Patch and Json Merge Patch both do one job well - a way to represent a change to a source json structure. Json Patch does it as a series of operations which transforms a source document and Json...
View ArticleSpring Endpoint to handle Json Patch and Json Merge Patch
In a previous blog post I went over the basics of Json Patch and Json Merge Patch and how a code that performs these operations looks like. In this post I will go over the details of how to expose a...
View ArticleKotlin "Result" type for functional exception handling
In a previous post I had gone over how a "Try" type can be created in Kotlin from scratch to handle exceptions in a functional way. There is no need however to create such a type in Kotlin, a type...
View ArticleGoogle Cloud Build - Hello World
I have been exploring Google Cloud Build recently and this post is a simple introduction to this product. You can think of it as a tool that enables automation of deployments. This post though will not...
View ArticleCloud Build - CI/CD for a Java Project
In a previous blog post I went over the basics of what it takes to create a configuration for Cloud Build. This post will expand on it by creating a functional CI/CD pipeline for a java project using...
View ArticleCloud Build and Gradle/Maven Caching
One of the pain points in all the development projects that I have worked on has been setting up/getting an infrastructure for automation. This has typically meant getting access to an instance of...
View ArticleGoogle Cloud Deploy - CD for a Java based project
This is a short write-up on using Google Cloud Deploy for Continuous Deployment of a Java-based project. Google Cloud Deploy is a new entrant to the CD space. It facilitates a continuous deployment...
View ArticleService to Service call patterns in Google Cloud - GKE
This is a series of posts that will explore service to service call patterns in some of the application runtimes in Google Cloud. This specific post will explore GKE without using a service mesh and...
View ArticleService to Service call patterns - GKE with Anthos Service Mesh on a single...
This is second in a series of posts exploring service to service call patterns in some of the application runtimes on Google Cloud. The first in the series explored service to service call patterns in...
View ArticleService to Service call patterns - Multi-cluster Service
This is third blog post as part of a series exploring service to service call patterns in different application runtimes in Google Cloud.The first post explored Service to Service call pattern in a GKE...
View ArticleCloud Bigtable - Write and Retrieval
This is a quick write up based on a few days of experimentation with Cloud Bigtable, with the following objectives:1. Using an emulator for local development2. A high level schema design with retrieval...
View ArticleService to Service call pattern - Using Anthos Service Mesh
Anthos Service Mesh makes it very simple for a service in one cluster to call service in another cluster. Not just calling the service but also doing so securely, with fault tolerance and observability...
View ArticleService to Service Call Pattern - Multi-Cluster Ingress
Multi-Cluster Ingress is a neat feature of Anthos and GKE (Google Kubernetes Engine), whereby a user accessing an application that is hosted on multiple GKE clusters, in different zones is directed to...
View ArticleGoogle Cloud Java Client — ApiFuture to Reactive types
Google Cloud Java Client libraries use a ApiFuture type to represent the result of an API call. The calls are asynchronous and the ApiFuture type represents the result once the call is completed.If...
View ArticleModeling one-to-many relation in Firestore, Bigtable, Spanner
I like working with services that need little to no provisioning effort — these are typically termed as Fully Managed services by different Providers.The most provisioning effort is typically required...
View ArticleCalling Google Cloud Services in Java
If you want to call Google Cloud Services using a Java based codebase, then broadly there are two approaches to incorporating the client libraries in your code — the first, let’s call it a “direct”...
View Article