Mushtaq is probably the biggest Scala enthusiast and evangelist in all of ThoughtWorks! He has been programming in Scala for a long time, and has also been coaching for quite some while. (Keep an eye on @punescala for our Scala training programs.)


Mushtaq’s talk was a logical extension of our talk. Reactive programming has been all the rage lately, and the tech sphere is buzzing with words like sync, async, blocking, and non-blocking. This talk was to demystify the meanings of these terms. Mushtaq used a running example throughout his talk, which helped make the points very clear. He emphasized that sync/async is about the API, whereas blocking/non-blocking is about the implementation.


He showed how blocking is contagious, and how ExecutionContext in Scala can help quarantine the effects of blocking APIs.

Mushtaq used futures for above examples, but remarked that something like RxJava Observables (and “reactive streams” in general) are better at dealing with bulk operations. He illustrated this with a Twitter API client that he developed with RxJava.