CRAFTING CONNECTED IOT APPLICATIONS: A PROGRAMMER'S GUIDE