The last internal meetup of the year normally ends with an awesome company event and a great dinner where we get to enjoy the finest food and maybe a glass of wine or two 😉 But not this year, COVID made that impossible, but nevertheless we tried to keep up the good spirit and arranged our meetup 100% remotely, working from home.
Every meetup we try to stick to a theme and Decembers meetup was all about asynchronous programming. We settled for two main subjects:
- Project Loom: Lightweight Threads for the JVM
- Kotlin Flow: An asynchronous data stream that sequentially emits values and completes normally or with an exception.
Topics for our meetups are picked by the Sourcelabs team every time we do a meetup. We spend 15 minutes in the morning to decide on the theme for our next meetup and also who will be preparing the content.
As I suggested Kotlin Flow (and it also got voted on), I had the opportunity to prepare the content for this subject. Daniel Mast, a new Sourcelabs colleague, prepare the session about Project Loom.
One of the nice things about the format of our meetups is that we try to prepare just enough content so we never get in the situation that we don`t have anything to do during the day. To give an example of what this preparation looks like: we try to find some introduction videos, for which youtube is an excellent source, and some getting started guides to get our hands dirty.
During the meetup we try to collaborate with the entire team in such a way that everyone is participating. We have found that using Mob programming is an effective approach for us, since everyone gets to actively participate during our Mob sessions.
So to get an idea of what Kotlin Flow actually is, you need to have a basic understanding of Kotlin coroutines as Kotlin Flow is build on top of this. Therefore we started with a youtube video by Venkat about Kotlin Coroutines.
After this presentation we started playing around with Kotlin coroutines to get an idea of how this works. Exploring the difference between launch, async, runBlocking, suspending functions and so on.
Next up an introduction video about Kotlin Flow from Roman Elizarov:
Since Kotlin Flow is Reactive streams compatible, I tried to explain some of the use-cases and how this would work in Kotlin Flow. I prepared some exercises so we could get to play around with the concepts of Kotlin Flow.
What I like the most about our internal meetups is that we get to leverage the knowledge and experience from our peers. I also noticed that at our clients the usage of reactive streams and programming models are not as widely spread as you might think. Therefore this makes subjects like Kotlin Flow super interesting, but at the same time for some of us a bit more abstract.
The ‘borrel’ / drinks
This year we ended our meetup with a remote ‘borrel’ / drinks, which is nowhere near as much fun as enjoying the good company of my fellow Sourcelabs colleagues in person, but I guess its as good as it gets for this year!