<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>cdelmonte.dev</title>
    <link>https://cdelmonte.dev/</link>
    <description>Recent content on cdelmonte.dev</description>
    <image>
      <title>cdelmonte.dev</title>
      <url>https://cdelmonte.dev/og-default.png</url>
      <link>https://cdelmonte.dev/og-default.png</link>
    </image>
    <generator>Hugo -- 0.147.7</generator>
    <language>en-us</language>
    <lastBuildDate>Wed, 10 Jun 2026 00:00:00 +0000</lastBuildDate>
    <atom:link href="https://cdelmonte.dev/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Unpacking Parquet: Explicit SIMD, Scalar Baselines, and What HotSpot Makes of Them</title>
      <link>https://cdelmonte.dev/deep-dives/unpacking-parquet-explicit-simd-and-scalar-baselines/</link>
      <pubDate>Tue, 09 Jun 2026 00:00:00 +0000</pubDate>
      <guid>https://cdelmonte.dev/deep-dives/unpacking-parquet-explicit-simd-and-scalar-baselines/</guid>
      <description>On the JVM, optimizing a hot kernel is not only about writing faster code: it is also about understanding how much the result depends on the machine code HotSpot derives from the scalar loop. Using Parquet bit-unpacking as a concrete case, the piece shows that a SIMD speedup depends on which scalar baseline C2 is handed, when explicit vectorization is actually justified, and why a more specialized scalar routine is not necessarily faster.</description>
    </item>
    <item>
      <title>Where Spark Changes Shape: UnsafeRow, the JVM, and the Relocation of Portability</title>
      <link>https://cdelmonte.dev/essays/where-spark-changes-shape/</link>
      <pubDate>Tue, 26 May 2026 00:00:00 +0000</pubDate>
      <guid>https://cdelmonte.dev/essays/where-spark-changes-shape/</guid>
      <description>Run df.explain on a Parquet scan and you find ColumnarToRow, an operator whose only job is to change the data&amp;rsquo;s shape. It is the seam where two architectural eras meet, and a record of how portability in analytical systems has relocated from the JVM runtime to the data format and the query plan.</description>
    </item>
    <item>
      <title>The Hidden DSL in Catalyst</title>
      <link>https://cdelmonte.dev/deep-dives/the-hidden-dsl-in-catalyst/</link>
      <pubDate>Sun, 26 Apr 2026 00:00:00 +0000</pubDate>
      <guid>https://cdelmonte.dev/deep-dives/the-hidden-dsl-in-catalyst/</guid>
      <description>How Spark&amp;rsquo;s internal rewriting framework, Catalyst, exposes an embedded DSL with a public extension surface, the same one Delta Lake and Iceberg use to plug into the optimizer pipeline.</description>
    </item>
    <item>
      <title>delta-explain: Making Delta Lake Pruning Visible</title>
      <link>https://cdelmonte.dev/deep-dives/delta-explain-making-delta-pruning-visible/</link>
      <pubDate>Mon, 13 Apr 2026 00:00:00 +0000</pubDate>
      <guid>https://cdelmonte.dev/deep-dives/delta-explain-making-delta-pruning-visible/</guid>
      <description>Partition pruning and data skipping are invisible by default. delta-explain reads the Delta log directly and shows, step by step, how a WHERE predicate narrows down candidate files, with no engine required.</description>
    </item>
    <item>
      <title>Anti-patterns in Catalyst rules</title>
      <link>https://cdelmonte.dev/deep-dives/anti-patterns-in-catalyst-rules/</link>
      <pubDate>Sun, 26 Apr 2026 00:00:00 +0000</pubDate>
      <guid>https://cdelmonte.dev/deep-dives/anti-patterns-in-catalyst-rules/</guid>
      <description>Six concrete anti-patterns I encountered building a real Catalyst extension: from the wrong rule type for throws, to mutable state under AQE and Spark Connect, to JVM bootstrap traps in PySpark.</description>
    </item>
    <item>
      <title>The Disaggregation of the Lakehouse Stack</title>
      <link>https://cdelmonte.dev/essays/the-disaggregation-of-the-lakehouse-stack/</link>
      <pubDate>Sun, 08 Mar 2026 00:00:00 +0000</pubDate>
      <guid>https://cdelmonte.dev/essays/the-disaggregation-of-the-lakehouse-stack/</guid>
      <description>How Delta Kernel, Arrow, and pluggable execution are disaggregating the lakehouse stack. The lakehouse stack is not converging on a new dominant engine — it is converging on a layered architecture in which protocol, data representation, and query execution are increasingly isolated behind stable interfaces.</description>
    </item>
    <item>
      <title>Where Data System Abstractions Break: A Semiotic Reading</title>
      <link>https://cdelmonte.dev/essays/where-data-system-abstractions-break-semiotic-reading/</link>
      <pubDate>Wed, 04 Mar 2026 00:00:00 +0000</pubDate>
      <guid>https://cdelmonte.dev/essays/where-data-system-abstractions-break-semiotic-reading/</guid>
      <description>Many of the most surprising performance pathologies in modern data systems are semiotic failures — structural divergences between what an interface signifies and what the underlying system does.</description>
    </item>
    <item>
      <title>Delta Lake MERGE Is Not a Simple Upsert. What Actually Happens at Scale.</title>
      <link>https://cdelmonte.dev/essays/delta-lake-merge-at-scale/</link>
      <pubDate>Mon, 02 Mar 2026 00:00:00 +0000</pubDate>
      <guid>https://cdelmonte.dev/essays/delta-lake-merge-at-scale/</guid>
      <description>At 10 TB, updating 200k rows can mean rewriting thousands of files. Here&amp;rsquo;s why, and what to do about it.</description>
    </item>
    <item>
      <title>Spark Is Not Just Lazy. Spark Compiles Dataflow.</title>
      <link>https://cdelmonte.dev/deep-dives/spark-is-not-lazy-spark-compiles-dataflow/</link>
      <pubDate>Mon, 03 Nov 2025 00:00:00 +0000</pubDate>
      <guid>https://cdelmonte.dev/deep-dives/spark-is-not-lazy-spark-compiles-dataflow/</guid>
      <description>Why calling Spark &amp;rsquo;lazy&amp;rsquo; is technically reductive, and how thinking of it as a dataflow compiler changes the way you design pipelines.</description>
    </item>
    <item>
      <title>A Shared Kernel Is a Shared Trust Domain</title>
      <link>https://cdelmonte.dev/essays/shared-kernel-shared-trust-domain/</link>
      <pubDate>Mon, 02 Feb 2026 00:00:00 +0000</pubDate>
      <guid>https://cdelmonte.dev/essays/shared-kernel-shared-trust-domain/</guid>
      <description>Containers isolate processes, not trust boundaries. When your platform runs untrusted code, the architectural question is where you place the kernel boundary, and what that costs in memory, latency, and operational complexity.</description>
    </item>
    <item>
      <title>Fixing Skewed Nested Joins in Spark with Asymmetric Salting</title>
      <link>https://cdelmonte.dev/deep-dives/fixing-skewed-nested-joins-spark-asymmetric-salting/</link>
      <pubDate>Mon, 01 Dec 2025 00:00:00 +0000</pubDate>
      <guid>https://cdelmonte.dev/deep-dives/fixing-skewed-nested-joins-spark-asymmetric-salting/</guid>
      <description>In large-scale Spark pipelines, skew can occur when a single key carries a disproportionately large nested payload. Asymmetric salting offers a targeted solution: explode, salt, join in parallel, and optionally re-aggregate.</description>
    </item>
    <item>
      <title>From Dictionary Indices to Integers: Parquet Bit Unpacking Explained</title>
      <link>https://cdelmonte.dev/explainers/parquet-bit-unpacking-explained/</link>
      <pubDate>Wed, 10 Jun 2026 00:00:00 +0000</pubDate>
      <guid>https://cdelmonte.dev/explainers/parquet-bit-unpacking-explained/</guid>
      <description>Parquet rarely stores a column&amp;rsquo;s values directly. Dictionary encoding keeps the distinct values once and represents the column through small bit-packed integer indices. This explainer walks through dictionary encoding, how the indices are bit-packed, and the bit-unpacking step that reconstructs them into an int[] before every dictionary lookup.</description>
    </item>
    <item>
      <title>Two Algorithms, One Intuition: Shunting Yard and Pratt Parsing</title>
      <link>https://cdelmonte.dev/deep-dives/shunting-yard-and-pratt-parsing/</link>
      <pubDate>Mon, 06 Oct 2025 00:00:00 +0000</pubDate>
      <guid>https://cdelmonte.dev/deep-dives/shunting-yard-and-pratt-parsing/</guid>
      <description>Parsing arithmetic expressions looks simple… until precedence enters the picture. Two classic algorithms — Dijkstra&amp;rsquo;s Shunting Yard and Pratt&amp;rsquo;s Top-Down Operator Precedence — provide radically different answers that reveal the same underlying intuition.</description>
    </item>
    <item>
      <title>Inside GKE Workload Identity: How Kubernetes Identities Become GCP Service Accounts</title>
      <link>https://cdelmonte.dev/deep-dives/kubernetes-gcp-service-accounts-workload-identity/</link>
      <pubDate>Thu, 01 Aug 2024 00:00:00 +0000</pubDate>
      <guid>https://cdelmonte.dev/deep-dives/kubernetes-gcp-service-accounts-workload-identity/</guid>
      <description>GKE Behind the Scenes: Understanding the Interaction Between Kubernetes and GCP Service Accounts Through The Metadata Server.</description>
    </item>
    <item>
      <title>About</title>
      <link>https://cdelmonte.dev/about/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://cdelmonte.dev/about/</guid>
      <description>About Christian Del Monte</description>
    </item>
    <item>
      <title>Datenschutzerklärung</title>
      <link>https://cdelmonte.dev/datenschutz/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://cdelmonte.dev/datenschutz/</guid>
      <description>Datenschutzerklärung</description>
    </item>
    <item>
      <title>Impressum</title>
      <link>https://cdelmonte.dev/impressum/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://cdelmonte.dev/impressum/</guid>
      <description>Impressum</description>
    </item>
    <item>
      <title>Selected Work</title>
      <link>https://cdelmonte.dev/selected-work/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://cdelmonte.dev/selected-work/</guid>
      <description>Selected articles, talks, and open-source work by Christian Del Monte</description>
    </item>
  </channel>
</rss>
