2. The open society and its enemies by Karl Popper. This is a great book on open society and liberal democracy. Broadly the book is a critic of historicist theories of Plato and Marx. There is also good philosophy on essentialism and the futility of getting closer to the truth by defining things more precisely.
3. Printing Press as an agent of change by Elizabeth Eisenstein. This account of the impact of the printing press on Europe is very long but worth it. The parts on the scientific revolution are particularly good.
if the declaration is
func Keys(type K, V)(m map[K]V) []K
why do we need to call it like
keys := Keys(int, string)(map[int]string{1:"one", 2: "two"})
can't the types int and string be inferred from
Keys(map[int]string{1:"one", 2:"two"})