proomt

Search

Search posts, papers, and topics

Hall of Fame

Hall of FameSteve Yegge200613 min readintro

Execution in the Kingdom of Nouns

Summary

Yegge uses a kingdom metaphor to contrast Java’s object‑centric style, where verbs are hidden behind noun objects, with functional languages that treat functions as first‑class citizens. The essay warns that over‑objectifying behavior can make code cumbersome.

  • Java‑style OOP often hides actions behind noun‑like classes, creating extra boilerplate such as executor objects.
  • Functional languages treat functions as first‑class citizens, eliminating the need for wrapper types and enabling direct composition.
  • The metaphor illustrates how language design choices affect code ergonomics and developer productivity.

Engineers designing APIs or choosing languages should consider the trade‑offs between wrapping behavior in objects versus using first‑class functions.

3/10

Related reading

  1. Article: Your Next DSL Author Is a Language Model

    Typed Domain Grounding (TDG) embeds a DSL inside a mainstream language the LLM already knows (e.g., Kotlin) and uses the host compiler as an oracle. The author describes five building blocks—embedding, choosing a host language with high training‑data frequency, compiler‑driven type safety, a generate‑compile‑repair loop, and an on‑demand teaching tool—and shows measured results from kUML, a Kotli…

    InfoQinfoq.com18 min
  2. App Intents: One Java Declaration for Siri, Spotlight, and Shortcuts

    Codename One adds @AppIntent annotations that let a static Java method be exposed as a Siri, Spotlight, or Android shortcut. The build‑time processor generates native declarations, a reflection‑free dispatch table, and validates the intent metadata. Handlers can be headless, accept typed parameters, return results, and be invoked internally via Intents.invoke(). Entities enable system‑driven disa…

    CodeName Onecodenameone.com5 min
  3. App Hardening: One Obfuscation Pipeline Across Every Port

    Codename One adds a cloud‑side hardening step that runs on the merged JAR before it is split into Android, iOS, JavaScript, and desktop binaries. It can rename symbols, encrypt string literals, and insert opaque‑predicate control‑flow guards at configurable levels (off → standard → aggressive → paranoid). The transforms are selective per platform to avoid breaking optimizers, and a mapping is kep…

    CodeName Onecodenameone.com6 min