This started as a simple program to try to automatically play the game Polarized Pixel for me.
It has since evolved into something fairly complicated with managing controlling the user's computer across Linux, Mac Os, and Windows. For example, to do this in windows i need to make use of the exported User32 functions.
The other hard part is very fast image recognition so that the program can actually react to what is on screen. I've looked into implementing FFT, different pattern recognition algorithms and haven't quite settled yet.
Whenever I have free time I might work on it a little.