Programming with Less Than Nothing

An article that solves the classic FizzBuzz interview problem using only SK combinators and JavaScript sparks both admiration and bafflement, blending humor with an extreme tour of combinatory logic and lambda calculus. Commenters dive into technical details like fixed-point combinators, laziness in eager languages, and number encodings, while debating whether such constructions are beautiful theory, pointless code golf, or a legitimate compilation target for functional languages. The exchange also raises broader questions about what programming interviews should measure, the value of esoteric knowledge versus readable code, and how much “fun” or theoretical purity belong in everyday software work.

Overall reaction & style

  • Many readers found the piece very funny and delightful, especially the dark punchline (“Dana is dead”) and the escalating absurdity of the code.
  • Others felt the narrative framing (interview fanfic) was distracting, self‑congratulatory, or “Reddit and everyone clapped”-ish.
  • Several people noted clear inspiration from an earlier “rewriting/reversing the technical interview” series; some saw it as affectionate fanfic, others wished the influence were more foregrounded (though it is in the references).

Explainer vs performance

  • Some commenters praised it as an “awesome explainer” of combinatory logic.
  • Others argued it’s more a virtuoso stunt than a pedagogy: very little step‑by‑step explanation, huge opaque final code block (~166 kB), and syntax highlighting literally breaking down.
  • That said, a few insisted that watching someone “show off” at a difficult topic can itself be a powerful way to learn.

Technical discussion: SKI, lambda, laziness

  • Multiple comments discuss how to encode S and K in JavaScript, issues with parenthesization, and how to adapt to eager evaluation.
  • Links and discussion point out:
    • Combinatory logic is actually more verbose than lambda calculus in bits, despite the joke about lambda being “bloated”.
    • Eager languages can simulate laziness by wrapping arguments (or via Y/Z‑like combinators plus indirection), but plain NodeJS will still blow the stack without something like the article’s lazy “Skoobert”.
    • In practice, compilers for functional languages often target a richer combinator basis or graph‑reduction machines (e.g., Haskell’s G‑machine).

“Why learn this?” vs “it’s just interesting”

  • One thread questions the article for not giving any concrete reason to study such a difficult, impractical system.
  • Replies split:
    • Some say the point is pure curiosity and beauty—like philosophy, esolangs, or cellular automata—and that’s enough.
    • Others emphasize conceptual value: seeing how universal computation emerges from extremely simple primitives; relating this to hardware, one‑instruction set computers, and compilation targets.
    • A few argue the article is written for people who already know they “fit the bill”; it’s not trying to convert the unconvinced.

Interviews, culture fit, and readability

  • Several commenters note that using SKI FizzBuzz in a real JavaScript interview would likely fail goal (2) of interviews: matching the company’s programming culture and conventions.
  • Others counter that being able to reason in SKI or Forth indicates deep graph‑shaping ability that’s valuable in domains like compilers.
  • A separate thread contrasts “mind‑bending” but opaque code with the best production code: straightforward, well‑documented, and making colleagues feel smart rather than lost.