I haven't mentioned it here yet, I've been (slowly) writing a tutorial for writing a Matrix client. It's still in the very early stages, but I've gotten to showing how to send and receive events, and I've recently been working on the end-to-end encryption section. For those who saw an earlier version, you can now know more than you wanted to know about uploading device and one-time keys, and keeping track of recipient devices.
The tutorial is available at uhoreg.gitlab.io/matrix-tutori…