Programming for Embedded Systems: Cracking the Code