В новом дайджесте разбираемся со SwiftData и кодом доставки пиццы, изучаем в будущее swift-testing и мастерстве программирования, обманываем на технических собеседованиях с помощью ChatGPT, определяем самые скачиваемые и зарабатывающие приложения в России в январе и многое другое!
Подписывайтесь на наш Telegram-канал Mobile Insights, где еще больше материалов для мобильных разработчиков. А в IT Insights — много об интересном коде и технологиях.
iOS
• Кто ты, SwiftData
• Ранний взгляд на будущее тестирования с swift-testing
• Уменьшаем boilerplate с помощью Swift Macros
• Стеки и Очереди в Swift
• Вопросы с собеседований: Что такое модификатор памяти weak в Swift
• Как поддерживать недельный релизный цикл и ничего не забывать
• Записываем видео App Preview в симуляторе Xcode
• Поваренная книга SwiftUI: использование AppStorage и SceneStorage для хранения состояния
• Remaking the app store
• Case insensitive string comparison in Swift
• Support Swift macros with CocoaPods
• Demystifying Parameterized Protocols in Swift
• Scaling iOS at Bumble
• Migrating Our iOS Build System from Buck to Bazel
• Oversimplifying SwiftUI View Code using ViewState and SwiftUI’s ViewBuilder
• Swift Developer Roadmap 2024: With 7 Samples App
• Building a Dynamic TreeView in SwiftUI
• The Swift Method Dispatch Deep Dive
• App Preview Videos Capturing using the Xcode simulator
• Building Modular iOS Apps: A Guide to SPM, MVVM, SwiftUI, and Combine/Async-Await
• Apple to require Xcode 15 for App Store submissions staring April 29
• Setting up SharePlay on an iOS app
• Bad practice: using .lowercased() to compare strings
• Swiggy iOS interview experience
• SwiftUI Hero Animation with Matched Geometry Effect
• Using SwiftNIO — Channels
• The power of self-sufficient features
• What is @testable Annotation in Swift?
• First thoughs about The Composable Architecture in iOS
• Building a Passcode Lock Screen in SwiftUI: A Step-by-Step Guide
• SwiftUI: Stretchy Slider Like in iOS 17
• How To Save A Struct In SwiftData
• Introducing Vortex: High-performance particle effects for SwiftUI
• PencilKit and SwiftUI: Build a Collaborative Drawing App
• SwiftUI: Universal Hero Effect
• Glur: прогрессивный блюр для SwiftUI
• WhisperKit: распознавание речи с помощью Whisper
Android
• Копаемся в встроенном приложении камеры старого Xiaomi. Часть 1
• Разбор кода приложения по доставке пиццы
• Запускаем автотесты Android на EMCEE
• Android 15 готовится облегчить использование смартфона для пожилых
• Работаем с размером шрифта для обеспечения доступности
• Performance In Jetpack Compose — Stability & Immutability
• Creating Anvil-like annotation for Hilt using KSP
• Preview Jetpack Compose Views in Seconds
• Kotlin Flows Animated
• Timing API: Mastering Time with Kotlin
• Translucent Status Bar with Edge-To-Edge Jetpack Compose
• Accessibility Amplified: A Journey to Inclusive Android Apps
• Exploring Jetpack Compose: Aspect Ratio Modifier
• Extended ADB: En Vogue
• Font Size Considerations for Accessibility
• Graceful Exits: Implementing Close Confirmation for Jetpack Compose ModalBottomSheet
• Kotlin’s Sealed Interfaces in Android
• Jetpack Compose ? Beginner’s Series
• Android Interview Questions: 2024
• Pixel Perfect: Designing for Every Screen, Every Fold
• On-Device Machine Learning In Android: Frameworks and Ecosystem
• Now in Android: 99 — Jetpack Compose, Google AI on Samsung Galaxy, Play recovery tools, and more
• The Ultimate Beginners Guide to Realm DB on Android (CRUD with Multi-Relations)
• How to Implement Swipe to Delete with Material3
• Intersection Types in Kotlin
• Android UI with TwoPane Composable — Drag, Split, & RTL Magic
• One-Time Events, StateFlow VS. Channel
• Podcaster: реализация Jetpack Media3 в реальном приложении
• Apk.sh: реврерс-инжиниринг Android-приложений
Кроссплатформа
• Реализация чата на Flutter при помощи вебсокетов
• Как создать shader в Flutter для эффектной анимации в приложении?
• Как с помощью ChatGPT реализовать раскраску во Flutter
• Раскраска SVG картинки во Flutter, и почему я решил отключить Impeller
• Практическая реализация паттерна Server-Driven UI на Flutter c использованием фреймворка Duit
• Более правильный подход к подключению Yandex AppMetrica в React Native приложении
• Experimenting with Composable Presenters in Kotlin Multiplatform
• Creating a Figma clone app with Flutter and Supabase
• How to use Resources in Compose Multiplatform
• Flutter Testing: A Comprehensive Guide to Unit, Widget, and Integration Testing
• Efficient API Calls in Flutter
• How to build a real-time multiplayer game with Flutter Flame
• 20 ?most used Kotlin Multiplatform libraries
• Best Flutter Packages Of 2023
• Flutter: Screen Navigation
• Tracking Lifecycle changes in Compose Multiplatform: IOS and Android
• Build Swift Windows News App with WinSDK
• DVDB: кроссплатформенная векторная база данных
Разработка
• Где-то в пути мы забыли о мастерстве программирования
• Эксперимент: насколько сложно обмануть на технических собеседованиях с помощью ChatGPT?
• Самые высокооплачиваемые вакансии января в сфере разработки приложений
• Направо пойдешь — в бэкенд придешь, налево — в мобилки…
• 5 идей, как улучшить Discovery-процессы в команде, если ты продуктовый дизайнер
• CodeSignal запускает платформу обучения с ИИ-помощником
• Когда следует отказаться от проекта, который не работает?
• Написание кода никогда не было самой сложной частью
• Apple выпустила язык программирования Pkl для описывания конфигураций
• Detecting Speech and Music in Audio Content
• Scaling smoothly: RevenueCat’s data-caching techniques for 1.2 billion daily API requests
• GitHub Actions: Introducing the new M1 macOS runner available to open source!
• Why We Can’t Have Nice Software
• Key takeaways from Airbnb’s winter redesign
• Keeping code simple: moving fast by avoiding over-engineering
• Design Perfect Date Picker
• Google Cloud region is Johannesburg, MobileDiffusion, and more dev news!
Аналитика, маркетинг и монетизация
• Самые скачиваемые и зарабатывающие приложения в России в январе 2024
• План самообразования по профессии продуктового аналитика
• Вся наша жизнь – игра: или как прижилась геймификация внутри мобильного приложения в ритейле
• Мобильные игры в продуктовых приложениях
• SocialPeta выпустила Глобальный Аналитический Доклад о мобильных приложениях за 2023 год
• Любовь живет в приложении: мобильные тренды ко Дню Святого Валентина
• Приложение Blush выводит онлайн-знакомства в реальный мир
• Stellar Sleep — первый цифровой инструмент для борьбы с хронической бессонницей
• Spotify стал поставщиком аудиокниг №2 после Audible
• Мобильная версия Elden Ring разрабатывается Tencent
• Пережил ли Evernote свой расцвет?
• Peter Yang’s 10 rules for making products that customers love
• Three core psychological factors in marketing (and how to integrate them)
AI, Устройства, IoT
• Как подружить Ростелеком Ключ и Home Assistant
• Краткий обзор TinyML
• Новая ИИ модель Apple может редактировать изображения с помощью естественного языка
• Apple продолжает работу над складными устройствами
• В Roblox заработал переводчик чатов в реальном времени на основе ИИ
← Предыдущий дайджест. Если у вас есть другие интересные материалы или вы нашли ошибку — пришлите, пожалуйста, в почту.
Подписывайтесь на наш Telegram-канал Mobile Insights, где еще больше материалов для мобильных разработчиков. А в IT Insights — много об интересном коде и технологиях.
iOS
• Кто ты, SwiftData
• Ранний взгляд на будущее тестирования с swift-testing
• Уменьшаем boilerplate с помощью Swift Macros
• Стеки и Очереди в Swift
• Вопросы с собеседований: Что такое модификатор памяти weak в Swift
• Как поддерживать недельный релизный цикл и ничего не забывать
• Записываем видео App Preview в симуляторе Xcode
• Поваренная книга SwiftUI: использование AppStorage и SceneStorage для хранения состояния
• Remaking the app store
• Case insensitive string comparison in Swift
• Support Swift macros with CocoaPods
• Demystifying Parameterized Protocols in Swift
• Scaling iOS at Bumble
• Migrating Our iOS Build System from Buck to Bazel
• Oversimplifying SwiftUI View Code using ViewState and SwiftUI’s ViewBuilder
• Swift Developer Roadmap 2024: With 7 Samples App
• Building a Dynamic TreeView in SwiftUI
• The Swift Method Dispatch Deep Dive
• App Preview Videos Capturing using the Xcode simulator
• Building Modular iOS Apps: A Guide to SPM, MVVM, SwiftUI, and Combine/Async-Await
• Apple to require Xcode 15 for App Store submissions staring April 29
• Setting up SharePlay on an iOS app
• Bad practice: using .lowercased() to compare strings
• Swiggy iOS interview experience
• SwiftUI Hero Animation with Matched Geometry Effect
• Using SwiftNIO — Channels
• The power of self-sufficient features
• What is @testable Annotation in Swift?
• First thoughs about The Composable Architecture in iOS
• Building a Passcode Lock Screen in SwiftUI: A Step-by-Step Guide
• SwiftUI: Stretchy Slider Like in iOS 17
• How To Save A Struct In SwiftData
• Introducing Vortex: High-performance particle effects for SwiftUI
• PencilKit and SwiftUI: Build a Collaborative Drawing App
• SwiftUI: Universal Hero Effect
• Glur: прогрессивный блюр для SwiftUI
• WhisperKit: распознавание речи с помощью Whisper
Android
• Копаемся в встроенном приложении камеры старого Xiaomi. Часть 1
• Разбор кода приложения по доставке пиццы
• Запускаем автотесты Android на EMCEE
• Android 15 готовится облегчить использование смартфона для пожилых
• Работаем с размером шрифта для обеспечения доступности
• Performance In Jetpack Compose — Stability & Immutability
• Creating Anvil-like annotation for Hilt using KSP
• Preview Jetpack Compose Views in Seconds
• Kotlin Flows Animated
• Timing API: Mastering Time with Kotlin
• Translucent Status Bar with Edge-To-Edge Jetpack Compose
• Accessibility Amplified: A Journey to Inclusive Android Apps
• Exploring Jetpack Compose: Aspect Ratio Modifier
• Extended ADB: En Vogue
• Font Size Considerations for Accessibility
• Graceful Exits: Implementing Close Confirmation for Jetpack Compose ModalBottomSheet
• Kotlin’s Sealed Interfaces in Android
• Jetpack Compose ? Beginner’s Series
• Android Interview Questions: 2024
• Pixel Perfect: Designing for Every Screen, Every Fold
• On-Device Machine Learning In Android: Frameworks and Ecosystem
• Now in Android: 99 — Jetpack Compose, Google AI on Samsung Galaxy, Play recovery tools, and more
• The Ultimate Beginners Guide to Realm DB on Android (CRUD with Multi-Relations)
• How to Implement Swipe to Delete with Material3
• Intersection Types in Kotlin
• Android UI with TwoPane Composable — Drag, Split, & RTL Magic
• One-Time Events, StateFlow VS. Channel
• Podcaster: реализация Jetpack Media3 в реальном приложении
• Apk.sh: реврерс-инжиниринг Android-приложений
Кроссплатформа
• Реализация чата на Flutter при помощи вебсокетов
• Как создать shader в Flutter для эффектной анимации в приложении?
• Как с помощью ChatGPT реализовать раскраску во Flutter
• Раскраска SVG картинки во Flutter, и почему я решил отключить Impeller
• Практическая реализация паттерна Server-Driven UI на Flutter c использованием фреймворка Duit
• Более правильный подход к подключению Yandex AppMetrica в React Native приложении
• Experimenting with Composable Presenters in Kotlin Multiplatform
• Creating a Figma clone app with Flutter and Supabase
• How to use Resources in Compose Multiplatform
• Flutter Testing: A Comprehensive Guide to Unit, Widget, and Integration Testing
• Efficient API Calls in Flutter
• How to build a real-time multiplayer game with Flutter Flame
• 20 ?most used Kotlin Multiplatform libraries
• Best Flutter Packages Of 2023
• Flutter: Screen Navigation
• Tracking Lifecycle changes in Compose Multiplatform: IOS and Android
• Build Swift Windows News App with WinSDK
• DVDB: кроссплатформенная векторная база данных
Разработка
• Где-то в пути мы забыли о мастерстве программирования
• Эксперимент: насколько сложно обмануть на технических собеседованиях с помощью ChatGPT?
• Самые высокооплачиваемые вакансии января в сфере разработки приложений
• Направо пойдешь — в бэкенд придешь, налево — в мобилки…
• 5 идей, как улучшить Discovery-процессы в команде, если ты продуктовый дизайнер
• CodeSignal запускает платформу обучения с ИИ-помощником
• Когда следует отказаться от проекта, который не работает?
• Написание кода никогда не было самой сложной частью
• Apple выпустила язык программирования Pkl для описывания конфигураций
• Detecting Speech and Music in Audio Content
• Scaling smoothly: RevenueCat’s data-caching techniques for 1.2 billion daily API requests
• GitHub Actions: Introducing the new M1 macOS runner available to open source!
• Why We Can’t Have Nice Software
• Key takeaways from Airbnb’s winter redesign
• Keeping code simple: moving fast by avoiding over-engineering
• Design Perfect Date Picker
• Google Cloud region is Johannesburg, MobileDiffusion, and more dev news!
Аналитика, маркетинг и монетизация
• Самые скачиваемые и зарабатывающие приложения в России в январе 2024
• План самообразования по профессии продуктового аналитика
• Вся наша жизнь – игра: или как прижилась геймификация внутри мобильного приложения в ритейле
• Мобильные игры в продуктовых приложениях
• SocialPeta выпустила Глобальный Аналитический Доклад о мобильных приложениях за 2023 год
• Любовь живет в приложении: мобильные тренды ко Дню Святого Валентина
• Приложение Blush выводит онлайн-знакомства в реальный мир
• Stellar Sleep — первый цифровой инструмент для борьбы с хронической бессонницей
• Spotify стал поставщиком аудиокниг №2 после Audible
• Мобильная версия Elden Ring разрабатывается Tencent
• Пережил ли Evernote свой расцвет?
• Peter Yang’s 10 rules for making products that customers love
• Three core psychological factors in marketing (and how to integrate them)
AI, Устройства, IoT
• Как подружить Ростелеком Ключ и Home Assistant
• Краткий обзор TinyML
• Новая ИИ модель Apple может редактировать изображения с помощью естественного языка
• Apple продолжает работу над складными устройствами
• В Roblox заработал переводчик чатов в реальном времени на основе ИИ
← Предыдущий дайджест. Если у вас есть другие интересные материалы или вы нашли ошибку — пришлите, пожалуйста, в почту.