Profile Pic

Amit Shekhar

Co-Founder @ CuriousJr, MindOrks, AfterAcademy | Educator | Startup Advisor
From Civil Engineer To Software Developer

From Civil Engineer To Software Developer
20th April 2021

A Self Taught Programmer’s Journey. My transition from a Civil Engineer to a Software Engineer.

What is suspend function in Kotlin Coroutines?

What is suspend function in Kotlin Coroutines?
6th May 2020

In this blog, we are going to learn about the suspend function in Kotlin Coroutines. Suspend function is the building block of the Coroutines in Kotlin. It is important to learn about the suspend function. We will deep dive into the source code of Kotlin to understand it today.

Understanding Higher-Order Functions and Lambdas in Kotlin

Understanding Higher-Order Functions and Lambdas in Kotlin
20th March 2019

This article is for anyone who is curious about the higher-order functions and lambdas in Kotlin but has no idea what they are exactly. The goal is to make you understand what are higher-order functions and lambdas which means that there are few simplifications done while writing this. If you understand what higher-order functions and lambdas in Kotlin are, then my mission will be accomplished.

Kotlin withContext vs Async-await

Kotlin withContext vs Async-await
4th May 2020

In this blog, we are going to learn about the withContext and Async-await in Kotlin. We will also see how the withContext and Async-await differ from each other and when to use which one.

Implement Instant Search Using Kotlin Flow Operators

Implement Instant Search Using Kotlin Flow Operators
27th May 2020

In this blog, we are going to learn how to implement the instant search feature using Kotlin Flow operators in Android application. We will also learn about all the operators used to implement this feature.

MVVM Architecture - Android Tutorial for Beginners - Step by Step Guide

MVVM Architecture - Android Tutorial for Beginners - Step by Step Guide
4th March 2020

In this tutorial, first, we are going to learn about the MVVM architecture in Android and then we will build a project with MVVM architecture. This tutorial is for beginners who want to get started with the MVVM architecture.

Mastering Kotlin Coroutines In Android - Step By Step Guide

Mastering Kotlin Coroutines In Android - Step By Step Guide
13th May 2019

In this blog, we are going to master the Kotlin Coroutines in Android. We will cover what exactly Coroutines are and how they are useful. We will also go through the step by step guide on how to implement Kotlin Coroutines in Android. We will understand why there is a need for the solutions which Kotlin Coroutines provide. We will also talk about the scopes and the exception handling in Kotlin Coroutines.

Android Activity launchMode Explained, Must-know for Android Development

Android Activity launchMode Explained, Must-know for Android Development
8th June 2016

What happens, when we add this launchMode tag in an activity of Android application. Android Activity "launchMode" Explained, Must-know for Android Development.

Jetpack DataStore Preferences

Jetpack DataStore Preferences
5th October 2020

In this blog, we are going to see why we need Jetpack DataStore Preferences, learn how to implement Jetpack DataStore Preferences in our Android application and how can we migrate our SharedPreferences to DataStore Preferences.

PRDownloader — A File Downloader Library For Android

PRDownloader — A File Downloader Library For Android
20th November 2017

PRDownloader: A file downloader library for Android with pause and resume support. I recently published a library, which I believe to be the simplest way to handle downloading in Android with pause and resume support. Overview of the PRDownloader library.

Google Android Developer Interview

Google Android Developer Interview
10th September 2020

We are going to discuss the Google Android Engineer Interview Process and the resources required for the preparation. We will also discuss the types of questions asked for the Android Developer role.

RxJava Tutorials

RxJava Tutorials
24th May 2017

RxJava Tutorials. A Complete Resources To Learn RxJava At One Place. These RxJava tutorials will help you in learning RxJava properly.

RecyclerView Optimization - Scrolling Performance Improvement

RecyclerView Optimization - Scrolling Performance Improvement
3rd September 2020

In this blog, we are going to learn how to optimize the RecyclerView performance in Android. With these optimizations, we can make the RecyclerView scrolling smooth.

Comparing Android NDK and RenderScript

Comparing Android NDK and RenderScript
19th August 2016

In this blog, we will be comparing Android NDK and RenderScript. Both NDK and RenderScript share the common goal of improving the performance of applications. Each has its own advantages and drawbacks.

