<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <title>The Loopdown — Siddharth Pandalai</title>
  <subtitle>Field notes from an engineer who writes — Android, Kotlin, and KMP, each lesson starring a personified bug.</subtitle>
  <link href="https://cv-siddharth.vercel.app/feed.xml" rel="self" type="application/atom+xml"/>
  <link href="https://cv-siddharth.vercel.app/loopdown" rel="alternate" type="text/html"/>
  <id>https://cv-siddharth.vercel.app/loopdown</id>
  <updated>2026-09-02T00:00:00Z</updated>
  <author><name>Siddharth Pandalai</name></author>
  <entry>
    <title>The captain routes. The captain never rows.</title>
    <link href="https://cv-siddharth.vercel.app/loopdown#the-captain-never-rows" rel="alternate"/>
    <id>https://cv-siddharth.vercel.app/loopdown#the-captain-never-rows</id>
    <published>2026-09-02T00:00:00Z</published>
    <updated>2026-09-02T00:00:00Z</updated>
    <summary>Field notes from “Notes From The Loop” on engineering-practice. Topics: ai-assisted-development, orchestration, cost-engineering, tooling.</summary>
  </entry>
  <entry>
    <title>I audited my own migrations. It was not fine.</title>
    <link href="https://cv-siddharth.vercel.app/loopdown#the-ferryman-rows-one-way" rel="alternate"/>
    <id>https://cv-siddharth.vercel.app/loopdown#the-ferryman-rows-one-way</id>
    <published>2026-08-31T00:00:00Z</published>
    <updated>2026-08-31T00:00:00Z</updated>
    <summary>Field notes from “Crossing The Schema” on data-integrity. Topics: android, room, migrations, testing, kotlin.</summary>
  </entry>
  <entry>
    <title>Plausible is worse than wrong</title>
    <link href="https://cv-siddharth.vercel.app/loopdown#the-borrowed-hand" rel="alternate"/>
    <id>https://cv-siddharth.vercel.app/loopdown#the-borrowed-hand</id>
    <published>2026-08-29T00:00:00Z</published>
    <updated>2026-08-29T00:00:00Z</updated>
    <summary>Field notes from “Notes From The Loop” on engineering-practice. Topics: ai-assisted-development, code-review, api-design, kotlin, android.</summary>
  </entry>
  <entry>
    <title>Your thresholds do not belong in constants</title>
    <link href="https://cv-siddharth.vercel.app/loopdown#thresholds-in-config" rel="alternate"/>
    <id>https://cv-siddharth.vercel.app/loopdown#thresholds-in-config</id>
    <published>2026-08-27T00:00:00Z</published>
    <updated>2026-08-27T00:00:00Z</updated>
    <summary>Field notes from “Chain Of Custody” on data-integrity. Topics: architecture, configuration, kotlin, refactoring, tuning.</summary>
  </entry>
  <entry>
    <title>Invariants are cheap. Silent corruption is not.</title>
    <link href="https://cv-siddharth.vercel.app/loopdown#invariants-are-cheap" rel="alternate"/>
    <id>https://cv-siddharth.vercel.app/loopdown#invariants-are-cheap</id>
    <published>2026-08-25T00:00:00Z</published>
    <updated>2026-08-25T00:00:00Z</updated>
    <summary>Field notes from “Chain Of Custody” on data-integrity. Topics: data-integrity, validation, architecture, kotlin, testing.</summary>
  </entry>
  <entry>
    <title>Every filter needs a documented exception</title>
    <link href="https://cv-siddharth.vercel.app/loopdown#documented-exception" rel="alternate"/>
    <id>https://cv-siddharth.vercel.app/loopdown#documented-exception</id>
    <published>2026-08-20T00:00:00Z</published>
    <updated>2026-08-20T00:00:00Z</updated>
    <summary>Field notes from “Sensors Who Lie” on data-integrity. Topics: android, filtering, edge-cases, code-quality, location.</summary>
  </entry>
  <entry>
    <title>Never silently change a number someone gets paid on</title>
    <link href="https://cv-siddharth.vercel.app/loopdown#never-silently-change-a-number" rel="alternate"/>
    <id>https://cv-siddharth.vercel.app/loopdown#never-silently-change-a-number</id>
    <published>2026-08-18T00:00:00Z</published>
    <updated>2026-08-18T00:00:00Z</updated>
    <summary>Field notes from “Chain Of Custody” on data-integrity. Topics: product-engineering, trust, ux, data-integrity, android.</summary>
  </entry>
  <entry>
    <title>When two sensors disagree, rank them</title>
    <link href="https://cv-siddharth.vercel.app/loopdown#accelerometer-outranks-gps" rel="alternate"/>
    <id>https://cv-siddharth.vercel.app/loopdown#accelerometer-outranks-gps</id>
    <published>2026-08-13T00:00:00Z</published>
    <updated>2026-08-13T00:00:00Z</updated>
    <summary>Field notes from “Sensors Who Lie” on data-integrity. Topics: android, sensors, sensor-fusion, imu, location.</summary>
  </entry>
  <entry>
    <title>Your data model is where uncertainty goes to die</title>
    <link href="https://cv-siddharth.vercel.app/loopdown#uncertainty-dies-in-data-model" rel="alternate"/>
    <id>https://cv-siddharth.vercel.app/loopdown#uncertainty-dies-in-data-model</id>
    <published>2026-08-11T00:00:00Z</published>
    <updated>2026-08-11T00:00:00Z</updated>
    <summary>Field notes from “Chain Of Custody” on data-integrity. Topics: data-modelling, architecture, provenance, sensors, api-design.</summary>
  </entry>
  <entry>
    <title>One global threshold is how you delete valid data</title>
    <link href="https://cv-siddharth.vercel.app/loopdown#one-global-threshold" rel="alternate"/>
    <id>https://cv-siddharth.vercel.app/loopdown#one-global-threshold</id>
    <published>2026-08-06T00:00:00Z</published>
    <updated>2026-08-06T00:00:00Z</updated>
    <summary>Field notes from “Sensors Who Lie” on data-integrity. Topics: android, location, thresholds, heuristics, sensor-fusion.</summary>
  </entry>
  <entry>
    <title>Filtered should never mean deleted</title>
    <link href="https://cv-siddharth.vercel.app/loopdown#filtered-never-deleted" rel="alternate"/>
    <id>https://cv-siddharth.vercel.app/loopdown#filtered-never-deleted</id>
    <published>2026-08-04T00:00:00Z</published>
    <updated>2026-08-04T00:00:00Z</updated>
    <summary>Field notes from “Sensors Who Lie” on data-integrity. Topics: android, data-modelling, filtering, observability, architecture.</summary>
  </entry>
  <entry>
    <title>collectAsState is quietly leaking your work</title>
    <link href="https://dev.to/darkpandawarrior/collectasstate-is-quietly-leaking-your-work-4ak0" rel="alternate"/>
    <id>https://cv-siddharth.vercel.app/loopdown#collectasstate-leak</id>
    <published>2026-07-31T00:00:00Z</published>
    <updated>2026-07-31T00:00:00Z</updated>
    <summary>Field notes from “Ghosts In The Recomposition” on compose-performance. Topics: android, jetpack-compose, flow, lifecycle, collectAsStateWithLifecycle.</summary>
  </entry>
  <entry>
    <title>expect/actual is the wrong default in KMP</title>
    <link href="https://dev.to/darkpandawarrior/expectactual-is-the-wrong-default-in-kmp-5g7p" rel="alternate"/>
    <id>https://cv-siddharth.vercel.app/loopdown#kmp-expect-actual-default</id>
    <published>2026-07-29T00:00:00Z</published>
    <updated>2026-07-29T00:00:00Z</updated>
    <summary>Field notes from “One Brain Two Bodies” on kmp. Topics: kotlin, kmp, multiplatform, architecture, expect-actual, di.</summary>
  </entry>
  <entry>
    <title>Your LazyColumn recomposes on every scroll</title>
    <link href="https://dev.to/darkpandawarrior/your-lazycolumn-recomposes-on-every-scroll-3amj" rel="alternate"/>
    <id>https://cv-siddharth.vercel.app/loopdown#lazycolumn-recomposition</id>
    <published>2026-07-24T00:00:00Z</published>
    <updated>2026-07-24T00:00:00Z</updated>
    <summary>Field notes from “Ghosts In The Recomposition” on compose-performance. Topics: android, jetpack-compose, recomposition, stability, performance.</summary>
  </entry>
  <entry>
    <title>The 5-second window that crashes your service</title>
    <link href="https://dev.to/darkpandawarrior/the-5-second-window-that-crashes-your-service-5cmm" rel="alternate"/>
    <id>https://cv-siddharth.vercel.app/loopdown#foreground-service-five-seconds</id>
    <published>2026-07-22T00:00:00Z</published>
    <updated>2026-07-22T00:00:00Z</updated>
    <summary>Field notes from “The Night Shift” on background-execution. Topics: android, foreground-service, workmanager, lifecycle, doze.</summary>
  </entry>
  <entry>
    <title>CancellationException is not an assassin</title>
    <link href="https://dev.to/darkpandawarrior/cancellationexception-is-not-an-assassin-2220" rel="alternate"/>
    <id>https://cv-siddharth.vercel.app/loopdown#coroutine-cancellation-messenger</id>
    <published>2026-07-20T00:00:00Z</published>
    <updated>2026-07-20T00:00:00Z</updated>
    <summary>Field notes from “The Coroutine Court” on concurrency. Topics: kotlin, coroutines, cancellation, structured-concurrency, android.</summary>
  </entry>
  <entry>
    <title>Teaching a phone to disbelieve its own GPS</title>
    <link href="https://dev.to/darkpandawarrior/teaching-a-phone-to-disbelieve-its-own-gps-cip" rel="alternate"/>
    <id>https://cv-siddharth.vercel.app/loopdown#mileway-dead-reckoning</id>
    <published>2026-07-19T00:00:00Z</published>
    <updated>2026-07-19T00:00:00Z</updated>
    <summary>Field notes from “Sensors Who Lie” on location. Topics: android, location, sensor-fusion, dead-reckoning, kalman.</summary>
  </entry>
</feed>
