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.
Disclaimer: The statements and opinions expressed in this article are those of the author(s) and do not necessarily reflect the positions of Thoughtworks.
Thoughtworks acknowledges the Traditional Owners of the land where we work and live, and their continued connection to Country. We pay our respects to Elders past and present. Aboriginal and Torres Strait Islander peoples were the world's first scientists, technologists, engineers and mathematicians. We celebrate the stories, culture and traditions of Aboriginal and Torres Strait Islander Elders of all communities who also work and live on this land.
As a company, we invite Thoughtworkers to be actively engaged in advancing reconciliation and strengthen their solidarity with the First Peoples of Australia. Since 2019, we have been working with Reconciliation Australia to formalize our commitment and take meaningful action to advance reconciliation. We invite you to review our Reconciliation Action Plan.