Performance Tips - Smooth Running Android App

Performance Tips - Smooth Running Android App
1st September 2020

This post is all about making a better Android App (No lags now! only smooth running UI). We will learn what can we do to improve the performance of an Android application.

Understanding Types Of Observables In RxJava

Understanding Types Of Observables In RxJava
13th December 2017

In this blog, we are going to learn the types of Observables in RxJava. Observable, Flowable, Single, Maybe, Completable. Then, we can use these types of observables in RxJava correctly.

Android Development Useful Tools

Android Development Useful Tools
9th September 2016

Over the years, these are the Android development tools I’ve found most useful. I consistently use these tools to build apps. I recommend you take a look at them and see whether they’re a good fit for your tool chain.

Debugging Android Databases And Shared Preferences In The Easiest Way

Debugging Android Databases And Shared Preferences In The Easiest Way
16th November 2016

Debugging your application is an important part of the Android Development. When it comes to debugging databases in an android application, it is very difficult to see what’s happening inside the database. The same is true with shared preferences.

Battery Optimization for Android Apps

Battery Optimization for Android Apps
5th January 2017

Reducing battery usage in an android application. Battery Usage Reduction is also an important part of an android development as this optimization will ultimately lead to retain the user, as many times the user uninstalls the application because of the battery draining issue.

How The Android Image Loading Library Glide and Fresco Works?

How The Android Image Loading Library Glide and Fresco Works?
15th August 2017

I am writing this article to share my knowledge which I have learned the hard way. In Android, working with images(bitmaps) is really difficult as the application goes out of memory(OOM) very frequently. OOM is the biggest nightmare for the Android developers.

Android App Optimization Using ArrayMap and SparseArray

Android App Optimization Using ArrayMap and SparseArray
14th October 2016

This article will show why and when to use ArrayMap and SparseArray to optimize your Android Applications. Whenever you need to store key -> value pairs, the first data structure that probably comes to mind for accomplishing this is HashMap. HashMap is quite flexible, so it may be tempting to use it all over the place, without really thinking about their possible side effects.

Android Development Best Practices

Android Development Best Practices
30th September 2016

Let’s explore some best practices in designing and developing Android apps. For starters, when you develop an Android application, you should prepare it to be run on a wide variety of devices and circumstances. Every Android device is a family in itself. When one member of the family goes haywire, it means the rest of the family is also likely to be affected.

Understanding RxJava Defer Operator

Understanding RxJava Defer Operator
10th April 2019

In this blog, we are going to learn the RxJava Defer Operator. We will understand when to use Defer operator depending on our use-case. Most of the time, we do mistake while using the RxJava Defer Operator. Let's understand it clearly to avoid the mistake.

Kotlin Flow Zip Operator for Parallel Multiple Network Calls

Kotlin Flow Zip Operator for Parallel Multiple Network Calls
12th June 2020

In this tutorial, we are going to learn about the Kotlin Flow Zip Operator and how to make the multiple network calls in parallel using it. This tutorial will also help you in doing any type of background tasks in parallel using Kotlin Flow Zip Operator.

Exception Handling in Kotlin Flow

Exception Handling in Kotlin Flow
7th May 2020

In this blog, we are going to learn about the Exception Handling in Kotlin Flow. We will also learn how to handle errors in the real use-cases in Android Development.

Creating Flow Using Flow Builder in Kotlin

Creating Flow Using Flow Builder in Kotlin
8th May 2020

In this blog, we are going to discuss the different types of flow builders and how to create Flow using Flow Builder. We will learn to create Flow with examples.

Understanding Terminal Operators in Kotlin Flow

Understanding Terminal Operators in Kotlin Flow
7th May 2020

In this blog, we are going to learn about the Terminal Operators in Kotlin Flow. The Flow APIs in Kotlin Coroutines are very helpful when it comes to handling the stream of data.

Understanding RxJava Create and fromCallable Operator

Understanding RxJava Create and fromCallable Operator
11th April 2019

In this blog, we are going to learn the RxJava Create and fromCallable Operators. We will understand when to use the Create operator and when to use the fromCallable operator depending on our use-case. Most of the time, we do mistake while using RxJava Operators. Let's understand it clearly to avoid the mistake.

