<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"><channel><title>BytesByBytes - Building technology, one byte at a time.</title><description>Practical notes, experiments and deep dives into software, AI, data and embedded systems.</description><link>https://bytesbybytes.pages.dev</link><language>en-us</language><item><title>Why BLE Disconnects When Your Android Screen Turns Off</title><link>https://bytesbybytes.pages.dev/articles/android-ble-background-disconnect</link><guid isPermaLink="true">https://bytesbybytes.pages.dev/articles/android-ble-background-disconnect</guid><description>A practical investigation into Android background restrictions, BLE connection behaviour and how to make connections survive a locked screen.</description><pubDate>Sat, 29 Aug 2026 00:00:00 GMT</pubDate><category>Mobile Development</category><category>BLE</category><category>Android</category><category>React Native</category><author>Gourav Pradhan</author></item><item><title>Building AI at the Edge: What Developers Actually Need to Know</title><link>https://bytesbybytes.pages.dev/articles/building-ai-at-the-edge</link><guid isPermaLink="true">https://bytesbybytes.pages.dev/articles/building-ai-at-the-edge</guid><description>Running models on devices with no cloud to fall back on changes almost every assumption you carry over from server-side inference. Here is what actually matters.</description><pubDate>Tue, 17 Feb 2026 00:00:00 GMT</pubDate><category>Edge AI</category><category>Edge AI</category><category>Quantization</category><category>Embedded</category><category>Inference</category><author>Gourav Pradhan</author></item><item><title>Structured Outputs Are Not an Evaluation Strategy</title><link>https://bytesbybytes.pages.dev/articles/structured-outputs-are-not-evaluation</link><guid isPermaLink="true">https://bytesbybytes.pages.dev/articles/structured-outputs-are-not-evaluation</guid><description>Constrained decoding guarantees your model returns valid JSON. It guarantees nothing about whether the values inside it are right - and the two get confused constantly.</description><pubDate>Tue, 30 Sep 2025 00:00:00 GMT</pubDate><category>AI &amp; Machine Learning</category><category>LLM</category><category>Evaluation</category><category>JSON</category><author>Gourav Pradhan</author></item><item><title>Where React Native Cold Start Time Actually Goes</title><link>https://bytesbybytes.pages.dev/articles/react-native-cold-start</link><guid isPermaLink="true">https://bytesbybytes.pages.dev/articles/react-native-cold-start</guid><description>Cold start is rarely one slow thing. It is a dozen small ones, and profiling it properly changes which of them you bother to fix.</description><pubDate>Wed, 21 May 2025 00:00:00 GMT</pubDate><category>Mobile Development</category><category>React Native</category><category>Android</category><category>Performance</category><author>Gourav Pradhan</author></item><item><title>CI Caching That Actually Works</title><link>https://bytesbybytes.pages.dev/articles/ci-caching-that-actually-works</link><guid isPermaLink="true">https://bytesbybytes.pages.dev/articles/ci-caching-that-actually-works</guid><description>Most CI caches are slower than no cache at all. The difference comes down to what you key on, what you store and how honestly you measure the result.</description><pubDate>Tue, 19 Nov 2024 00:00:00 GMT</pubDate><category>Developer Tools</category><category>CI</category><category>Build Systems</category><category>Performance</category><author>Gourav Pradhan</author></item><item><title>Incremental Pipelines That Can Be Run Twice</title><link>https://bytesbybytes.pages.dev/articles/idempotent-incremental-pipelines</link><guid isPermaLink="true">https://bytesbybytes.pages.dev/articles/idempotent-incremental-pipelines</guid><description>Idempotency is the property that turns a fragile nightly job into something you can retry without thinking. Here is how to build it into a pipeline from the start.</description><pubDate>Thu, 05 Sep 2024 00:00:00 GMT</pubDate><category>Data Engineering</category><category>Pipelines</category><category>SQL</category><category>Reliability</category><author>Gourav Pradhan</author></item><item><title>How Parquet File Layout Decides Your Query Speed</title><link>https://bytesbybytes.pages.dev/articles/parquet-layout-query-speed</link><guid isPermaLink="true">https://bytesbybytes.pages.dev/articles/parquet-layout-query-speed</guid><description>Two datasets with identical rows and identical schemas can differ by an order of magnitude in scan time. The difference is layout - row groups, sort order and file size.</description><pubDate>Thu, 27 Jun 2024 00:00:00 GMT</pubDate><category>Data Engineering</category><category>Parquet</category><category>Storage</category><category>Performance</category><author>Gourav Pradhan</author></item><item><title>Error Handling That Survives Contact With Production</title><link>https://bytesbybytes.pages.dev/articles/errors-that-survive-production</link><guid isPermaLink="true">https://bytesbybytes.pages.dev/articles/errors-that-survive-production</guid><description>Most error handling is written for the developer who wrote it, on the day they wrote it. Here is what makes it useful six months later at 3 a.m.</description><pubDate>Tue, 12 Mar 2024 00:00:00 GMT</pubDate><category>Software Development</category><category>Reliability</category><category>Logging</category><category>Design</category><author>Gourav Pradhan</author></item></channel></rss>