How to Build Your Own Self-programming Robot