The document discusses building real-time web applications. It addresses three hard problems: talking to the browser in real-time using techniques like polling, websockets, and flash sockets; handling high concurrency through non-blocking I/O; and scaling to support many users. It reviews common real-time frameworks like Twisted, Tornado, gevent, Node.js, and Erlang and recommends Twisted for Python and Node.js with Socket.IO for non-Python. It also discusses using Redis for a real-time backend pub/sub system and scaling strategies like adding frontend and backend nodes.