Photo by Thomas Jensen on Unsplash

If you have been doing android development for quite some times then you might have heard about multi-module projects. I myself have invested time and effort in learning modular programming. It works pretty well when you get modularization right 😉.

Well, in this story I am not going to talk about how to modularize a project. It is more about making your life easier after you modularize 😃. If you haven’t read about my previous story on Gradle’s dependency resolution to super charge your build time I recommend to read it as this story builds on it.

We are going…


After implementing various projects with multi-module approach I can tell you that modular approach is the way to go if you can afford it.

If you haven’t read my blog on creating a custom gradle plugin to facilitate multi-module project I recommend you to read it (this is not needed to understand what I am going to talk in this post but it will save you a lot of time in future).

For those feeling adventurous (I strongly recommend to go through the post before checking out sample project) here is the link to the sample repository, focus on the…


Photo by Natalya Letunova on Unsplash

“Requirement is the mother of innovation”

I recently had a requirement to implement a curved bottom navigation with animation inspired by this pinterest post.

https://www.pinterest.com/pin/648729521319201054/

Here is the final demo of what we are going to build


Photo by Stanislav Kondratiev on Unsplash

In any mobile app, Splash Screen is the first thing that the user will see. Despite this I have seen many developers implement splash screen with a fixed timeout, making the users of their app wait even though the app is not doing any initialization.

Let’s think about this, suppose you use 2 seconds of delay for splash screen and users open your app about 15 times (just imagine) a day. Then you are wasting 30 seconds a day for each user. That’s roughly 3 hours per year. In short you are taking away 2 moves per year from each…


Photo by Yomex Owo on Unsplash

Linux is a proven system for many tasks. But one of the things that I think linux is behind is in multimedia, specially audio. We have all experienced audio in windows and how good it is. Most of the time this goes to the proprietary drivers that’s available in windows. These drivers are specially tuned for the sound hardware and do pretty good job of producing high quality sound. But in the world of linux, there is lack of or even no proprietary audio drivers to my knowledge.

But fear not, PulseEffects to the rescue. PulseEffects is a sound processing…


Photo by June Admiraal on Unsplash

There are many architectures for developing android applications like MVP, MVVM, MVI, etc. By architecture I am referring to presentation layer architecture, you may architect your application using Clean architecture, Hexagonal architecture, Onion architecture, etc. One of the architectures that have proven to be effective is unidirectional state flow which is highly embraced in the web world with React and Redux. In this story, I am going to talk about USF (Unidirectional State Flow) architecture which is inspired by Kaushisk’s talk and his sample app.

This story is not about an introduction to USF. There are many great articles and…


Debugging the layout is one of the important task for any Android developer. Have you have ever tried enabling Show layout bounds during debugging. These are the Steps that I usually take during debugging the layout.

  1. Some view doesn’t look right (The bug)
  2. Go to settings
  3. Then go to systems
  4. Then developer options
  5. Then enable Show layout bounds
  6. Return to the app (And most probably forget which view I was going to debug 😂).

This is real pain when you have to constantly enable and disable this option for debugging. But fear not my friend ADB to the rescue. …


Photo by Pablo Orcaray on Unsplash

Who doesn’t love offline applications. But with multiple sources of data comes great responsibility. In this story, I am going to talk about how I typically implement offline applications.

What is Single Source Of Truth?

Well, the name is self sufficient. It means we should only be using a single source as our ground truth. In my opinion SSOT(Single Source Of Truth) is very scalable pattern. When I was building chat application in my company, I implemented SSOT. At first it seemed like over engineering. But after few months the hard work paid off. Being a chat app, offline feature…


Photo by Christopher Gower on Unsplash

It is recommended to keep your system up to date. But there is no guarantee that the update process will always go smoothly. So I think there should be a contingency plan if the update goes wrong.

A little background on myself. I am a software developer and use Arch Linux (😍) as my daily driver. I also update my system every saturday so I have time to fix if something goes wrong. I have been using Arch Linux for past two years and never had some major issues until today.

It was a normal day. I woke up and…


Photo by Adam Chang on Unsplash

Well, in this age of Android development, apps without recycler view is incomplete. Most of the application use network to fetch the data and show in recycler view. So one of the common pattern is to show a loader when the app is fetching the data from the network. Then display a empty view if there is no data or a error view with retry buttons.

In my opinion, this is the kind of situation where using a library will be a overkill and implementing for every list in the app is real pain.

Compound Control to the rescue. Here…

Suson Thapa

android developer

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