Kotlin Flow Retry Operator with Exponential Backoff Delay

Kotlin Flow Retry Operator with Exponential Backoff Delay
27th July 2020

In this tutorial, we are going to learn about the Kotlin Flow retry and retryWhen operators and how to retry the task with exponential backoff delay using it.

Using ThreadPoolExecutor in Android

Using ThreadPoolExecutor in Android
10th July 2016

This article will cover thread pools, thread pool executors, and their use within Android. We’ll cover these topics thoroughly, with lots of example code. A thread pool manages a pool of worker threads (the exact number varies depending upon its implementation).

A Complete Guide To Learn Dagger 2

A Complete Guide To Learn Dagger 2
8th May 2017

Dagger 2 is a dependency injection for Android. Dagger 2 is a dependency injection (DI) framework. Dependency Injection in build upon the concept of Inversion of Control which says that a class should get its dependencies from outside. In simple words, no class should instantiate another class but should get the instances from a configuration class.

How Voice And Video Call Works?

How Voice And Video Call Works?
10th November 2017

Voice over Internet Protocol (VoIP) is one of the most popular standards for voice and video calling over the web. This post is all about how the voice and video call works on the high level. We all use voice and video on the various platform like WhatsApp, Skype, Messenger, Facebook, and etc.

I have 1 year of experience in Android. Now What?

I have 1 year of experience in Android. Now What?
3rd November 2017

Friends, many of you asked me this question, so I thought of writing this as an article to answer this good question so that most of us get benefited. Let’s start, how we all have started the Android Development. We all use to write the whole code in the single class that is Activity either it’s data fetching or any type of logic.

Need for the App Startup Library

Need for the App Startup Library
11th June 2020

In this blog, we are going to discuss why there is a need for the App Startup Library. Most importantly, we will learn what are the problems it solves and how it helps us in improving the App Startup time.

OkHttp Interceptor - Making the most of it

OkHttp Interceptor - Making the most of it
28th February 2020

In this blog, we will learn how to work with the OkHttp Interceptors. We will also see the real use cases where we can use it and how we can use it to get the most of it. In Android, we have so many use-cases that can be done using the OkHttp Interceptors.

Android Interview Questions

Android Interview Questions
2nd August 2017

Your Cheat Sheet For Android Interview Questions. I am very fortunate to have the experience of taking interviews of many Android Developers. In the whole process, I have learned a lot and also cracked the interviews of top companies including startup and MNC.

Understanding RxJava Subject — Publish, Replay, Behavior and Async Subject

Understanding RxJava Subject — Publish, Replay, Behavior and Async Subject
27th February 2017

This article is all about the Subject available in RxJava. A Subject is a sort of bridge or proxy that is available in some implementations of ReactiveX that acts both as an observer and as an Observable.

Understanding Context In Android Application

Understanding Context In Android Application
18th May 2017

What is Context? As there are different types of context in Android, we as an Android Developer often get confused about which context to use at which place. So let’s understand what are those, how to use those and when to use which one.

A Complete Guide To Learn Kotlin For Android Development

A Complete Guide To Learn Kotlin For Android Development
18th May 2017

A Complete Resources and Tutorials To Learn Kotlin For Android Development At One Place. We will provide all the topics with the resources to learn from which are important in Kotlin for Android Development.

Unit Testing ViewModel with Kotlin Coroutines and LiveData

Unit Testing ViewModel with Kotlin Coroutines and LiveData
22nd April 2020

In this article, we are going to learn how to write the unit-test for ViewModel with Kotlin Coroutines and LiveData that follows a basic MVVM Architecture. We will write the unit-test for the ViewModel which makes a network call and then, validate if our ViewModel is working as expected or not.

Parallel Multiple Network Calls Using Kotlin Coroutines

Parallel Multiple Network Calls Using Kotlin Coroutines
23rd April 2020

In this tutorial, we are going to learn how to make the multiple network calls in parallel using Kotlin Coroutines. We will learn to write the code inside the ViewModel with Kotlin Coroutines and LiveData that follows a basic MVVM Architecture. This tutorial will also help you in doing any type of background tasks in parallel using Kotlin Coroutines.

