Kotlin

6

Coroutine Gotchas - Bridging the Gap between Coroutine and Non-Coroutine Worlds

Coroutines are a wonderful way of writing asynchronous, non-blocking code in Kotlin. Think of them as lightweight threads, because that’s exactly what they are. Lightweight threads aim to reduce context switching, a relatively expensive operation. Moreover, you can easily suspend and cancel them anytime. Sounds great, right?

Coroutine Gotchas - Bridging the Gap between Coroutine and Non-Coroutine Worlds

Sushi: A DSL for Conversational Flow Design

TL;DR We share our experience on how we built a conversational bot with Finite State Machines. It turned out to have its own shortcomings so we built a (Domain-Specific Language) DSL to design our flows and called it “Sushi”. Sushi is a more flexible and straight-forward tool to build complicated flows.

Sushi: A DSL for Conversational Flow Design