Paul Graham’s 2001 BBN talk details how Viaweb used Lisp, macros, closures, and an embedded DSL (Rtml) to outpace competitors building server-side web apps.
Key Takeaways
Server-side deployment removes language lock-in; Graham argues any startup using a more powerful language gains a structural speed advantage over C/C++ shops.
Viaweb’s 25,000-line editor grew incrementally from a 120-line prototype; code was never fully rewritten and was rarely more than a day or two from running state.
The interactive Lisp toplevel allowed bug fixes while users were still on the phone, enabling same-session patches without visible downtime.
Rtml, an embedded DSL built from Lisp macros, generated all pages and served as an abstraction layer; keyword parameters made it safely extensible without breaking existing templates.
Lexical closures simulated stateful subroutine behavior across stateless HTTP sessions, effectively implementing continuation-passing style in a web UI.