I wrote this document so that it would have been extreeeeemely helpful to have when I started my work with Bluetooth. It targets the experienced programmer who is comfortable with either C or Python, is reasonably comfortable with the Linux environment, and is familiar with socket programming. This document specifically does not introduce network and socket programming concepts, as there are some excellent guides for that already, such as Beej's Guide to Network Programming. If you find yourself struggling with the socket concepts discussed in this document, I strongly recommend reading through Beej's guide and then coming back.
Beyond knowledge of C or Python and network programming, it is not necessary to know much about other development libraries or systems to understand the material presented here.