The Art of Concurrency: A Thread Monkey's Guide to Writing Parallel Applications