These AVR programmers are based on Thomas Fischl's USBasp design and connect to your computer's USB port. Not only are they quite compact (70x20mm), but the design is really elegant. The USB interface is achieved by using an atmega8 processor and the rest is done in firmware.
Being an Open source hardware (OSHW) project, released under the GNU General Public License, you are free to download the schematic and firmware from Thomas's website, but then you have a chicken and egg problem. In order to load the USBASP firmware onto the atmega8 on the programmer, yes you guessed it, you need an AVR programmer. Much easier to buy one fully built and programmed.
This handy little programmer is well known by hobbyists and seasoned AVR coders alike. The drivers are compatible with 32-bit and 64-bit operating systems. The programmer supports a gamut of Atmel chips, more details are given below.
List of supported chips:
Support chips as listed (Note: all chip models with "L " can use program of the same type)
51Series, AT89S51 AT89S52, AVR Series, ATTiny
AT89S51, AT89S52, AT89S8253, AT89S2051, AT89S4051, AT86RF401, AT90CAN32, AT90CAN64, AT90CAN128, AT90PWM2, AT90PWM2B, AT90PWM3, AT90PWM3B, AT90PWM81, AT90PWM216, AT90PWM316, AT90S1200, AT90S2313, AT90S2323, AT90S2343, AT90S4414, AT90S4433, AT90S4434, AT90S8515, AT90S8535, AT90SCR100H, AT90USB82, AT90USB162, AT90USB646, AT90USB647, AT90USB1286, AT90USB1287
ATmega8, ATmega8A, ATmega8U2, ATmega8HVA, ATmega16, ATmega16A, ATmega16HVA, ATmega16HVB, ATmega16M1, ATmega16U2, ATmega16U4, ATmega32, ATmega32A, ATmega32C1, ATmega32HVB, ATmega32M1, ATmega32U2, ATmega32U4, ATmega32U6, ATmega48, ATmega48P, ATmega48PA, ATmega64, ATmega64A, ATmega64C1, ATmega64M1, ATmega88, ATmega88P, ATmega88PA, ATmega103, ATmega128, ATmega128A, ATmega128RFA1, ATmega161,ATmega162, ATmega163, ATmega164P, ATmega164PA, ATmega165,ATmega165P, ATmega168, ATmega168P, ATmega168PA, ATmega169, ATmega169P, ATmega323, ATmega324, ATmega324PA, ATmega325, ATmega325P, ATmega328P, ATmega329, ATmega329P, ATmega406, ATmega640, ATmega644, ATmega644P, ATmega644PA, ATmega645, ATmega649, ATmega1280, ATmega1281, ATmega1284P, ATmega2560, ATmega2561, ATmega3250, ATmega3250P, ATmega3290, ATmega3290P, ATmega6450, ATmega6490, ATmega8515, ATmega8535
ATtiny10, ATtiny11, ATtiny12, ATtiny13, ATtiny13A, ATtiny15, ATtiny22, ATtiny24, ATtiny24A, ATtiny25, ATtiny26, ATtiny28, ATtiny43U, ATtiny44, ATtiny44A, ATtiny45, ATtiny48, ATtiny84, ATtiny85, ATtiny88, ATtiny167,ATtiny261, ATtiny261A,ATtiny461,ATtiny861, ATtiny861A, ATtiny2313, ATtiny2313