Рождественский, последний в этом году дайджест. Счастливого вам Нового года и Рождества, хорошего кода и интересных проектов, мира, любви и счастья. Увидимся в уже в новом году!
В нашем Telegram-канале Mobile Insights, еще больше материалов для разработчиков — подключайтесь!

 iOS
iOS
• Встречайте: новый протокол Transferable
• Как подключить российский SSL-сертификат к iOS-приложению
• Async/await в iOS: что нам дает неблокирование потоков
• Swift модуляризация вашего проекта
• Apple снова работает над собственным поисковиком
• Swift Properties and how to use them correctly
Swift Properties and how to use them correctly
• What to consider if Apple opens up the iOS app ecosystem
What to consider if Apple opens up the iOS app ecosystem
• Reduce share extension crashes from your app with this one weird trick!
Reduce share extension crashes from your app with this one weird trick!
• Testing push notifications within XCTest
Testing push notifications within XCTest
• Lazy Closures Using Swift
Lazy Closures Using Swift
• A Comprehensive Guide to URLs in Swift and SwiftUI
A Comprehensive Guide to URLs in Swift and SwiftUI
• How to Create an iOS Lock Screen Widget?
How to Create an iOS Lock Screen Widget?
• Prototyping SwiftUI interfaces with OpenAI’s ChatGPT
Prototyping SwiftUI interfaces with OpenAI’s ChatGPT
• Efficiently Managing Multiple Async Tasks in SwiftUI
Efficiently Managing Multiple Async Tasks in SwiftUI
• Developing iOS Applications without ready-to-use backend API
Developing iOS Applications without ready-to-use backend API
• SwiftUI Performance Tuning: Tips and Tricks
SwiftUI Performance Tuning: Tips and Tricks
• How to take advantage of SwiftUI inside UIKit?
How to take advantage of SwiftUI inside UIKit?
• Generate a Shazam signature with only one line instead of 120
Generate a Shazam signature with only one line instead of 120
• RunLoop.main vs DispatchQueue.main: The differences explained
RunLoop.main vs DispatchQueue.main: The differences explained
• Create an End-to-End SwiftUI Application With Swift Playgrounds on iPad
Create an End-to-End SwiftUI Application With Swift Playgrounds on iPad
• How to Implement a Unit Test in an iOS Legacy Codebase
How to Implement a Unit Test in an iOS Legacy Codebase
• How to create text recognition with Vision Framework in Swift
How to create text recognition with Vision Framework in Swift
• SwiftUI View Lifecycle: демонстрация жизненного цикла
SwiftUI View Lifecycle: демонстрация жизненного цикла
• Popup View: тосты и попапы для SwiftUI
Popup View: тосты и попапы для SwiftUI
 Android
Android
• Binder: как устроена работа с несколькими процессами в Android
• Настраиваем Gitlab CI для сборки Android-проекта
• Yolo на мобильном без постобработки
• Material You Color System: быстрое погружение в пучины
• Factory Design Pattern
Factory Design Pattern
• Android HDR | Migrating from TextureView to SurfaceView
Android HDR | Migrating from TextureView to SurfaceView
• Maps Compose Library Tutorial for Android: Getting Started
Maps Compose Library Tutorial for Android: Getting Started
• ViewModel: for UI business, not UI operations
ViewModel: for UI business, not UI operations
• Internals of Kotlin flows
Internals of Kotlin flows
• Unhandled Exceptions in Kotlin Collections
Unhandled Exceptions in Kotlin Collections
• Optimize Android App Development With Docker, SonarQube, Detekt, and MobSF
Optimize Android App Development With Docker, SonarQube, Detekt, and MobSF
• Stylus Low Latency
Stylus Low Latency
• Adding a domain layer
Adding a domain layer
• Everything you need to know about State in Jetpack Compose with examples
Everything you need to know about State in Jetpack Compose with examples
• Drag and drop with AndroidX
Drag and drop with AndroidX
• Nearby Connections for Android: Getting Started
Nearby Connections for Android: Getting Started
• Using ChatGPT to Set Up an Android App
Using ChatGPT to Set Up an Android App
• 3 Awesome Kotlin Feature Requests
3 Awesome Kotlin Feature Requests
• Launching coroutines vs suspend functions
Launching coroutines vs suspend functions
• Improving Your Gradle Workflow by Not Auto-reloading Build Files
Improving Your Gradle Workflow by Not Auto-reloading Build Files
• UnifiedPush: a decentralized, open-source push notification protocol
UnifiedPush: a decentralized, open-source push notification protocol
• Android Object Animator
Android Object Animator
• Catalog Android Sample App: образцовый каталог
Catalog Android Sample App: образцовый каталог
• Animated Circular Download Button: кнопка загрузки
Animated Circular Download Button: кнопка загрузки
• Jukebox: аудиоплеер для Jetpack Compose
Jukebox: аудиоплеер для Jetpack Compose
 Кроссплатформа
