<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"><channel><title>Rishabh Mehta, writing</title><description>Rishabh Mehta (fin1te) builds data platforms and cloud infrastructure at Jio Platforms. Rust, ClickHouse, Spark, Kubernetes and zero-trust networking.</description><link>https://fin1te.com/</link><item><title>Moving 400+ Spark jobs from DStreams to Structured Streaming</title><link>https://fin1te.com/writing/dstream-to-structured-streaming/</link><guid isPermaLink="true">https://fin1te.com/writing/dstream-to-structured-streaming/</guid><description>A naive port made our hardest job twice as slow and quietly lost data. Here is what it took to reach parity and then pull ahead: bounded batches, fewer scheduling waves, a watermark guard, two timezone bugs and one very deep query plan.</description><pubDate>Mon, 17 Aug 2026 00:00:00 GMT</pubDate><category>Spark</category><category>Structured Streaming</category><category>Kafka</category><category>Scala</category></item><item><title>Building the Spark UI that Structured Streaming should have had</title><link>https://fin1te.com/writing/a-spark-ui-for-structured-streaming/</link><guid isPermaLink="true">https://fin1te.com/writing/a-spark-ui-for-structured-streaming/</guid><description>The stock Spark UI forgets a streaming query the moment it stops, and it cannot tell you how far behind Kafka you are. So I built a Streaming Stats tab into our framework: a SparkPlugin, a query listener, a ring buffer and server-rendered SVG.</description><pubDate>Tue, 04 Aug 2026 00:00:00 GMT</pubDate><category>Spark</category><category>Structured Streaming</category><category>Kafka</category><category>Observability</category></item><item><title>Replacing a 480-core Spark job with 10 cores of Rust</title><link>https://fin1te.com/writing/spark-to-rust/</link><guid isPermaLink="true">https://fin1te.com/writing/spark-to-rust/</guid><description>How the MyJio log parser went from 120 Spark executors to a single pod, what parity testing looked like, and the thread-count bug that almost made it look worse than it was.</description><pubDate>Thu, 02 Apr 2026 00:00:00 GMT</pubDate><category>Rust</category><category>Kafka</category><category>Spark</category><category>Performance</category></item><item><title>Sub-20 ms lookups on trillion-row tables: ClickHouse sort keys in practice</title><link>https://fin1te.com/writing/clickhouse-sort-keys/</link><guid isPermaLink="true">https://fin1te.com/writing/clickhouse-sort-keys/</guid><description>Subscriber lookups went from full-partition scans in the hundreds of milliseconds to under 20 ms reading three granules. The fix was one line of DDL, and the reasons it works are worth knowing properly.</description><pubDate>Fri, 06 Mar 2026 00:00:00 GMT</pubDate><category>ClickHouse</category><category>Databases</category><category>Performance</category></item><item><title>The 497-day bug</title><link>https://fin1te.com/writing/the-497-day-bug/</link><guid isPermaLink="true">https://fin1te.com/writing/the-497-day-bug/</guid><description>Healthy switches and routers were showing up as down in SLA reports. The common factor was uptime: about 497 days of it, which is exactly where a 32-bit counter of hundredths of a second runs out.</description><pubDate>Thu, 20 Nov 2025 00:00:00 GMT</pubDate><category>SNMP</category><category>Cisco</category><category>Monitoring</category><category>Spark</category></item><item><title>How a cloud SLA is actually calculated</title><link>https://fin1te.com/writing/how-cloud-slas-are-calculated/</link><guid isPermaLink="true">https://fin1te.com/writing/how-cloud-slas-are-calculated/</guid><description>99.95% availability leaves about 22 minutes of downtime a month. Deciding which minutes count is the hard part: HA pairs, reboots nobody saw, outages that span a weekend, maintenance windows and assets that did not exist yet.</description><pubDate>Sun, 07 Sep 2025 00:00:00 GMT</pubDate><category>SLA</category><category>Spark</category><category>Scala</category><category>Monitoring</category></item></channel></rss>