USBasp – USB Programmer for Atmel AVR Microcontrollers
This is an open source programming adapter for AVR microcontrollers designed by Thomas Fischl. If you would like to build your own, the circuit diagram, firmware and PCB board layouts are available on Thomas’s website.
The programmer is supported by the popular AVRDUDE programming software, and will work on both Linux and OS-X without the need for any driver software. For Windows, the provided driver software will need to be installed.
The jumper shown in the picture controls whether the programmer will supply power to the target board via the ISP header Vcc pin. The first position provides 5v, and the second 3.3v. If the jumper is left off then the Vcc pin will be unconnected.
These boards are available online and are very cheap, so building your own is not really worth the effort unless of course, you are motivated by factors other than time and money.