I am heartbroken to share the news that I’ll be leaving JetBrains next week for personal reasons. Working on Kotlin was the best job I’ve had. The greatest asset that Kotlin has is you, the Kotlin community. Interacting with you was the highlight of my life all those years. /1
Roman Elizarov
4,614 posts
Software infrastructure & libs, language design, sports programming/ICPC, concurrency & algorithms, math & quantitative finance. ex-project lead for @Kotlin
Joined September 2010
- Protip: Reduce code nesting. Don't bury essential logic like this: if (a) { return fast1 } else { if (b) { // the usual path } else { return fast2 } } Use early return, write this: if (a) return fast1 if (!b) return fast2 // usual path follows
- You cannot become a good writer without a lot of reading; You cannot learn to write good code without reading a lot of code.
- I am delighted to see so much love for Kotlin ❤️ This great community is what makes Kotlin tick. Thanks a lot to @abreslav for creating and growing this beautiful and fun programming language.
- The most important quality a software developer should have is being a good, caring, respectful person. True for other professions as well.
- The JVM Exception class is not the superclass of all exceptions that can be thrown. Throwable is. A common mistake is to write catch(e: Exception) and think that it catches all failures. It does not. If you need error logging/handling (usually at the top level), catch Throwable.
- Unpopular opinion: the defacto standard src/main/java boilerplate directory structure is one of the worst things that ever happened to the JVM ecosystem. It raises the barrier for small projects, entrenching the perception of JVM heavy-weightiness.
- No one wants to program in a dynamically typed language. No one says, "I want this string variable to hold a string an integer now". Hold your defense of Python and JS — read on. I'll explain why dynamically typed languages exist, what they're good for, and why they're still here
- Current status: debugging the debugger in a debugger, with a breakpoint at a place that is called when a breakpoint is hit.
- 🎉 The fast and scalable channels for Kotlin Coroutines have been merged! As the author of the original channels implementation who knows their shortcomings from insides, I'm delighted to see this multi-year effort finally coming to a conclusion.
- The beginning of a new era in Kotlin development. Kotlin/Native sources are now in the same Git repo, together with the compiler frontend and all the other Kotlin backends (K/JVM, and K/JS). Kudos to the team for making it happen
- My daughter is studying Java in university. She consults with me a lot, often confused on why she has to do this and that, like why ints compare with ==, but Strings with equals, why int -x, but BigInteger x.negate(), why extends vs implements, why arrays[] but List.get(), etc.
- Apparently, the art of writing code to efficiently search large problem domains is rarely taught nowadays, so lot of people struggle on problems like AdventOfCode Day 24 part 2. Let me try to explain how you should approach a programming task like this one 🧵
- Kotlin Coroutines are designed to be easy to integrate, easy to use, safe with resources, high-performance. But there was always one gripe. It was hard to visualize and see what's going on when you debug a piece code with several coroutines. Finally fixed!

