In the G-code firmware for Arduino and Sanguino, each G1 (or G0) command involves a fair amount of floating point computation before stepping the motors. The computation delay leads to blobbing when drawing a series of short segments. The attached patch causes the firmware to compensate for the delay by drawing short segments at a higher feedrate.
In my testing, I have found that this patch is reliable and replaces the need for other adjustments. See:
http://shane.willowrise.com/archives/delay-compensation-in-firmware
gcode-delay-compensation.patch