On why flash memory is problematic:
Flash memory controllers use very clever algorithms to minimize repeated write operations to any single flash memory cell. This is to mitigate the fact that flash cells are prone to die after a bunch of write operations. This means that, if you write to the same block repeatedly, each of the writes will end up going to totally different physical flash cells.
Additionally, the controller puts aside reserved space that it will use for remapping of broken flash cells. If it detects that a cell is failing, it'll try to copy it's contents into a cell from the reserved area. If this is successfull, the broken cell is then "swapped" for the intact cell from the reserved area. This happens totally transparent to the end user. Meanwhile, cells that have been remapped become completely inaccessible to the end user. The contents of these reserved memory areas can however still be revealed through forensic methods (direct access to the memory chips).
This all means that any software trying to wipe stuff off of flash memory will well reduce the overall lifetime of the flash memory device, but not actually succeed in wiping anything off of it. And the fact that stuff may get remapped into inaccessible areas further complicates the matter.
Some SSDs offer a low level command that supposedly tells the controller to zero out all the flash cells. It's anyone's guess if that even works as described - So, if you want to securely delete files on a flash memory based device, you'll have to physically destroy the device.