Developing parallel applications is notoriously difficult, but is even more complex for desktop applications. The added difficulties are primarily because of their interactive nature, where performance is largely perceived by its users. Desktop applications are typically developed with graphical toolkits that in turn have limitations in regards to multi-threading. This article explores the structure of desktop applications, the limitations of the threading model and walks the reader through the parallelisation of a desktop application using object-oriented and GUI-aware concepts. Motivation Parallelisation is the process of decomposing a large computation into smaller parts, and consequently executing those smaller parts simultaneously to reduce the overall processing time. Despite the potential performance benefits, parallel computing has long been a programming nightmare for software developers. Theoretical challenges include requiring developers to envision the original problem in...