06-reference

data engineering central declarative functional composition

2026-05-22·reference·source: Data Engineering Central·by Anonymous Rust Dev (guest)

"Why, I do declare!" — Anonymous Rust Dev (guest on Data Engineering Central)

Why this is in the vault

Second guest post from the Anonymous Rust Dev on Daniel Beach's newsletter — same author as [[06-reference/2026-04-27-data-engineering-central-luddite-ai-rant]]. This one drops the AI-skepticism political-economy frame and becomes a craft tutorial on declarative vs imperative code, anchored on a TypeScript cake-baking example that builds up to function composition. Worth filing because (a) the author is now a recurring guest worth tracking and (b) the declarative-pipelines beat sits right on top of the harness-thesis surface RDCO is building on.

The core argument

The piece walks readers from imperative-as-default to declarative-as-design-language. Spine of the argument:

  1. Imperative won the lingua-franca contest because C-style code maps to what hardware actually does (assembly is irreducibly imperative). Procedural code is also easier to reason about at small scope.
  2. At large scope, imperative code becomes noise. "Many tiny instructions start to turn into noise." Refactoring helps, but the ceiling is what declarative buys you: code that models the flow of the problem domain rather than a sequence of do-this-then-do-that steps. Author cites SQL SELECT, ML (the 1970s language, precursor to Haskell/Scala), and recent declarative-pipeline frameworks like Spark SDP as the same pattern recurring.
  3. Functional programming is the natural pairing because the unit of work is a function with a clear input → output signature, not a method attached to an object. He throws shade at OOP as overused — "everything is derived from Object" — and approvingly cites C#'s top-level statements as evidence that even OOP-heavy ecosystems are admitting the object-as-root narrative got tiring.
  4. The cake-baking example. Starts with a stub: function bakeCake(ingredients: Array<Ingredient>): Cake. Builds up prepare, preheat, cook as composable functions. Critiques his own first draft (preheatOven invented an oven instead of taking one), refactors to preheat(tempCelsius, oven). Ends with the point-free version:
    const bakeCake = (ingredients, oven) => cook(
        prepare(ingredients),
        preheat(175.0, oven)
    ) as Cake;
    
    The pedagogy beat: the signature (Ingredients[]) -> Cake tells the reader the recipe before they read the body — and that's why BDD/Gherkin-style scenario testing pairs naturally with this style.

The piece is craft-instruction, not a position paper. No predictions, no political-economy frame, no critique of any vendor. Tone is markedly lighter than his prior Luddite-rant guest post — same author voice (self-deprecating, hyperlink-heavy, "your friendly neighborhood Anonymous Rust Dev"), different register.

Mapping against Ray Data Co

Medium mapping. Three useful angles:

Author-tracking note. Second guest post from Anonymous Rust Dev in 25 days. Recurring guest pattern is now visible — Daniel Beach is using this author as a regular contributor. Not yet a tracked-author candidate on his own (anonymous, no separate publication, no independent voice off this newsletter), but if a third post lands in the next 30 days, worth adding as a co-tracked voice on the DE Central feed.

Weakness as a source. Pedagogy piece. No data, no benchmarks, no falsifiable claims. Cite as explanatory aid when teaching composition, not as evidence for any thesis. The OOP-bashing is hot-take territory and not worth quoting in any RDCO public artifact.

Related