I'm hoping this helps someone, I learned a lot from doing it. I originaly wrote this in java. After I "misplaced" 2 of the files, I decided that I'd re-write it in ruby, since I'd been wanting to learn more about it. I couldn't find a non-trivial example of ruby out there, so I've hacked one together. The program has 3 main parts, a timer that runs in a seperate thread and calls it's registered call_backs. A gui written in gtk that runs in it's own thread, gets notified to update the time, and notifies it's own call_back list for status and resets. Then there is the main thread. The main thread reads in the xml file that represents the workout, parses and objectifys it, places the objects in a list, spawns off the other processes, then waits and notify's the gui of the time. Many improvements I want to do (comments) but I hope someone finds it usefull. The program requires ruby-xmlparse, ruby-1.6, ruby-gtk, and ruby-glade, and can be found at... http://sahuagin.ne.mediaone.net/~tcovert