The Right Lang for the Job

Exploring the abbyss of non-mainstream programming languages

What's wrong with mobile development? From a max-level newbie.

Last updated on:

I'm tempted to say: everything, but it's obviously not that bad. Still...

Kotlin is good, why don't you use it properly?

You're not writing Java, why would you replicate its limitations in a language that doesn't have them.

Dependency Injection frameworks

Convenient and nice when used properly. Absolute disaster when taken too far. Just because you don't have to think about inter-class dependencies doesn't mean that you shouldn't think about them!

RxJava should die in a fire and fast

Trying to hammer everything into a single metaphor doesn't work too well. Otherwise Haskell would be the most popular language out there. RxJava tries to express all computation as operations on streams, ignoring the fact that not all computation is suited for such representation.

Writing correct concurrent code that can run some of its parts in parallel is not easy. Using RxJava for it makes it harder. Kotlin coroutines provide a much better way of dealing with it - scopes handle cancellation without getting in the way, await allows for easy offloading one-off tasks that need to return a result, Flows handle streams of values where it makes sense, channels and actors allow for multiple modes of communication between threads and tasks. The M:N concurrency model - admittedly, the same RxJava uses - saves resources by dispatching concurrent tasks that don't have to be run in parallel on a single thread.

While RxJava provides literally hundreds of methods on a handful of classes, parts of Kotlin coroutines tend to have very small base API, augmented with extension methods in some contexts.

And so on... Just don't use Rx if you can avoid it, that's all.