Image for post
Image for post

Android Kotlin Extension Gradle plugin is deprecated in favor of ViewBinding. That marks the end of too good to be true kotlinx.android.synthetic bindings for XML files. While synthetics were very convenient they had the following shortcomings

  1. They only worked in Kotlin and are not supported in Java
  2. They pollute the global namespace, as in every view is available everywhere in your app.
  3. They don’t expose nullability information

All of the above is solved in the new View Binding library. In one of my projects, there is heavy use of synthetics. In absence of an automated migration tool, it is a…


Image for post
Image for post

Slow build speeds are not unfamiliar to us Android Developers. It specifically becomes a nuisance when your codebase is large. Nowadays Kotlin is the preferred choice of development language for many developers(including myself). Since Kotlin is known to have larger build times then Java it becomes even more important keep a tab on those build times.

There are many build performance optimizations techniques and tutorials are available out there that one can apply to keep build speeds in check. However, one also needs to measure the efficacy of those optimizations. Benchmarking builds after every change can be a tedious and…


Image for post
Image for post
NEXRAD Render with 16 bit Floats

In this article, we are going to use Half data type from the Android platform and also explore the caveats of it.

This post is add on to a previous 3 part article series.

1. How to draw 2.6 million polygons on Android at 60 FPS: The Problem Statement

2. How to draw 2.6 million polygons on Android at 60 FPS: The First Render

3. How to draw 2.6 million polygons on Android at 60 FPS: The Optimizations

4. Bonus How to draw 2.6 million polygons on Android at 60 FPS: Half the data with Half Float

Full working sample…


Image for post
Image for post
Nexrad L3 Dataset

In last article I explained a problem statement that required us to draw 2.6 million polygons in realtime at 60 FPS. There are three ways to do this on Android in my understanding. First, using Android Canvas APIs, Second OpenGL, and Third the new Vulkan APIs.

This post is part 2 of 3 part article series.

1. How to draw 2.6 million polygons on Android at 60 FPS: The Problem Statement

2. How to draw 2.6 million polygons on Android at 60 FPS: The First Render

3. How to draw 2.6 million polygons on Android at 60 FPS: The Optimizations


Image for post
Image for post

In last article we were able to render L3 datasets with 20 FPS, however, we could not even see the L2 dataset on screen. In this article, I will be throwing light at some optimizations which can help us achieve our final goal i.e. render full L2 dataset at 60FPS.

This post is part 3 of 3 part article series.

1. How to draw 2.6 million polygons on Android at 60 FPS: The Problem Statement

2. How to draw 2.6 million polygons on Android at 60 FPS: The First Render

3. How to draw 2.6 million polygons on Android at…


Image for post
Image for post

Weather visualizations are mesmerizing to the eyes, and, they are equally fascinating from a technical standpoint. In this article series we are going to explore how can you render such a beautiful visualization with little understanding of data and Computer Graphics.

This post is part 1 of 3 part article series.

1. How to draw 2.6 million polygons on Android at 60 FPS: The Problem Statement

2. How to draw 2.6 million polygons on Android at 60 FPS: The First Render

3. How to draw 2.6 million polygons on Android at 60 FPS: The Optimizations

Full working sample for this…


Image for post
Image for post

I have been developing Android apps for about 6.5 years now. For every small or big Android app I have churned out, I have blindly used Gson for serialization and deserialization. Gson seemed to be flawless as it almost read my mind.

This changed in one of my recent Kotlin only project. Like every other project we started off with Gson here as well. But then, things changed when we started facing dreaded NullPointerExceptions. But wait, did I not say Kotlin? And isn't Kotlin supposed to be our solution for this billion dollar problem?

Well no! Kotlin can only do…


In my last article I listed out some of the issues that we faced when trying to setup AndroidX Testing Framework with Espresso. While there were many issues, in the end tests ran successfully and I hoped this was one time thing.

Turns out that was not the case at all!

We are a small team which can’t afford to have full fledged test suits just yet. We decided to be selective. First, we wanted to write a smoke test suite for integration testing. Secondly we want to write UI unit tests for important screens. These two type of tests…


Image for post
Image for post

In my brief experience with Android developers and community so far I have seen lot of people talking about automated testing and its importance, but a very few people get the chance to actually write extensive tests for their code. They hardly ever have time for it. I also happen to be one of them. Although I have heard, read and talked about it a lot, I have very limited hands on experience.

In one of the apps I am currently working on, team finally decided to start writing tests for good. We were first aiming to build a smoke…

Abhishek Bansal

Android and all things Tech

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