Hi there 👋🏽

I’m Shiveen and welcome to my blog!

On Note Taking Tools

I have always been a bit of a bike shedder regarding productivity apps, and note-taking apps are probably the most bike-shedded. Personally and professionally, notes have been integral to my learning journey since I was in University when I started to use them thoughtfully. In this post, I will compare various note-taking tools I have used. I will not list the pros and cons per se, but rather my take based on my use cases....

June 19, 2022

Daily Routine

Ever since the pandemic threw the world in chaos, I have been consciously thinking about my work and life and how interconnected they have become, partly due to WFH, partly because I am growing old. Pre pandemic, I never really cared much about daily routines, other than basic things, like I need my coffee by 9 am to function, or, I need to go gym atleast twice a week to not feel shit through the week....

January 17, 2022

Software Is Not A Race

Too often I see people building software and doing changes in an existing piece of code as if they’re texting one…excruciating…line…at…a…time. As if it’s important to get one disjointed piece of functionality out and making up what’s next on the go. This is bad. Software like any other piece of well thought out functionality should be deliberate. Don’t rush into adding a change because the current circumstances confirm it. Check if the change needs to be done based on the requirements of the system....

August 12, 2021

Equality Checks in Kotlin With Unstructured Data

This is a small blog post on equality checks in Kotlin when one of the objects may contain arbitrary data. Let’s say you have an object that looks like: data class ArbitraryData(val id: UUID, val someData: Map<String, Any>) where someData is any json map of data that could contain any untyped data at runtime. Now, if you have two instances of this object with the same data and try to compare the two using the regular equals method, you would get a false result....

June 17, 2021

Dynamodb Gotchas

This is just a collection of things that required some google searches to resolve while working with DynamoDB at work recently. All the code examples here use Kotlin, though, I’m confident that they would still appear in Java. Persisting a DynamoDb Object that extends a class DynamoDB doesn’t automatically work with Abstract classes. For example, let’s say you have an abstract class which contains some common fields (such as the hashKey and the range fields),...

May 19, 2021

Eero Mesh Appreciation Post

My wife and I recently moved into a larger house than my previous place. The move went smoothly, however, I soon had a problem I suspected I was going to have when I first saw the house - it was big for my little TPLink router to handle. I tried moving it around to find a central place since it wasn’t a bad router, it used to handle my gaming and work needs perfectly back when we were in a smaller 2 bedroom apartment, but sadly it couldn’t keep up....

April 9, 2021

Building a Reactive Oauth Client App with SpringBoot and Kotlin Coroutines

Photo by Buzz Andersen on Unsplash Background In this post, I’ll walk through two new exciting things that have happened in the spring ecosystem recently. First is spring webflux support for kotlin couroutines and second is the overhaul of spring security, and the addition of the out of the box oauth2 client support for social logins. For me one of the most impactful new features is the integration with spring coroutines throw the Flow primitive....

June 9, 2020

Covid-19 Musings Part 2

This post is part 2 of this series. Part 1 can be found here. Recently the company I worked for laid off all its employees. Before I go further, I think its worth laying down the context. The company was doing some innovative work in the Fintech SaaS space within Australia/New Zealand and was in various stages between demo to about to sign a contract stage with various companies. However, due the Covid-19 related market downturn — a lot of investors pulled out of final stage funding rounds, resulting in many people losing their jobs....

April 28, 2020

Right Way To Shadow Jar When Using Jetty With Http4k

If you’ve been spring boot for a while, you’re probably familiar with Spring’s bootJar functionality that lets you create a new executable “fat jar” with all its dependencies pre defined. However, while I was building a kotlin app using http4k, which doesn’t come with any such built in tooling I had to resort to using the shadowJar plugin to build a fat jar. However post deploy, the app stopped starting up and I noticed the following error in the logs:...

April 18, 2020

Covid-19 Musings Part 1

This post is part 1 of this series. Part 2 can be found here. Ever since the coronavirus started taking its hold around the communities and economies of the world - it has had a profound impact on everyone. As a result, everyone has had to adapt to this harsh new reality. With all that in mind, I thought it might be worthwhile documenting everything that is going around in my head....

April 12, 2020