My JTAG Cable1 has just failed and I need to get another JTAG programmer,
ideally with a USB interface although if it has to be serial so be it.
Obviously I'd get an Atmel JTAG ICE Mk11 if the cost wasn't so ridiculously
high so it'll have to be an alternative.

I bought the Olimex USB JTAG. It is really a serial JTAG with a
USB-serial adapter inside it, of course. It is cheap, it works exactly
like a regular JTAG-ICE (mk.1), I can't fault it. However you should
note that the documentation is not exactly right, and there are some
things I don't completely understand:

* adapter is target-powered despite being described as "USB-powered".
* you MUST have Vref connected on the JTAG interface, and it must be
connected to some nonzero voltage on your target.

I think it says that both pins 7 and 4 need to be connected to the same
voltage but I thought that pin 7 was the actual power and pin 4 was just a
signal? Therefore, for example, 5V on 7 and 3.3V on 4 would be OK?

If you are going to use DebugWire (standard on all newer chips with low
pincount), the MKII is your only choice. Plus it handles USB at full speed
natively (Philips USB controller connected to one of the two Mega128)
without having to go through a serial bottleneck.

How reliable are the AVR's flash?
I have two Atmega169 (in AVR butterfly) failing.
They are supposed to last 10,000 cycles.
And yet, one failed after hundreds of cycles
and the second failed exactly after one cycle.

I can't program either one of them anymore.
The first one refuse to verify and the second
one verified but still contain the previous version.

If it's so difficult to program them, perhap I should
switch to PLCC (44 pins) socket rather than MLF (64 pins).

That's what I did. The read back file (using the same
programmer, avrdude) is different from the new file.
Although I don't have the old version to compare,
the AVR is still running the older code.

I know the bootloader first store it in SRAM (1K),
but it could not have stored the whole file (10K).
The only thing I can think of is that the flash has
a long term memory (old file) and a short term
memory (new file).

We might have to reconsider the bootloader in
general and atmega169 in specific.