Room Database with Kotlin Coroutines in Android

Room Database with Kotlin Coroutines in Android
29th April 2020

In this tutorial, we are going to learn how to use Room Database with Kotlin Coroutines. We will learn to write the code inside the ViewModel with Kotlin Coroutines that follows a basic MVVM Architecture.

Using Bitmap Pools in Android

Using Bitmap Pools in Android
19th June 2016

Image heavy applications have to decode many images, so there will be continuous allocation and deallocation of memory in application. This results in frequent calling of the Garbage Collector (GC). And if you call the GC too many times, your application UI freezes.

How To Learn Android Development?

How To Learn Android Development?
31st July 2017

How to learn Android app development? Here, I have tried to cover most of the important things in the Android Development that I have learned the hard way. Learning Android Development is a step by step process, so must learn it step by step. So this guide will also show how to learn android app development step by step.

How does the Kotlin Multiplatform work?

How does the Kotlin Multiplatform work?
4th March 2020

The Kotlin Multiplatform feature is very promising. And, in this blog, we are going to learn how does the Kotlin Multiplatform work? When we know how it works, we can get the most of it.

Droid Flight: A MindOrks initiative to promote Android Learning

Droid Flight: A MindOrks initiative to promote Android Learning
24th February 2020

It has been more than three years since MindOrks started taking shape as a community for Tech learning. In these three years, we as a team, running MindOrks have done our best to promote Tech learning and we will continue to give our best in promoting Tech learning for everyone who wishes to learn and grow with us. We as a team believe that learning is a bilateral process where the one who teaches, learns from those who are learning too.

The New Dagger 2 Android Injector

The New Dagger 2 Android Injector
16th September 2017

How to use the new Dagger 2 Android Injector? This article is all about implementing the new Dagger 2 Android Injector in an Android application. The new dagger 2 is released with the Android support module and the Android compiler.

Android Developer should know these Data Structures for Next Interview

Android Developer should know these Data Structures for Next Interview
23rd December 2019

In this blog, we are going to cover all the data structures which are must for any Android Developers when it comes to cracking the interview and knowledge both. Although there are many more to learn, we will cover the most used and the most frequently asked in Android Interview.

RxJava Operators Tutorial - Learn by Examples

RxJava Operators Tutorial - Learn by Examples
13th December 2019

I believe there is an operator for everything in RxJava. In this blog, we are going to learn RxJava operators by examples in which we will cover some typical problems in Android and its solution using the RxJava operators.

Implement Search Using RxJava Operators

Implement Search Using RxJava Operators
16th October 2017

Nowadays, most of the applications that we use in our daily life come with a search feature which provides us a facility to get things very quickly we are looking for. So, having a search feature is very important. And, we as a developer have a responsibility to implement it in a better way.

Implement Caching In Android Using RxJava Operators

Implement Caching In Android Using RxJava Operators
19th March 2019

Implement Caching In Android Using RxJava Operators with three data sources as memory, disk, and network. First, we need to understand why caching is useful? Caching is very useful in the following situations: Reduce network calls, we can reduce the network calls by caching the network response. Fetch the data very fast, we can fetch the data very fast if it is cached.

Why You Must Try Kotlin For Android Development ?

Why You Must Try Kotlin For Android Development ?
10th November 2016

Kotlin is a statically typed programming language for the JVM, Android and the browser.

Understanding inline, noinline, and crossinline in Kotlin

Understanding inline, noinline, and crossinline in Kotlin
11th April 2019

In this blog, we are going to learn the inline, noinline, and crossinline keywords in Kotlin. We will understand when to use the inline, when to use noinline and when to use the crossinline in Kotlin depending on our use-case. Most of the time, we do mistake while using these keywords inline, noinline, and crossinline in Kotlin. Let's understand it clearly to use it properly.

Understanding RxJava Zip Operator With Example

Understanding RxJava Zip Operator With Example
20th March 2019

In this blog, we are going to learn the RxJava Zip Operator with an example. Zip combine the emissions of multiple Observables together via a specified function and emit single items for each combination based on the results of this function. We will also see the advantages of Zip Operator.

RxJava Operator - Concat Vs Merge

