---
title: "Prem Singh (@prem1997) | Hashnode"
description: "Lead Mobile Engineer | Android, iOS, Flutter & Kotlin Multiplatform. Read the latest articles by Prem Singh on Hashnode."
url: "https://hashnode.com/@prem1997"
---

@prem1997

# Prem Singh

@prem1997 · Dubai, UAE · Joined October 2026

Lead Mobile Engineer | Android, iOS, Flutter & Kotlin Multiplatform

[Website](https://premsinghsodha7.github.io/)

### [From Pixels to Text: Google ML Kit OCR on Android, with a KMP Core](https://prem1997.hashnode.dev/from-pixels-to-text-google-ml-kit-ocr-on-android-with-a-kmp-core?utm_source=hashnode&utm_medium=feed)

Build reliable Android OCR with ML Kit, handle CameraX frames safely, and share parsing through Kotlin Multiplatform.

6 min read · [prem1997.hashnode.dev](https://prem1997.hashnode.dev/from-pixels-to-text-google-ml-kit-ocr-on-android-with-a-kmp-core?utm_source=hashnode&utm_medium=feed)

[Oct 30](https://hashnode.com/posts/from-pixels-to-text-google-ml-kit-ocr-on-android-with-a-kmp-core/6ae442df687755c5e7c1ee47)

### [Android Keystore and iOS Keychain: Protecting Mobile Data in the AI Era](https://prem1997.hashnode.dev/android-keystore-and-ios-keychain-protecting-mobile-data-in-the-ai-era?utm_source=hashnode&utm_medium=feed)

Protect Android and iOS secrets, encrypt larger datasets, plan key recovery, and prevent plaintext leaks through AI tools and logs.

7 min read · [prem1997.hashnode.dev](https://prem1997.hashnode.dev/android-keystore-and-ios-keychain-protecting-mobile-data-in-the-ai-era?utm_source=hashnode&utm_medium=feed)

[Oct 29](https://hashnode.com/posts/android-keystore-and-ios-keychain-protecting-mobile-data-in-the-ai-era/6ae36fc46a64bace1fe08d34)

### [Offline-First Mobile: A Refresh Error Should Not Erase Good Data](https://prem1997.hashnode.dev/offline-first-mobile-a-refresh-error-should-not-erase-good-data?utm_source=hashnode&utm_medium=feed)

Model cached content and refresh status separately so a failed network request does not erase a useful mobile screen.

4 min read · [prem1997.hashnode.dev](https://prem1997.hashnode.dev/offline-first-mobile-a-refresh-error-should-not-erase-good-data?utm_source=hashnode&utm_medium=feed)

[Oct 29](https://hashnode.com/posts/offline-first-mobile-a-refresh-error-should-not-erase-good-data/6ae312b84c0caa7c185c4480)

### [KMP Coroutine Tests: Test Time Without Waiting for It](https://prem1997.hashnode.dev/kmp-coroutine-tests-test-time-without-waiting-for-it?utm_source=hashnode&utm_medium=feed)

Use virtual time in Kotlin Multiplatform coroutine tests to verify deadlines, cancellation, and scheduler behavior without real sleeps.

3 min read · [prem1997.hashnode.dev](https://prem1997.hashnode.dev/kmp-coroutine-tests-test-time-without-waiting-for-it?utm_source=hashnode&utm_medium=feed)

[Oct 29](https://hashnode.com/posts/kmp-coroutine-tests-test-time-without-waiting-for-it/6ae2a6e41f68101d3bd47286)

### [KMP Architecture: Share the Contract, Keep the Platform Details](https://prem1997.hashnode.dev/kmp-architecture-share-the-contract-keep-the-platform-details?utm_source=hashnode&utm_medium=feed)

Design clear Kotlin Multiplatform boundaries with interfaces, platform adapters, factory functions, and focused common tests.

4 min read · [prem1997.hashnode.dev](https://prem1997.hashnode.dev/kmp-architecture-share-the-contract-keep-the-platform-details?utm_source=hashnode&utm_medium=feed)

[Oct 29](https://hashnode.com/posts/kmp-architecture-share-the-contract-keep-the-platform-details/6ae2a64826c336218447f22f)
