Home
Mahendran
Cancel

Android — Instrumentation test with hilt

Testing in Android has been a pain from the beginning and there is no standard architecture setup to execute the frictionless test. As you know there is no silver bullet for all the snags. This pie...

Smoke, mirrors & HiltViewModel

This is the second installment in the three-part series. To understand better, you can read part1 or open the github project to explore the code. Part1: Android — Basic Hilt setup with viewmodel +...

Android — ViewModel factory and instantiation

Android ViewModel is one of the most helpful APIs exist in the ecosystem. It’s a major release which changed how the Android apps built. Together with LiveData it decoupled the UI from business log...

Android — Basic Hilt setup with viewmodel + fragment

Hilt is a modern android DI framework for dependency injection. It is merely a wrapper around Dagger2. Forget dagger-android, hilt brings a lot to our plate. This article covers steps to add hilt t...

Designing a bottom navigation bar with Jetpack compose

Intro This article covers the design aspect of the bottom navigation bar using Jetpack compose. We’re looking at a simple composable with few customizable params for the icons. Take this as an app...

I created few shapes in Jetpack compose / Gist included

Sharing few of my jetpack-compose shapes here. Did path tracing and drew path on canvas. Heart 🚀 - Gist Tag 🚀 - Gist Polygons 🚀 - Gist Car 🚀 - Gist 👷 Tool set Figma fo...

Jetpack compose - shape your views

Jetpack compose has an elegant way to cut out a Compose view into the desired shape. I’m covering few shapes that are available in the core compose lib and where do they differ. All the shapes dis...

Android — Implementing LifecycleAwareTimer

Android CountDownTimer is good but it can be better. This article covers few tweaks to the timer and in general how to decouple certain logic from activity. 📚 Background CountDownTimer is a conve...

Flow is non-blocking but the collector is not

Flow is an idiomatic way in kotlin to publish sequence of values. While the flow itself suspendable, the collector will block the coroutine from proceeding further. Let’s see with an example. ⛲ Fl...

GraphQL backend — token expiry

In the previous post we covered authentication and role management. However, it assumed any invalid session to be a visitor instead of throwing 401—Unauthorized client error. This post covers the t...