Language Adventures

I’m in the process of figuring out what my next project will be. I don’t often have downtime like this, so when I do I like to make the most of it. That means it is a great time to explore new technologies and languages. I have a bunch of parts coming in to let me explore applying my Elixir expertise to the physical world - hello nerves!.

That means I’d like to look at some other languages or programming environments. I briefly considered going into TypeScript. I ended up deciding I’ll look at really work on it when I’m on a team again. Especially after having it summarized as a linter by a big fan.

When I built my last mobil application I used React Native. The goal was to avoid getting bogged down in the details of the mobile platform and be able to re-use all my web skills. As the build manager for the project, I often ended up in situations where I couldn’t tell if the problem was the React Native environment or something about my mobile environment. I made a note at the time that maybe it would be useful to learn more mobile native. so I could at least see the seams between the two.

I’ve avoided Java for most of my career. I did C/C++ when I started out. Once I got access to dynamic languages I never looked back. I took a run at Objective-C once and I just did need it enough at the time to power through all the things about it that drove me nuts.

Modern mobile development seems to have caught up to the idea that maybe Java/Objective-C aren’t the answer for everyone. Now you can build in Swift and Kotlin. I might have thought about Swift, but I have an Android phone and Linux desktop, so it wasn’t really that big of a leap to pick Kotlin.

I’ve spent the last several years in Elixir land. It has had a really profound effect on the way I tackle problems even when I’m not writing Elixir. I’ve seen several languages claim to be multi-paradigm.

From Kotlin Lang Website

Kotlin combines all the major programming paradigms in an elegant way,
making it possible to use functional, imperative, object-oriented,
or procedural programming – all within the same language. With Kotlin’s
support for coroutines, the concepts of concurrency and parallelism come naturally.

I’m suspicious of the claims. I read a whole book where they said you could do JavaScript in a functional style, but the amount of work made it feel like it was a fool’s errand. Again, I’ve been really spoiled by Elixir on concurrency and parallelism. But if the only way to sort the fact from fiction is to take the plunge.

So I guess I’m learning Kotlin