Кроссплатформа
• Flutter Flame: глобальная оптимизация производительности игрового движка
• Тестирование мобильных приложений на Flutter с использованием Python + Appium
• Unity «уменьшение размера файла на устройстве» Часть 1
• Write best performance ListViews with Riverpod in Flutter
Write best performance ListViews with Riverpod in Flutter
• Impeller & Flutter
Impeller & Flutter
• Flutter is No Longer a Cross-platform Framework — it is something more
Flutter is No Longer a Cross-platform Framework — it is something more
• Reasons Why Flutter Can’t Beat React Native
Reasons Why Flutter Can’t Beat React Native
• Retrofit Implementation In Flutter
Retrofit Implementation In Flutter
• Flutter Bottom Navigation Bar Animation
Flutter Bottom Navigation Bar Animation
• Retrofit Implementation In Flutter
Retrofit Implementation In Flutter
• How to Hack & Protect Flutter Apps — Simple and Actionable Guide
How to Hack & Protect Flutter Apps — Simple and Actionable Guide
• Rive and Flutter: A Match Made in Animation Heaven
Rive and Flutter: A Match Made in Animation Heaven
 Разработка
Разработка
• Как тестировать современный фронтенд
• Что будет в 2023: тренды мобильной разработки
• Какие проблемы решает Release Train в мобильной разработке
• Что такое Design Review
• Нефункциональные проверки при тестировании мобильных приложений
• Библиотека компонентов для дизайнеров приложений
• Как мы создавали мобильное приложение «Х5 Недвижимость», или любовь не с первого касания
• Несовершенство трех законов робототехники
• Как дизайнить приложения, если ты не дизайнер? Пошаговая инструкция
• Podlodka #299: приоритизация
• Зарплата в IT за год выросла на 16.5%
• «Ростелеком» заместит Trello и Jira «Ягой»
• Google ужесточает Performance Review сотрудников
• Программисты тратят на бессмысленную работу в среднем 38% своего рабочего времени
• Самые высокооплачиваемые вакансии декабря в области разработки приложений
• Как разработать приложение доставки in-house: опыт экспресс-доставки Перекрёстка
• The Awesome Power of Well-Documented Code
The Awesome Power of Well-Documented Code
• Yet another way to deal with nested if/else conditions
Yet another way to deal with nested if/else conditions
• Scrum Teams are often Coached to Death, while the Problems are With Management
Scrum Teams are often Coached to Death, while the Problems are With Management
• Gamification gone wrong: stop the streaks
Gamification gone wrong: stop the streaks
• 7 Design Tips I Learned From Apple
7 Design Tips I Learned From Apple
• 37 tips for improving productivity in software development teams
37 tips for improving productivity in software development teams
• Most Popular Tech Interview Questions asked @ FAANG
Most Popular Tech Interview Questions asked @ FAANG
• The Best of Material in 2022
The Best of Material in 2022
• How To Increase Development Velocity by Future Proofing Your Code
How To Increase Development Velocity by Future Proofing Your Code
• Building a Secure Mobile App in the Cloud
Building a Secure Mobile App in the Cloud
• How I Created a Free Digital Product That People Want To Pay
How I Created a Free Digital Product That People Want To Pay
• Challenging algorithms and data structures every programmer should try
Challenging algorithms and data structures every programmer should try
• UX for Introverts
UX for Introverts
 Аналитика, маркетинг и монетизация
Аналитика, маркетинг и монетизация
• Расходы на приложения снизились на 2% — обзор 2022 года от data.ai
• $20 млн: Deep Voodoo — студия дипфейков создателей «Южного парка»
• $30 млн: ImagenAI — постобработка фото на основе ИИ для профессиональных фотографов
• Epic Games оштрафовали на $520 млн за «темные паттерны»
• Маркетологи в мобайле. Итоги года 2022. Часть 1
• Повторит ли BeReal судьбу Clubhouse?
• Состояние социальных приложений в Европе 2022
• Альтернативные магазины мобильных приложений: как обойтись без Google Play и AppStore
 AI, Устройства, IoT
AI, Устройства, IoT
• #4 Нейронные сети для начинающих. Sudoku Solver. Судоку. Часть 1
• Третья жизнь пет-проекта по распознаванию рукописных цифр
• Телематическая система автомобиля
• OpenAI открыла Point-E — систему преобразования текста в 3D-модели
• Apple может отказаться от выпуска новой версии iPhone SE
• Google распознает почерк врачей
• Magic Mirror — my first ever Raspberry Pi project
Magic Mirror — my first ever Raspberry Pi project
← Предыдущий дайджест. Если у вас есть другие интересные материалы или вы нашли ошибку — пришлите, пожалуйста, в почту.
В нашем Telegram-канале Mobile Insights, еще больше материалов для разработчиков — подключайтесь!

 iOS