RxJava Operator - Concat Vs Merge
21st January 2019

RxJava Operator - Concat Vs Merge. RxJava has so many operators. In order to use them correctly, we must know about them. Here, we will discuss the Concat and the Merge Operators.

Understanding RxJava Timer, Delay, and Interval Operators

Understanding RxJava Timer, Delay, and Interval Operators
9th April 2019

In this blog, we are going to learn the RxJava Timer, Delay, and Interval Operators. We will understand when to use Timer operator, when to use Delay operator and when to use Interval operator depending on our use-case.

Using Constraint Layout in Android

Using Constraint Layout in Android
22nd September 2016

Google introduced ConstraintLayout, a new layout for Android at their I/O developer event this year. ConstraintLayout combines a simple, expressive and flexible layout system with the powerful features built into the Android Studio Designer tool. It makes it easier to create responsive user interface layouts that adapt automatically to different screen sizes and changing device orientations.

Improve Your Android Coding Through Annotations

Improve Your Android Coding Through Annotations
1st May 2017

Annotations are Metadata. And Metadata is a set of data that gives information about other data. There are many ways in which annotations can be used. But, here we will talk about how the annotations can be used to improve our android coding.

How to download a file in Android and show the progress very easily?

How to download a file in Android and show the progress very easily?
25th January 2019

How to download a file in Android and show the progress very easily? Most of the time while developing Android Apps, we come across a common use-case that is to download a file in Android and show the progress in the progress dialog. At MindOrks, we have an open-source library PRDownloader that solves this problem very easily.

Why Android developers should consider FlatBuffers over JSON

Why Android developers should consider FlatBuffers over JSON
17th April 2016

FlatBuffers vs JSON-You may be asking - why use new tools if we already have standard JSON, JSON-parser like GSON, and Jackson. Well, give FlatBuffers a try and you’ll find that they’re significantly faster than JSON.

The Best Android Networking Library for Fast and Easy Networking

The Best Android Networking Library for Fast and Easy Networking
3rd July 2016

Fast Android Networking Library (supports all types of HTTP/HTTPS request like GET, POST, DELETE, HEAD, PUT, PATCH). Why should you use Fast Android Networking Library? How to use the Fast Android Networking library?

RxJava + Fast Android Networking

RxJava + Fast Android Networking
1st August 2016

Fast Android Networking now supports RxJava. Let’s explore why RxJava support is important. RxJava is used for reactive programming. In reactive programming, the consumer reacts to the data as it comes in. Reactive programming allows for event changes to propagate to registered observers.

Migrating from RxJava 1.0 to RxJava 2.0 and Learn RxJava by Examples

Migrating from RxJava 1.0 to RxJava 2.0 and Learn RxJava by Examples
26th August 2016

This article will help you learn RxJava 2.0 by example. It will also show you how to migrate from RxJava 1.0. If you are just getting starting with RxJava, here’s a sample project to learn it with examples. You can dive right in, build the project, and start learning.

Creating Custom Annotations in Android

Creating Custom Annotations in Android
1st September 2016

Annotations are Metadata. And Metadata is a set of data that gives information about other data. So in this case, annotations are essentially just information about your code.

Android Code Style And Guidelines

Android Code Style And Guidelines
26th October 2016

By following standard coding style and guidelines, we can build a better android application. If you follow a standard coding style in android, it will be easier for you and also for others to understand your code easily.

Awesome Android Open Source Libraries

Awesome Android Open Source Libraries
1st December 2016

Best Android Open-Source Libraries. As you know that using third-party libraries in your projects can save you a lot of time and also make the projects bugs-free. The main reason behind is that the open source projects are being developed by the whole community of developers with love.

Amazing Open Source Android Apps

Amazing Open Source Android Apps
16th September 2016

By using and examining open source apps, you can learn how to build better apps yourself. The following are my picks for the top open source Android projects. I’ve found these helpful in proving my own ability to ship better production apps. From the source code of the below projects, you’ll be able to learn a ton of best practices for Android development.

Google Releases The Developer Preview Of Android Things (IOT)

Google Releases The Developer Preview Of Android Things (IOT)
13th December 2016

