Self-programmer