Skip to content
View darkpandawarrior's full-sized avatar
🎯
Locked In
🎯
Locked In

Block or report darkpandawarrior

Block user

Prevent this user from interacting with your repositories and sending you notifications. Learn more about blocking users.

You must be logged in to block users.

Content in all repositories owned by your account will be closed.
Maximum 250 characters. Please don’t include any personal information such as legal names or email addresses. Markdown is supported. This note will only be visible to you.
Report abuse

Contact GitHub support about this user’s behavior. Learn more about reporting abuse.

Report abuse
darkpandawarrior/README.md
Siddharth Pandalai, Senior Android Engineer. Production work at Dice.tech, the Kotlin Multiplatform core extracted from it, the four apps that core carries, and what was published in the open.

At Dice.tech I own the Android platform: ~964k lines, 772k of them Kotlin, serving 50,000+ MAU and 22,000+ DAU.

Portfolio (also served at siddharth-pandalai.vercel.app)  ·  Interactive CV  ·  Hire me  ·  LinkedIn

80% crash reduction  ·  GPS 50% to 95%  ·  ~87% of the UI layer on Compose  ·  AES-256 Keystore, SSL pinning across 9 domains, VAPT cleared

Four lanes of activity by month since 2019: work delivered, open source merged, writing published, chess played The most recent push in each of twelve repositories, with commit subjects

Everything below is drawn by a generator from a real source, and every generator has a deadline. If one dies, a job opens itself an issue and the badge goes red. The three panels after this one are that machinery, in public.

Live status board  ·  11 jobs and datasets tracked, each against its own deadline
Live status board of every scheduled job and generated dataset, with state and age against its SLA

This profile has been red three times, and each time the tests stayed green. That is why the board grades against a deadline rather than a pass or fail, and why it is published rather than kept in a dashboard only I look at.

A separate board tracks cv-siddharth's own generated datasets against their SLA: /ops. The two are not merged; this board watches the account, that one watches the portfolio repo.

Incident ledger  ·  7 recorded, 0 open, mean time to fix 1.1 days, worst 8
Incident ledger: seven recorded incidents with cause, fix and days to resolution

Including the eight days a daily job was red because a dash sweep silently killed a regex, and the day this profile was caught reporting nine of its own merged pull requests when the real figure was twenty four. Publishing the mean time to fix is the only part of a status page that costs anything to be honest about.

The fleet I shipped

White-label client apps by the year each last shipped: 89 still live and 84 delisted, out of 173 that reached the Play Store

At Jugnoo I built the per-tenant flavour system, one build config and one set of resource overlays, that let a client app ship without forking the codebase. The interesting number is not the total, it is the shape: apps launched under that system are still being updated years later. See the fleet, checked against the Play Store and Internet Archive crawls rather than memory.

The KMP family

Nothing became a library until a second consumer needed the same logic.

  • kmp-toolkit: 40 modules. Typed Result, an MVI core, an offline-first store, network, security, on-device AI behind one seam, a 19-provider payment abstraction. MIT.
  • kmp-build-logic: 17 authored convention plugins, vendored by includeBuild across five repos, so a version bump happens once.
  • kmp-app-template: the app shape the toolkit slots into, buildable on day one.
Dependency graph  ·  40 modules, 55 internal edges, layered by computed depth
kmp-toolkit dependency graph: 40 modules and 55 internal dependencies, laid out by computed dependency depth

Parsed from settings.gradle.kts and each module's build file. The columns are dependency depth computed from the edges, so the layering is a measurement of the architecture rather than a drawing of it.

Writing provenance  ·  17 lessons, ten of them out of a single project
Provenance graph: 17 written lessons traced back to the production systems they came from

"Engineer who writes" is a claim anyone can make. The edge is the interesting part: ten of these came out of Doori alone. That is not a blog, it is one project that produced ten things worth writing down.

What I do

One platform, seen at different layers. Depth is behind the links.

Lane The proof The number
Android at scale Dice platform: GPS pipeline, Compose migration, crash and concurrency work, security hardening 50k MAU, 80% fewer crashes
Platform ownership Jugnoo's white-label estate and the automation that shipped it 173 apps on Play, 80% less delivery time
Libraries and build kmp-toolkit, kmp-build-logic, kmp-app-template 40 modules, 17 plugins
Tooling The generators that draw this page, and the guards that fail when their data ages every figure machine-checked
Writing and games The Loopdown, Gaddi one war story, four platforms
Everything else I maintain  ·  eight repositories, one line each
Repo What it is Its number
Doori Mileage and trip tracking, offline-first, Ktor backend 46 modules, 5 platforms
PaymentsLab-KMP Every payment gateway behind one abstraction, each transaction's lifecycle visible 40 modules
Gaddi Bluffing card game, ISMCTS and LLM opponents on a byte-for-byte deterministic engine Android, iOS, Desktop, Web
cv-siddharth This portfolio: React 19, multi-provider LLM chat, and the generator farm behind every number test count gated, not hand-typed
cv-siddharth-kmp The same portfolio in one Kotlin commonMain, rendering to Wasm, Desktop, Android, iOS near dependency-free
Candidai (case study) Local-first AI career-intelligence dashboard: resume onboarding, reverse-ATS discovery (87 providers), evidence-based fit scoring. Built on the open-source career-ops engine. Private while v1 lands case study is public
The Loopdown One war story from a real project, adapted to four platforms, with a linter that strips AI tells 4 channels
SINC-P Statutory student grievance redressal, UGC 2023 compliant, with an SLA clock compliance-cited

Open source

24 merged PRs to career-ops (⭐70k+): two new ATS providers (BambooHR, Breezy HR), a dashboard status-cell fix and an agent-inbox feature.

Most of the rest are correctness fixes, each with a reproduction and a regression test, and each the same class of bug: code that reports success while doing the wrong thing. Non-Latin company names collapsing into one and deleting a tracked application. $-patterns in CV text splicing the template into the resume at exit 0. A date filter silently ignored in its --flag=value form.

Stack: Kotlin · Jetpack Compose · Compose Multiplatform · Coroutines and Flow · Koin and Hilt · Room and DataStore · Ktor · WorkManager · Gradle convention plugins Architecture: MVVM and Clean Architecture · MVI unidirectional state · offline-first · multi-module

Contribution snake animation

Connect

LinkedIn Email Medium Stack Overflow


Avid reader, chess player, and connoisseur of puns and coffee.

Pinned Loading

  1. Doori Doori Public

    Mileage and trip tracking app: Compose Multiplatform across 5 platforms, staged dead reckoning with Kalman smoothing and MotionFusion filtering, ML Kit odometer OCR, offline-first with a Ktor backend

    Kotlin 3

  2. PaymentsLab-KMP PaymentsLab-KMP Public

    An Integration Lab for the Android payments ecosystem: every gateway behind one PaymentGateway abstraction, with a live look at each transaction's lifecycle. KMP multi-module app plus Ktor backend.

    Kotlin

  3. Gaddi Gaddi Public

    Bluffing card game set in a satirical India corporate-political underworld. Kursi ke liye kuch bhi karega.

    Kotlin 1

  4. cv-siddharth-kmp cv-siddharth-kmp Public

    A Compose Multiplatform port of cv-siddharth.vercel.app: one Kotlin commonMain rendering the same portfolio to Web (Wasm), Desktop, Android and iOS

    Kotlin

  5. kmp-toolkit kmp-toolkit Public

    A Kotlin Multiplatform toolkit: a family of small, focused, production-grade libraries (result, common, mvi-core, network, security, designsystem, ai, feedback) extracted from real apps

    Kotlin