OpenOCD is great because its cross platform, open source, and has support for a vast number of chips & programmers. You can use OpenOCD with dongle-programmers such as J-Link and ST-Link or even an FTDI chip. But, if you have a spare Raspberry Pi (and who doesn't these days?) you can use it as a native OpenOCD programmer with just a few wires.
This guide starts with the absolute basics to build user interfaces on the PiTFT in Pygame. It shows how to update the screen from a GPI. Then, in reverse, the touch screen is used to control a GPO. Next, a UI framework is introduced - this makes better looking interfaces and more elegant code. Finally, an analog input is used to control a gauge widget on the display.
To keep the Raspberry Pi Zero as low cost and small as possible, the Pi foundation didn't include a 3.5mm audio jack. There's also no breakout pads for the audio output. This made us a little :( at first but then we thought "hey you know, we can probably figure out how to get audio out with a little hacking!