I'm a happy user of MasterClass for almost 3 months now, during which I've watched about 5 courses from experts in (very) different domains. These were probably the most engaging lessons I had online in my life.

I've got curious about how they engaged me and millions of other people worldwide to spend time on their platform and pay money for it. If you are as interested in the EdTech solutions as I am, let's try to figure that out together.

With this article, I'm finally starting the series of reviews for EdTech products — the subject I'm passionate about…


Firebase is usually considered a substitute for a "real" backend, mainly used by mobile teams to ship POC / MVP solutions without hiring backend developers and adding another technology (complexity) into a stack.

With the emergence of Ktor, it's now possible to write a real independent backend in Kotlin, which is widely popular among Android developers. See Backend for mobile engineers with Kotlin and Ktor for more details.

Does it mean that Firebase can't be useful for mobile development anymore? Of course, it doesn't! …


Legal matters can make sad even the most sober-minded developer. Especially when it comes to crafting documents, on which corporations, like Google or Facebook, spend thousands of man-hours.

But no worries, to each problem, there should be a solution on GitHub. And there is a great project call App Privacy Policy Generator created and open-sourced by Nishant Srivastava, which solves exactly this problem.

In the article, I'll show you how I generated and hosted Privacy Policy and Terms & Conditions documents for my open-source app Codeforces WatchR in 3 simple steps and about 5 minutes of my time.

Step 1: App information

Generator supports…


Most iOS (and Android) apps are written as a single module with features / layers separated by folders. If done right, modules can be extracted simply by moving whole folders to newly created modules. It’s rarely the case, though.

Modularization is known to be a good architecture decision for many reasons: better separation of concerns and features, cleaner code, easier communication and collaboration in the team.

With a number of modules growing, one day you will surely face a transitive framework dependency problem, which produces “ITMS-90562: Invalid Bundle” issue after uploading the build to App Store.

Disclaimer: We are using…


Let’s make things clear from the beginning. There is no way in which cross-platform mobile apps can match native mobile apps in performance, user, and developer experience. And they won’t ever be able to do it. Everything else is just marketing ;)

Native mobile apps are developed separately for Android (Kotlin) and iOS (Swift). Ecosystems are supported by Google and Apple correspondingly, so developers get the newest, the most stable, the most convenient tools (Android Studio, XCode), SDKs, and libraries for work.

There are only two issues about native mobile development: cost and consistency. If there is a problem, there…


How many times were you thinking about writing your backend for mobile apps you are working on? And how many times have you chosen Firebase instead? Are there any better options at the moment?

In this article, I'll describe our experience of writing Kotlin backend for Codeforces WatchR mobile apps using Ktor, which is officially positioned as follows:

An asynchronous framework for creating microservices, web applications, and more. It’s fun, free, and open source.

Why backend is needed?

Codeforces WatchR started almost 3 years ago as a pet-project, which used official Codeforces API to simply fetch and display data from server. But with time…


Developing breakthrough products is hard. Be it web or mobile, native or cross-platform, proof of concept, or production-ready app. By supporting several platforms, you multiply the difficulty by a factor of 2 or 3.

In this article, we will cover the following questions:

  • what is difficult about developing for multiple operating systems
  • why consistency is important
  • how to decrease complexity and increase the conformity of codebase

I’m going to share our experience of making native mobile applications more consistent, increasing our team’s coherence and bandwidth, and finally making our end-users happier 🤗

Inconsistent by design

As a mobile engineer with experience in both…


Kotlin Multiplatform is a great technology in the maturing period, which means that it's not always possible to find what you need for your project and you must craft it yourself. Are you ready for a challenge?

In this article, I'll share a step-by-step guide of creating and publishing of KMP library for JVM, Android and iOS targets. Target, if simply put, is just a type of device where you want your library to work.

Prerequisites

Codeforces WatchR is an open-source mobile client for Codeforces platform, where thousands of programmers compete in weekly algorithmic challenges. …


There are dozens of cross-platform technologies, which promise you "write-once run-anywhere" experience out of the box without any considerable drawbacks. But in the end, we all know it's not 100% true.

To be honest, there are only a few viable solutions for cross-platform application development when it comes to the mobile world: React Native, Flutter and Kotlin Multiplatform.

The latter is the youngest player in the field, but the most promising one. It's super-flexible, concentrates on sharing business-logic, ensures native UI/UX, and enables native development experience.

In this article, I want to share our migration journey of native iOS and…


Kotlin Multiplatform is one of the most interesting trends in mobile development this year. It's dedicated to sharing the code between many different platforms, including mobile ones — Android and iOS.

This technology concentrates on sharing the business logic in a form of a library, which means that you have quite limited access to platform-specific functionality when writing shared code. The database is a part of this limitation.

There are 2 options for database management with Kotlin Multiplatform out of the box: SQLDelight and SQLighter. Starting with them from the scratch is rather straightforward. …

Yev Kanivets

Professional Mobile Engineer since 2014, passionated by #EdTech, learning and teaching. Competitive programming enthusiast. Marathon Finisher.

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store