iOS• Встречайте: новый протокол Transferable
• Как подключить российский SSL-сертификат к iOS-приложению
• Async/await в iOS: что нам дает неблокирование потоков
• Swift модуляризация вашего проекта
• Apple снова работает над собственным поисковиком
•
 Swift Properties and how to use them correctly
Swift Properties and how to use them correctly•
 What to consider if Apple opens up the iOS app ecosystem
What to consider if Apple opens up the iOS app ecosystem•
 Reduce share extension crashes from your app with this one weird trick!
Reduce share extension crashes from your app with this one weird trick!•
 Testing push notifications within XCTest
Testing push notifications within XCTest•
 Lazy Closures Using Swift
Lazy Closures Using Swift•
 A Comprehensive Guide to URLs in Swift and SwiftUI
A Comprehensive Guide to URLs in Swift and SwiftUI•
 How to Create an iOS Lock Screen Widget?
How to Create an iOS Lock Screen Widget?•
 Prototyping SwiftUI interfaces with OpenAI’s ChatGPT
Prototyping SwiftUI interfaces with OpenAI’s ChatGPT•
 Efficiently Managing Multiple Async Tasks in SwiftUI
Efficiently Managing Multiple Async Tasks in SwiftUI•
 Developing iOS Applications without ready-to-use backend API
Developing iOS Applications without ready-to-use backend API•
 SwiftUI Performance Tuning: Tips and Tricks
SwiftUI Performance Tuning: Tips and Tricks•
 How to take advantage of SwiftUI inside UIKit?
How to take advantage of SwiftUI inside UIKit?•
 Generate a Shazam signature with only one line instead of 120
Generate a Shazam signature with only one line instead of 120•
 RunLoop.main vs DispatchQueue.main: The differences explained
RunLoop.main vs DispatchQueue.main: The differences explained•
 Create an End-to-End SwiftUI Application With Swift Playgrounds on iPad
Create an End-to-End SwiftUI Application With Swift Playgrounds on iPad•
 How to Implement a Unit Test in an iOS Legacy Codebase
How to Implement a Unit Test in an iOS Legacy Codebase•
 How to create text recognition with Vision Framework in Swift
How to create text recognition with Vision Framework in Swift•
 SwiftUI View Lifecycle: демонстрация жизненного цикла
SwiftUI View Lifecycle: демонстрация жизненного цикла•
 Popup View: тосты и попапы для SwiftUI
Popup View: тосты и попапы для SwiftUI Android
Android• Binder: как устроена работа с несколькими процессами в Android
• Настраиваем Gitlab CI для сборки Android-проекта
• Yolo на мобильном без постобработки
• Material You Color System: быстрое погружение в пучины
•
 Factory Design Pattern
Factory Design Pattern•
 Android HDR | Migrating from TextureView to SurfaceView
Android HDR | Migrating from TextureView to SurfaceView•
 Maps Compose Library Tutorial for Android: Getting Started
Maps Compose Library Tutorial for Android: Getting Started•
 ViewModel: for UI business, not UI operations
ViewModel: for UI business, not UI operations•
 Internals of Kotlin flows
Internals of Kotlin flows•
 Unhandled Exceptions in Kotlin Collections
Unhandled Exceptions in Kotlin Collections•
 Optimize Android App Development With Docker, SonarQube, Detekt, and MobSF
Optimize Android App Development With Docker, SonarQube, Detekt, and MobSF•
 Stylus Low Latency
Stylus Low Latency•
 Adding a domain layer
Adding a domain layer•
 Everything you need to know about State in Jetpack Compose with examples
Everything you need to know about State in Jetpack Compose with examples•
 Drag and drop with AndroidX
Drag and drop with AndroidX•
 Nearby Connections for Android: Getting Started
Nearby Connections for Android: Getting Started•
 Using ChatGPT to Set Up an Android App
Using ChatGPT to Set Up an Android App•
 3 Awesome Kotlin Feature Requests
3 Awesome Kotlin Feature Requests•
 Launching coroutines vs suspend functions
Launching coroutines vs suspend functions•
 Improving Your Gradle Workflow by Not Auto-reloading Build Files
Improving Your Gradle Workflow by Not Auto-reloading Build Files•
 UnifiedPush: a decentralized, open-source push notification protocol
UnifiedPush: a decentralized, open-source push notification protocol•
 Android Object Animator
Android Object Animator•
 Catalog Android Sample App: образцовый каталог
Catalog Android Sample App: образцовый каталог•
 Animated Circular Download Button: кнопка загрузки
Animated Circular Download Button: кнопка загрузки•
 Jukebox: аудиоплеер для Jetpack Compose
