Pull to refresh
15
Karma
0
Rating
Vadims Savjolovs @savjolovs

Senior Software Engineer at Facebook

Solving coding problems with Kotlin: Collection functions

Development for Android *Kotlin *

(originally published on Medium)

I have talked to many Android developers, and most of them are excited about Kotlin. So am I. When I just started learning Koltin, I was solving Kotlin Koans, and along with other great features, I was impressed with the power of functions for performing operations on collections. Since then, I spent three years writing Koltin code but rarely utilised all the potential of the language.

During this year, I did more than a hundred coding problems on Leetcode in Java. I didn’t switch to Kotlin because I know the syntax of Java 6 so well, that I could effortlessly write code without autocompletion and syntax highlighting. But I didn’t keep track of new Java features, as Android support of Java SDK lacked many versions behind. I didn’t switch to Kotlin for solving problems right away. Although I was writing Kotlin code for several years, I felt that I need to make an extra cognitive effort to get the syntax and the language constructions right. Solving algorithmic problems, especially under the time pressure, is very different from Android app development. Still, the more I learned about Kotlin, the more I realised how many powerful features I’m missing, and how much boilerplate code I need to write.

One day, I have decided that I need to move on, so I started a new session in Leetcode and switched the compiler to Kotlin. I solved just a few easy problems, but I already feel that I have something to share.

Читать далее
Rating 0
Views 1.5K
Comments 1

RxJava to Coroutines: end-to-end feature migration

Development for Android *Kotlin *
image

(originally published on Medium)

Kotlin coroutines are much more than just lightweight threads — they are a new paradigm that helps developers to deal with concurrency in a structured and idiomatic way.

When developing an Android app one should consider many different things: taking long-running operations off the UI thread, handling lifecycle events, cancelling subscriptions, switching back to the UI thread to update the user interface. In the last couple of years RxJava became one of the most commonly used frameworks to solve this set of problems. In this article I’m going to guide you through the end-to-end feature migration from RxJava to coroutines.
Read more →
Total votes 3: ↑3 and ↓0 +3
Views 3.3K
Comments 2

Основы архитектуры приложений на Flutter: Vanilla, Scoped Model, BLoC

Development for iOS *Development of mobile applications *Development for Android *Flutter *


(оригинал статьи на английском языке опубликован на Medium)


Flutter предоставляет современный реактивный фреймворк, большой набор виджетов и тулов. Но, к сожалению, в документации нет ничего похожего на руководство по рекомендуемой архитектуре приложения для Android.


Не существует идеальной, универсальной архитектуры, которая могла бы подойти под любые мыслимые требования технического задания, но давайте признаем, что большая часть мобильных приложений над которыми мы работаем имеют следующую функциональность:


  1. Запрос и загрузка данных.
  2. Трансформация и подготовка данных для пользователя.
  3. Запись и чтение данных из базы данных или файловой системы.

Учитывая все это, я создал демонстрационное приложение, которое решает одну и ту же задачу используя различные подходы к архитектуре.

Читать дальше →
Total votes 21: ↑21 and ↓0 +21
Views 26K
Comments 6

Flutter app architecture 101: Vanilla, Scoped Model, BLoC

Development for iOS *Development of mobile applications *Development for Android *Flutter *


(originally published on Medium)


Flutter provides a modern react-style framework, rich widget collection and tooling, but there’s nothing similar to Android’s guide to app architecture.


Indeed, there’s no ultimate architecture that would meet all the possible requirements, yet let’s face the fact that most of the mobile apps we are working on have at least some of the following functionality:


  1. Request/upload data from/to the network.
  2. Map, transform, prepare data and present it to the user.
  3. Put/get data to/from the database.

Taking this into account I have created a sample app that is solving exactly the same problem using three different approaches to the architecture.

Read more →
Total votes 17: ↑15 and ↓2 +13
Views 8.6K
Comments 0

Опыт создания курса по Android разработке на Udemy

Studying in IT
Sandbox
Одни из декабрьских выходных, за отсутствием какого-либо более интересного занятия, я прозябал перед экраном ноутбука. Не помню каким именно образом я оказался на сайте Udemy, но первое, что бросилось мне в глаза — это кнопка «Become an Instructor». О существовании онлайн-курсов я знал не понаслышке, но все курсы, которые проходил, были созданы в сотрудничестве с университетами или крупными компаниями. Об Udemy я слышал и даже заходил на сайт, но никогда не вникал в детали и не знал, что эта платформа предоставляет возможность создать собственный онлайн курс. Я начал изучать платформу, смотрел какие курсы пользуются спросом и умножал стоимость курсов на количество подписавшихся студентов, прикидывая возможную выручку инструктора, и тут же загорелся идеей создания собственного курса. Как только я решил, как именно буду тратить несметные богатства, принялся за дело. И теперь, спустя месяц после публикации курса хочу поделиться с вами своим опытом создания и продвижения курса на Udemy.
Читать дальше →
Total votes 21: ↑21 and ↓0 +21
Views 19K
Comments 7

Information

Rating
Does not participate
Location
London, England - London, Великобритания
Registered
Activity