Here's an article I wrote about reusing a cheap ($6) USBasp programmer for another project by flashing new code on to it. It's a decent alternative to a more expensive USB dev board if you have a simple project that doesn't require any pins or you can make do with the four SPI pins. The article discusses how to download new code using an external programmer or USBaspLoader. It also explains how to make it work with the Arduino IDE. At the end are a couple of evil demo programs showing how to use it as a USB HID keyboard.