Jukebox: аудиоплеер для Jetpack Compose Кроссплатформа
Кроссплатформа• Flutter Flame: глобальная оптимизация производительности игрового движка
• Тестирование мобильных приложений на Flutter с использованием Python + Appium
• Unity «уменьшение размера файла на устройстве» Часть 1
•
 Write best performance ListViews with Riverpod in Flutter
Write best performance ListViews with Riverpod in Flutter•
 Impeller & Flutter
Impeller & Flutter•
 Flutter is No Longer a Cross-platform Framework — it is something more
Flutter is No Longer a Cross-platform Framework — it is something more•
 Reasons Why Flutter Can’t Beat React Native
Reasons Why Flutter Can’t Beat React Native•
 Retrofit Implementation In Flutter
Retrofit Implementation In Flutter•
 Flutter Bottom Navigation Bar Animation
Flutter Bottom Navigation Bar Animation•
 Retrofit Implementation In Flutter
Retrofit Implementation In Flutter•
 How to Hack & Protect Flutter Apps — Simple and Actionable Guide
How to Hack & Protect Flutter Apps — Simple and Actionable Guide•
 Rive and Flutter: A Match Made in Animation Heaven
Rive and Flutter: A Match Made in Animation Heaven Разработка
Разработка• Как тестировать современный фронтенд
• Что будет в 2023: тренды мобильной разработки
• Какие проблемы решает Release Train в мобильной разработке
• Что такое Design Review
• Нефункциональные проверки при тестировании мобильных приложений
• Библиотека компонентов для дизайнеров приложений
• Как мы создавали мобильное приложение «Х5 Недвижимость», или любовь не с первого касания
• Несовершенство трех законов робототехники
• Как дизайнить приложения, если ты не дизайнер? Пошаговая инструкция
• Podlodka #299: приоритизация
• Зарплата в IT за год выросла на 16.5%
• «Ростелеком» заместит Trello и Jira «Ягой»
• Google ужесточает Performance Review сотрудников
• Программисты тратят на бессмысленную работу в среднем 38% своего рабочего времени
• Самые высокооплачиваемые вакансии декабря в области разработки приложений
• Как разработать приложение доставки in-house: опыт экспресс-доставки Перекрёстка
•
 The Awesome Power of Well-Documented Code
The Awesome Power of Well-Documented Code•
 Yet another way to deal with nested if/else conditions
Yet another way to deal with nested if/else conditions•
 Scrum Teams are often Coached to Death, while the Problems are With Management
Scrum Teams are often Coached to Death, while the Problems are With Management•
 Gamification gone wrong: stop the streaks
Gamification gone wrong: stop the streaks•
 7 Design Tips I Learned From Apple
7 Design Tips I Learned From Apple•
 37 tips for improving productivity in software development teams
37 tips for improving productivity in software development teams•
 Most Popular Tech Interview Questions asked @ FAANG
Most Popular Tech Interview Questions asked @ FAANG•
 The Best of Material in 2022
The Best of Material in 2022•
 How To Increase Development Velocity by Future Proofing Your Code
How To Increase Development Velocity by Future Proofing Your Code•
 Building a Secure Mobile App in the Cloud
Building a Secure Mobile App in the Cloud•
 How I Created a Free Digital Product That People Want To Pay
How I Created a Free Digital Product That People Want To Pay•
 Challenging algorithms and data structures every programmer should try
Challenging algorithms and data structures every programmer should try•
 UX for Introverts
UX for Introverts Аналитика, маркетинг и монетизация
Аналитика, маркетинг и монетизация• Расходы на приложения снизились на 2% — обзор 2022 года от data.ai
• $20 млн: Deep Voodoo — студия дипфейков создателей «Южного парка»
• $30 млн: ImagenAI — постобработка фото на основе ИИ для профессиональных фотографов
• Epic Games оштрафовали на $520 млн за «темные паттерны»
• Маркетологи в мобайле. Итоги года 2022. Часть 1
• Повторит ли BeReal судьбу Clubhouse?
• Состояние социальных приложений в Европе 2022
• Альтернативные магазины мобильных приложений: как обойтись без Google Play и AppStore
 AI, Устройства, IoT
AI, Устройства, IoT• #4 Нейронные сети для начинающих. Sudoku Solver. Судоку. Часть 1
• Третья жизнь пет-проекта по распознаванию рукописных цифр
• Телематическая система автомобиля
• OpenAI открыла Point-E — систему преобразования текста в 3D-модели
• Apple может отказаться от выпуска новой версии iPhone SE
• Google распознает почерк врачей
•
 Magic Mirror — my first ever Raspberry Pi project
Magic Mirror — my first ever Raspberry Pi project← Предыдущий дайджест. Если у вас есть другие интересные материалы или вы нашли ошибку — пришлите, пожалуйста, в почту.
 
          