What is Android Things? Android Things allows developers to build a smart device using Android APIs and Google Services. This takes the usual Android development stack — Android Studio, the official SDK, and Google Play Services — and applies it to the IoT.

Android Things Tutorials — Getting Started

Android Things Tutorials — Getting Started
16th December 2016

Android + Internet Of Things = Android Things. This article is completely about getting started with Android Things application and how to build an Android Things application?

Using SnapHelper in RecyclerView

Using SnapHelper in RecyclerView
18th January 2017

SnapHelper is a helper class that helps in snapping any child view of the RecyclerView. For example, you can snap the firstVisibleItem of the RecyclerView as you must have seen in the play store application that the firstVisibleItem will be always completely visible when scrolling comes to the idle position.

Use StrictMode To Find Things You Did By Accident In Android Development

Use StrictMode To Find Things You Did By Accident In Android Development
27th January 2017

As long as we are human, we are bound to make mistakes. StrictMode is a developer tool which detects things you might be doing by accident and brings them to your attention so you can fix them.

Android App Performance Metrics

Android App Performance Metrics
13th February 2017

This article is completely about the metrics that you should measure continuously while android application development. This metric is very important as it tells, how your android application is being experienced by the end user.

Why use Facebook’s Android Device Year Class Library?

Why use Facebook’s Android Device Year Class Library?
29th June 2017

Year Class Library by Facebook. Building for the next billion users using the Year Class Library. This library is very important.

Android Package Name Vs Application ID

Android Package Name Vs Application ID
11th August 2017

Creating multiple APKs for different purposes. Nowadays, many times we come to the situation that we need the APK with another different package name. Most of us do it easily, but sometimes we got stuck because of applicationId and packageName.We must know the difference between packageName and applicationId.

How To Become A Complete Android Developer

How To Become A Complete Android Developer
4th September 2017

A complete guide to become a complete Android Developer. How to be an expert android developer? I have met many great Android developers all around the world. I have learnt a lot from them and tried to collect things that we should know to become a complete Android Developer.

Implementing EventBus With RxJava — RxBus

Implementing EventBus With RxJava — RxBus
29th September 2017

RxBus implementation with RxJava2. So, let’s see how we can create RxBus using RxJava 2. First of all, We must have the knowledge of subject in RxJava. For that you can refer my previous article on RxJava Subject.

Creating Custom Model For Android Using TensorFlow

Creating Custom Model For Android Using TensorFlow
17th March 2017

How to train custom model for Android using TensorFlow.

Android Memory Leaks InputMethodManager Solved

Android Memory Leaks InputMethodManager Solved
6th May 2016

Main Activity is not garbage collected even after finish because it is referenced by InputMethodManager indirectly.

Awesome Android Complete References At One Place

Awesome Android Complete References At One Place
15th June 2016

Awesome Android Complete Reference Link

Good code is its own best documentation

Good code is its own best documentation
7th August 2016

Good code is like a good joke — it requires no explanation.

Every Programmer Should Read This Book

Every Programmer Should Read This Book
12th December 2016

Clean Code — A Handbook of Agile Software Craftsmanship

Best Articles on Android That We Published In 2016

Best Articles on Android That We Published In 2016
20th December 2016

Top articles on Android that are actually worth reading

Thank you note from your Mindorks community

Thank you note from your Mindorks community
1st March 2017

Today is a special day for us, our Mindorks Blog has reached 3000 subscribers in 80 days since it’s inception.

Android TensorFlow Machine Learning Example

Android TensorFlow Machine Learning Example
6th March 2017

Machine Learning: Integrating Tensorflow in Android

Why Every Developer Should Write Blog

Why Every Developer Should Write Blog
25th July 2017

Today I am going to tell you why a developer should write blog. All programmers should write blog.

Best Articles on Android That We Published In 2017

Best Articles on Android That We Published In 2017
24th December 2017

Top articles on Android that are actually worth reading. First of all, I must say that I am very fortunate to have the readers like you. It encourages me to share my knowledge with you and at the same time, I am learning from you.

Learners From Our Courses Work At
logo googlelogo facebooklogo microsoftlogo gojeklogo directilogo uberlogo olalogo zomatologo paytmlogo hikelogo rakutenlogo zolandologo swiggylogo makemytrip