I started a GitHub repository called TypeFunc in an effort to get my head around the massive amount of online resources for learning about type theory, functional programming, category theory, $\lambda$-calculus, and connections between topology and computing.
I learned about Diaconescu's Theorem from Andrej Bauer's lecture.
This post describes the proof as it was presented by Bauer. These notes are rough and intended for my own reference. Please see François Dorais' blog post for a nice discussion of this topic.