Demystifying the Dependency Inversion Principle

Thank you for your kind words.

"The server" is just "the thing I'm talking to", whereas "the client" is "the thing doing the talking".

As for "high level modules" and "low level modules", I think Bob and I both rely on a general, intuitive understanding of those terms. "High level" usually means "less concerned with details" and "low level" usually means "more concerned with details". A module that handles processing orders is higher level than a module that writes data to a database. This last module is higher level than a module that writes bytes to a stream. And so on.

As for "generic patterns", I would expect that to be intuitively clear on its own. "Selecting items from a collection that satisfy a predicate" is a generic pattern, as opposed to the detail of "find all customers with pending orders".