I made myself a program that downloaded & organized torrent music files; it was customizable so that %a/%y - %d meant store underneath <artist name>/<year> - <album name>. It was one of first projects I ever coded, and eventually got to point where main thread would lock up cause I was doing so much processing on it. As anyone who does this kinda work knows, main thread processes graphics, so when it would freeze up for 10-20 seconds I really had no idea what was going on and started doing all this crazy stuff before figuring out how to handle threads.