My first recommendation would be fiction. Reading fiction is important to understand the cross-sectional variation in humanity, to understand how difficult generalizations can be, to just get a sense of how different social pieces fit together, and to get a sense of different historical eras – and plus, reading fiction is often just plain flat-out... See more
The user starts in some circumstance x. Whatever product or solution they apply is a function f(). Applying the product to that circumstance f(x) produces a result: y.
Because it is like we're not writing a renderer — we're not writing a systems level like WebGL renderer. Instead, the browser is our render, and so we need to have as much knowledge about how that thing works as we would if we were working with a lower level architecture.
my app doesn’t need a login system. It doesn’t need an interface to create and manage contacts. It already knows exactly who’s using it. (This makes me think about an old blog post by Clay Shirky: “Situated software, by contrast, doesn’t need to be personalized — it is personal from its inception.”)