First, I wrote a simple shell script, but it was too slow. Then I wrote a simple implementation in C#, but the performance was still awful. I wanted a better performance, because every time I had to tweak the script to make less noise.
Then I figured out that I can implement a really fast algorithm. Shell script was running about an hour on my project, naive implementation took 13 minutes, and with the new algorithm it took less than a minute. And I rewrote it in Java because I wanted to get familiar with new Eclipse IDE.