♻ @kat: "Also, surely asking the client to run the code to build the pages is better design than making everything happen server side." That may be true if you're running an underpowered server that can't generate pages, but not for the user with a lightweight browser. Using # as the sole means to present content breaks the model of Content={text;video;audio}, Semantics=HTML, Style=CSS, Behaviour=Javascript -- the Content needs to be available even when HTML, CSS and Javascript are not.