Hi, I am David! I am a software engineer from Prague, Czech Republic enjoying my life in Seoul, South Korea.

I occasionally put up some articles about Android, Gradle, Kotlin or programming in general, usually when something noteworthy comes up at work.

Profession

For the majority of my career, I have led the technical development of projects with millions of users. I typically took on the role of improving the architecture of the projects and building more robust foundations for other developers to build on top of.

I currently work as an Android developer at LINE where I strive to improve the architecture and code quality of the LINE Pay feature.

In my day-to-day work, I use Kotlin, but I have a lot of interest in other programming languages as well. I believe learning other languages can make us more proficient in our primary languages as well. The two languages I learned a lot from are Rust and Haskell. I made a presentation a couple of years ago titled Learn From the Enemies which focuses on some of the functional programming principles and how they can be effectively applied to the object-oriented paradigm as well.

When actually programming, my goal isn’t to create code that works at that moment but to write code that is guaranteed to work even if the context of the code changes. A large volume of bugs occur because the code depends on unwritten contracts which are checked neither by any tests nor by the compiler. Algebraic data types, strong typing and/or immutability may help to express such contracts in code. If these contracts are not satisfied, the compiler will complain, making the compilation act as a form of unit test.

But rather than fixing the potential issues on my own, I want other developers to understand the background of the problems themselves. Over the years, I have prepared dozens of presentations for other developers. These covered a wide range of topics, including, but not limited to:

  • Dependency Injection
  • Android themes and styles
  • Clean/Layered architecture
  • Coroutines main-safety
  • Structured concurrency
  • Testing coroutines
  • Algebraic data types
  • Gradle convention plugins
  • ISO 8601 and java.time
  • Composition over inheritance
  • Unit testing MVVM
  • Function composition
  • Pure functions
  • Function colorability
  • OpenAPI specification

I often refer to SOLID principles, pointing out where the code violates these principles and providing a better alternative. I also guide other developers in avoiding certain bad practices, such as the use of the @VisibleForTesting annotation, or compatibility issues behind internally published APIs, and help them write idiomatic Kotlin code rather than just using Kotlin to write Java code.

Education

I studied at Czech Technical University in Prague. In 2015, I graduated with honours earning Bachelor’s degree in Software Engineering. In 2018, I earned a Master’s degree, also in Software Engineering.

During my studies, I went to Korea as an exchange student to Seoul National University of Science and Technology in 2014, University of Seoul in 2016 and Ajou University in 2017.

Other stuff

Outside of work, I like experimenting with and learning other technologies. I learned about quantum computing and wrote and published a Quantum computer emulator using Kotlin DSL. I have also released an IntelliJ IDEA plugin and contributed to and published several open-source libraries, including Kotlin multiplatform projects. I also have experience with reverse engineering Android apps and rooting my personal phone.

About website

This website is hosted on GitHub Pages platform and uses Jekyll static site generator to render content written mostly in Markdown.