<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"><channel><title>ZeroToOne Engineering</title><description>Engineering blog by the ZeroToOne team — deep dives into architecture, data engineering, and the tools we build.</description><link>https://blog.platform.zerotoone.ai/</link><item><title>Airflow DAG Bundles: Managing DAGs Across Teams Without Helm Upgrades</title><link>https://blog.platform.zerotoone.ai/blog/airflow-dag-bundles-without-helm-upgrades/</link><guid isPermaLink="true">https://blog.platform.zerotoone.ai/blog/airflow-dag-bundles-without-helm-upgrades/</guid><description>How we use S3 DAG bundles, a sidecar sync pattern, and the bundle watcher to onboard new pipelines with zero downtime.</description><pubDate>Wed, 15 Apr 2026 00:00:00 GMT</pubDate></item><item><title>Building a Composable ETL Framework for Spark</title><link>https://blog.platform.zerotoone.ai/blog/building-a-composable-etl-framework/</link><guid isPermaLink="true">https://blog.platform.zerotoone.ai/blog/building-a-composable-etl-framework/</guid><description>How we replaced bespoke PySpark scripts with a config-driven, hook-based framework inspired by Rust&apos;s composition model.</description><pubDate>Thu, 02 Apr 2026 00:00:00 GMT</pubDate></item><item><title>Building Our Lakehouse with Apache Iceberg</title><link>https://blog.platform.zerotoone.ai/blog/building-our-lakehouse-with-iceberg/</link><guid isPermaLink="true">https://blog.platform.zerotoone.ai/blog/building-our-lakehouse-with-iceberg/</guid><description>How we designed a modern lakehouse architecture using Iceberg, Lakekeeper, and Spark on AWS.</description><pubDate>Sun, 15 Mar 2026 00:00:00 GMT</pubDate></item><item><title>Debugging a Spark Job with 🔥DataFlint</title><link>https://blog.platform.zerotoone.ai/blog/debugging-a-spark-job-with-dataflint/</link><guid isPermaLink="true">https://blog.platform.zerotoone.ai/blog/debugging-a-spark-job-with-dataflint/</guid><description>How an open-source Spark UI replacement helped us find data skew, partition bloat, and shuffle spill.</description><pubDate>Fri, 27 Mar 2026 00:00:00 GMT</pubDate></item><item><title>How DataFlint Helped Us Cut a 40-Minute ETL to 5 Minutes</title><link>https://blog.platform.zerotoone.ai/blog/how-dataflint-helped-us-optimize-spark-jobs/</link><guid isPermaLink="true">https://blog.platform.zerotoone.ai/blog/how-dataflint-helped-us-optimize-spark-jobs/</guid><description>A quick look at how DataFlint&apos;s Spark UI pointed us to the exact bottlenecks in our daily ETL.</description><pubDate>Fri, 27 Mar 2026 00:00:00 GMT</pubDate></item><item><title>How We Built This Blog with Astro and MDX</title><link>https://blog.platform.zerotoone.ai/blog/how-we-built-our-blog/</link><guid isPermaLink="true">https://blog.platform.zerotoone.ai/blog/how-we-built-our-blog/</guid><description>A walkthrough of our engineering blog stack — Astro, MDX, Tailwind, and a Git-based workflow.</description><pubDate>Mon, 16 Mar 2026 00:00:00 GMT</pubDate></item><item><title>Running Spark on Kubernetes: An Ops-First Approach</title><link>https://blog.platform.zerotoone.ai/blog/running-spark-on-kubernetes/</link><guid isPermaLink="true">https://blog.platform.zerotoone.ai/blog/running-spark-on-kubernetes/</guid><description>How we run production Spark jobs on Kubernetes with one SparkApp YAML, pre-baked images, and sub-10-second warm starts.</description><pubDate>Thu, 19 Mar 2026 00:00:00 GMT</pubDate></item><item><title>From 60 Minutes to 4: Optimizing Spark MERGE INTO on a 2 Billion Row Iceberg Table</title><link>https://blog.platform.zerotoone.ai/blog/spark-merge-optimization-from-60-to-4-minutes/</link><guid isPermaLink="true">https://blog.platform.zerotoone.ai/blog/spark-merge-optimization-from-60-to-4-minutes/</guid><description>How we cut our daily upsert pipeline from an hour to under 4 minutes using storage partition joins and shuffle hash hints.</description><pubDate>Thu, 19 Mar 2026 00:00:00 GMT</pubDate></item><item><title>Spark on Spot with S3 Shuffle</title><link>https://blog.platform.zerotoone.ai/blog/spark-on-spot-with-s3-shuffle/</link><guid isPermaLink="true">https://blog.platform.zerotoone.ai/blog/spark-on-spot-with-s3-shuffle/</guid><description>How S3 shuffle lets us run Spark executors 100% on spot instances with Karpenter, cutting compute costs 70-85%.</description><pubDate>Wed, 25 Mar 2026 00:00:00 GMT</pubDate></item><item><title>Taming S3 Shuffle at Scale</title><link>https://blog.platform.zerotoone.ai/blog/taming-s3-shuffle-at-scale/</link><guid isPermaLink="true">https://blog.platform.zerotoone.ai/blog/taming-s3-shuffle-at-scale/</guid><description>How we fixed the GET request explosion, prefix throttling, and threading edge cases that emerge when S3 shuffle meets production scale.</description><pubDate>Mon, 30 Mar 2026 00:00:00 GMT</pubDate></item><item><title>Welcome to the ZeroToOne Engineering Blog</title><link>https://blog.platform.zerotoone.ai/blog/welcome-to-zerotoone-engineering/</link><guid isPermaLink="true">https://blog.platform.zerotoone.ai/blog/welcome-to-zerotoone-engineering/</guid><description>We&apos;re launching our engineering blog to share how we build, scale, and operate our data platform.</description><pubDate>Mon, 16 Mar 2026 00:00:00 GMT</pubDate></item><item><title>What We Learned Building Our ML Platform</title><link>https://blog.platform.zerotoone.ai/blog/what-we-learned-building-our-ml-platform/</link><guid isPermaLink="true">https://blog.platform.zerotoone.ai/blog/what-we-learned-building-our-ml-platform/</guid><description>Six ideas about feature stores, AST-generated ETLs, content-addressed artifacts, and control planes — distilled from building a semantic layer for ML.</description><pubDate>Thu, 23 Apr 2026 00:00:00 GMT</pubDate></item></channel></rss>