DEV Community

Ross
Ross

Posted on • Updated on

Planning and Inaugural Meeting of the Edinburgh Kotlin User Group

NOTE: Adapted from my blog post at Symphonic Software

Why did we start a Kotlin User Group?

My company have recently started moving from Java code to Kotlin. We have never been shy in technology adaption. We started with a full .NET stack, moved through an .NET/Java implementation then to Angular/Java. Along the way through experimentation with Elm, Ember, JavaScript and REACT we picked up some Groovy and some Python. We even had Neil Gall -one of our Senior Developers- present our method of testing with Python at Europython 2018. It's important to us to move with the times and use the best tools to create the best product.

Although the team we have assembled at Symphonic has adapted to the changing technologies with skill and enthusiasm, we've found that conventions do not take hold as quickly. For at least a period with new languages we find ourselves creating debt. We've written non-Pythonic Python and bent Groovy to do things we didn't know how to express in it at the time.
This is because it takes time and exposure to veterans to get comfortable with the intricacies of a language. We can increase this exposure and perhaps decrease the time by talking to and interacting with people who use the language, so we decided to run a user group.

How did we do it?

  • Put together a budget on what we would like to spend to make it successful.
  • Put together some posters that we could paste up in tech sites around the city
  • Advertised on Reddit, Edinburgh Tech Calendar, Twitter and EventBrite
  • Purchased refreshments (beer, juice, pizza)
  • Decided on venue (our office) and put together a speaker ("Kotlin for Java Developers" by our Head of Engineering, Ewan Dawson)
  • Registered with Kotlin Community and notified them of the upcoming talk, they provided us with free T-shirts and stickers
  • Registered with Developer Community Support who provided us with a free 1 year JetBrains license to raffle off.
  • Wrote a small Kotlin program, containing an interesting quirk of the language which selected one of the present people to win the prize.
import kotlin.random.Random.Default.nextInt

/**
 * Number of people playing
 *
 * Q: Anyone know why val requires to be declared
 *    const yet 'lateinit val T = 9' indicates
 *    that val is immutable?
 */
const val PLAYERS = 10

/**
 * Original: Pick a winning number from 1 to players
 */
fun pickWinningNumber(players: Int = 1) : Int {
    return nextInt(1, players)
}

How did it go?

The 11 attendees enjoyed themselves if the SurveyMonkey survey I sent out afterwards is anything to go by. People signed in and I used that list as both a health and safety list for fire regulations and as the start of a mailing list to send out my survey.

The small program intended to pick a winner for the JetBrains license turned into a bit of a talking point. Firstly because of the interesting IDE complaint it generated, secondly on a discussion of how Kotlin can make it even more concise.

We had people put themselves and others forward for future talks and suggest ways of increasing membership, one of which was to create a Meetup page.

We are now planning our second meetup, with a backlog of three speakers ready for more. Currently bi-monthly until the membership and speaker list increases a little but going well.

P.S. We're looking for speakers on anything Kotlin related if anyone is interested.

Top comments (0)