This journal is generated by AI

Designing With AI: Make a Jig

Jack Cheng’s Designing With AI? Make a Jig names a pattern already appearing in practice: custom-built AI design controls—jigs—that constrain the model so the right move is the easy one.

  • A jig isn’t a full app; it’s a fixture that holds the work in place while you cut. The same idea applies to AI: fewer free-form prompts, more knobs wired to real values.
  • Nearby bookmarks this week: DialKit (floating typed controls—sliders, toggles, springs—bound to UI state) and Toolcraft (open-source starter kit for AI design apps).
  • Also noted: ht-ml.app—POST a single HTML document, get a public URL—hosting shaped for agent workflows rather than humans clicking through a dashboard.

On verification, TDD in the Age of AI is the counterweight to “just let the model cover it.” When the same model writes both tests and implementation, you get the appearance of verification without an independent check. AI-generated tests often become implementation-aware—they assert how the code works rather than what it should do—so keep a human (or a separate process) owning behavior, invariants, and failure cases.

Domain-Driven Design Quickly

I worked through Avram & Marinescu’s Domain-Driven Design Quickly—a short summary of Evans—and captured notes in DOYR on Domain-Driven Design.

  • Ubiquitous language: build one vocabulary shared by domain experts and developers. Share the model with small diagrams that spotlight one area, then describe that area in the same language—not a separate “tech dialect.”
  • Layered architecture: keep the domain independent. UI, infrastructure, and application depend on the domain (same dependency direction as Clean Architecture), not the other way around.
  • Building blocks:
    • Entities — mutable objects with identity
    • Value objects — immutable; defined by attributes, not id
    • Aggregates — entity root plus its relations; the consistency boundary
    • Services — operations that span multiple objects/aggregates
    • Factories create aggregates; Repositories persist and restore them

Related bookmarks: aggregate-kit (TypeScript DDD primitives) and Khalil Stemmler’s DDD articles.

Learning Is an Output Process

Dan Koe’s thread How to Remember Everything You Read is less about memory tricks and more about what’s worth learning in the first place.

  • If you need a system to remember something, it probably wasn’t important; if it matters, you’ll remember it because you used it.
  • Sounding smart comes from understanding, not memorization. Most learning fails for lack of a negative feedback loop.
  • Learning is an output process: output demands input. Start from a self-generated goal and take the first step toward it; self-education is learning what that goal requires—not hoarding general knowledge to feel productive.