Talking about the Umdo key the other day reminded me of what I did when I bought a Griffin PowerMate a couple years back. It's a large silver knob that you connect to your computer via USB, and can have application-specific configuration.

I used BBEdit text editor back then, and it has fantastic infinite Undo and Redo functionality. The Undo is smart too: It groups actions together so that you don't Undo a word one letter at a time--the whole word goes at once (TextMate has a painfully step-by-step Undo, which is almost my only gripe about it).

I hooked the anticlockwise action of the PowerMate up to Command-Z (Undo) and clockwise to shift-Command-Z (Redo), and suddenly I could use it to scrub through my work. It was easy to try really broad changes in code, scrub back to grab a snippet I'd deleted, scrub forward and paste it back in. Handy.

Branching breaks using this for some kind of speculative mode, of course, because you can't try something out, scrub back, start typing again and also include code from your tryout--the Redo buffer has been cleared. And it's also hard to tell where the stable points are, in time, of the code changing. The knob needs to click, or resist moving, when you're going through an inflective point of change.