moses.md
#11

Programmatic interfaces vs graphical user interfaces (GUIs)

Two ways to interface with software:

Programmatic interfaces

  • Interface through code, commands, text
  • Examples: command-line (CLI), APIs, stdin/stdout, SELECT * FROM users
  • Requires BYO mental model: interface doesn't educate, expects you to know what's possible
  • Used by: humans (developers) AND machines (scripts, automation, AI)
  • Not accessible to non-technical people
  • Might have help or man pages, but minimal — the interface executes, doesn't teach

Graphical User Interfaces (GUIs)

  • Interface through visual elements — buttons, windows, menus, forms, frames
  • Examples: Google Docs, MarioKart, this website
  • Present a model: visual menu of affordances, skeuomorphic metaphors (desktop, folders, trash)
  • Used by: humans (point, click, drag, type)
  • Machines CAN use them (screen scraping, AI computer use) but it's clunky and far behind agentic programmatic computer use
  • Self-educating: can show up knowing little, learn by exploring