Trying to be cogent.
Being explicit about costs and implications when making choices makes future decisions easier when things change. A document like an RFC is a great implementation of this.
An introduction to compilation for the JVM, bytecode and JIT compilation, and benchmarking with JMH
Learning about what the State monad represents and how to use and understand it
How to add Applicative and Traverse instances for your own types, use sequence, sequenceU and Unapply
Deriving how non-blocking I/O must work, from first principles