When i hit undo joe is sometimes obliterating the entire line i typed. it would be better (imho) if joe simply undid ONE operation. one operation might be ONE cursor movement or ONE character entered. This might be slower, require a smarter undo and need more memory to save undo info but it would mean i wont have to retype 80 characters after i tried to undo ONE and lost everything :/
I agree that the UNDO is far from perfect, but for the time being use REDO (ctrl+6 or ctrl+shift+6, depending on the layout and whether you're on console or X terminal).