Photo by Marc-Olivier Jodoin on Unsplash

If you’ve seen my previous article about Spring-back animation on RecyclerView, you would notice that I don’t like to depend on any third-party libs… rather I would create my own from scratch. This would definitely improve my existing knowledge & also I loved to do such.

This guide would be similar to such, instead of using custom/shared transitions we will play with the views instead. It’s not like I don’t like shared/custom transitions, but it scatters all the animation-related code in different files which would eventually make it harder to track. …


So this is going to be a very easy workflow to achieve a Spring back sort of animation. I said sort-of because a lot of (maybe?) the libraries do it but what we are going to do is build it from scratch so that you understand what actually goes into it & also it’s very fun :).

But let’s first see what we are trying to achieve (below gif).

Gif is playing at 0.5x

So we have a very basic screen with a RecylerView & an effect is going when we either reach at the bottom or to the top of the list on scrolling…


Photo by Marc Reichelt on Unsplash

This guide is a short explanation on simplifying the use of Firebase real-time database in Kotlin via Coroutines. As far as you know, for every database operation, there is an associated callback that will notify you about the success or failure of the operation.

What I really don’t love about callbacks is they break the tendency of executing code in a uniform order. With Java, we can use RxJava but it would still add some boilerplate code & makes the code kind of messy to read. With Kotlin, we have Coroutines which executes code asynchronously in a lightweight thread without…


Photo by Daniele Levis Pelusi on Unsplash

DevOps, one of the important practices that every developer should follow to extensively optimize their tasks. Clearly, it’s not limited to the topic we are discussing but it’s highly used in the industry.

So you may ask what are those practices? Well, there are a lot of uses cases but one of the common use-case in software development is supposed you are working on a project & a person wants to contribute to your work then how can you verify that his commit does not break the project with your latest commit upon merging. Surely you can verify it manually…


Photo by Kelly Sikkema on Unsplash

SQLDelight is a multi-platform library to generate typesafe Kotlin APIs from your SQL statements. It has its special schema file (.sq) where we write the supporting SQL statements which are compile-time safe & its integration with powerful IDE like Android Studio you will get all the benefits like autocomplete, refactoring, etc.

One of my favorite thing about SQLDelight is its support for multiplatform. Anyway, this is not a typical guide on how to use the library their official docs are way better in terms of it.

What is the purpose of this article?

Well, I am going to talk about a specific thing that is types. As…


Photo by benjamin lehman on Unsplash

Room is a powerful library that provides an abstraction over standard SQLite for robust database access. Under the hood, for some part, it uses annotation processing to generate `Dao` & `Entity` classes.

Although the library is very useful there is one thing that I find writing/copy-pasting the same code all the time & that is TypeConverters .

What is a Type Converter?

Room supports only primitive data types (String, int, etc) so to access complex (non-primitive) data you need to write a TypeConverter. A Type Converter is a method annotated with @TypeConverter. It must receive exactly one parameter and have a non-void return type. …

Kaustubh Patange

Scheduling my day tasks with "WorkManager"

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