Jay Rambhia's Blog

A blog about exploring various aspects of android app development including RxJava, clean architecture, UI components, and how not to give up to Android Studio and Gradle! About me

Looking for something specific? Check out Archives.

Follow

My apps on Play Store

Taskito - To-Do List & Planner

Taskito - To-Do List & Planner

Task management app to help you organize day to day tasks and achieve long term goals.

Get it on Google Play Download on the App Store

Featured article series

redux architecture

Redux architecture and Android

Learn the Redux architecture and implement the clean architecture it in your Android codebase. This series of posts explores the depth of Redux and guides you through implementing the architecture in Kotlin for your android app.

mastering android ui

Playing around with Android UI

This is a collection of various articles that showcase my experiments with Android UI. It emphasizes on the importance of UI and UX in making an app successful. Some of the articles take inspiration from other apps and try to replicate the UI and UX.


Discover

Articles

Ports and Adapters (Hexagon) architecture

Ports and Adapters architecture also known as Hexagon architecture was first introduced and conceptualized in 2005 by Dr. Alistair Cockburn. It can also be referred as an object structural pattern.

»
Posted in Android

Ports and Adapters (Hexagon) architecture

Ports and Adapters architecture also known as Hexagon architecture was first introduced and conceptualized in 2005 by Dr. Alistair Cockburn. It can also be referred as an object structural pattern.

»
Posted in Android

Introduction to MVVM architecture in Android

MVVM stands for Model-View-ViewModel. Google has started recommending usage of this architecture to develop android apps and have provided a lot of new tools and frameworks to support implementation of this architecture. ViewModel and LiveData being the basics to implement it. Google is also working towards providing support to integrate these components seamlessly with android activity and fragment lifecycles. Although the current state of these tools is not ideal, it’s pretty stable and works well.

»
Posted in Android

Implement the Battleship gameplay using Redux in Android

Continuing from the previous article - Battleship game in Kotlin, we will use Redux architecture to write the gameplay. Redux is a predictable state container with unidirectional data flow. As we write our reducers and middleware, you’ll realize what predictable state container brings to the table. It makes everything straight forward and easy to debug.

»
Posted in Android

Battleship game in Kotlin

Battleship is a game of two players which is played on grids on which each players fleet of ships are marked. Players take turns to take shots at the other player’s ships. The objective of the game is destroy the opponent’s fleet. Read more on Wikipedia. Building this game is also a very famous design interview question.

»
Posted in Android

Add Middleware to your Redux architecture implementation

Middleware is a crucial part of Redux architecture. It helps you have side effects in your Redux architecture - making asynchronous API calls, querying your database, handling navigation, logging, etc. No Redux implementation is complete without side effects or middleware. It’s what drives your app.

»
Posted in Android

Write your own Redux implementation in Kotlin

In the previous articles, I talked about Redux architecture and the Role of middleware in Redux. There’s no better way to learn something than implementing it yourself. We are going to write a very lightweight implementation of Redux architecture in Kotlin which can be used for our android app.

»
Posted in Android

Middleware in Redux architecture for android application

In the previous article, I wrote about Redux architecture and how it can be used in an android app - Redux architecture for android apps. At the end of the article, I briefly talked about Middleware. I found Middleware to be the most confusing part about the Redux architecture and none of the posts about Redux architecture talk about much about it so it’s quite difficult to wrap your mind around it.

»
Posted in Android

Redux architecture for android apps

I’m sure you must have heard about Redux architecture from your front end colleagues and friends and maybe from someone who is an app developer. Redux is a very popular framework for a predictable state container for Javascript apps. It has become quite ubiquitous in its usage with React to develop scalable web apps. Redux is inspired from Flux architecture which emphasizes on unidirectional data flow. Redux takes some good parts from Flux - store, actions, dispatcher, unidirectional data flow and improves upon it to.

»
Posted in Android

Eventbus in Kotlin with Rx

EventBus is a design pattern which allows publish-subscribe style communication without requiring components to registering with each other. Most of the android developers have used a library for EventBus. EventBus by Greenrobot is a pretty famous library and widely used. It was quite impressive how you could send any object and the subuscriber would receive it without any hassles.

»
Posted in Kotlin

Android Lint Deep dive - Advanced custom Lint rules

This is the second article in the Android Lint series. In the previous article, we talked about basics of Android Lint tool, how to write a custom lint rule, register the issue and set it up. In this article, we shall explore more about Lint and write a lint rule which is a bit advanced.

»
Posted in Android

How to get away with READ/WRITE permissions on Android

Android has been using permissions since its beginning but never really enforced the correct usage until Marshmallow and developers took advantage of it and went rampant. Since Marshmallow (API 23, Android 6.0), android ecosystem introduced permission requests and now we have to ask user to explicitly provide permissions which is really good in the sense of privacy for the users, but adds a lot of work for developers and provides kind of bad user experience.

»
Posted in Android