В новом дайджесте разбираем основы iOS-разработки в Revolut и оцениваем финалистов Apple Design Award 2024, обновляем адаптивные макеты на примерах с I/O и продолжаем ставить на Flutter, тираним пользовательские интерфейсы, катим MobAIle-разработку, делаем кондиционер умным и многое другое. Подключайтесь!
Подписывайтесь на наш Telegram-канал Mobile Insights, где еще больше материалов для мобильных разработчиков. А в IT Insights — много об интересном коде и технологиях.
iOS
• Как сделать мобильные приложения, которые приносят $3,000 в день
• Основы iOS-разработки в Revolut
• Разбираемся с типографикой в visionOS
• Стэнфордский курс CS193P “Разработка iOS приложений в SwiftUI” Весна 2023: русскоязычный конспект с адаптацией к iOS 17
• SwiftUI уроки (часть 13)
• Pедактор цен для iOS подписок
• Поваренная книга SwiftUI: изображения и иконки — Часть 2
• Как писать игры на Swift для Playdate
• Мок-собеседование iOS-разработчика. SwiftUI (+ все собеседования)
• Макросы Swift: проще, чище, быстрее
• Мы решили все проблемы работы в модульном проекте. Хотите так же?
• Siri получит обширные знания для запуска отдельных функций приложений
• Финалисты Apple Design Award 2024
• How Do You Know Whether or Not SwiftUI Previews and Preview Content Are Excluded From App Store Builds?
• Tricking iOS Into Animating App Icons
• This is what peak UIKit looks like
• Your Complete Guide to Push Notifications in SwiftUI
• How to build segmented circular progress views in SwiftUI with Swift Charts
• Apple rich text fundamentals
• How to create custom @Environment values in SwiftUI
• Slowly migrating from Objective-C to Swift
• @preconcurrency usage in Swift explained
• Save Data in Your Swift App with PropertyListEncoder
• Selective Unit Testing on iOS: Achieve %80 Faster Feedback
• Observation Framework for SwiftUI
• A Guide to High-Performance Networking
• Flip Clock Text Effect — SwiftUI
• Expandable Search Bar using SwiftUI
• Hacker Text Effect using SwiftUI
• Spotlight your app with App Shortcuts
• Update Live Activities with push notifications
• Discover Calendar and EventKit
• Create a great ShazamKit experience
• How to cache the result of API calls (using NSCache)
• Sword — инъекция зависимостей во время компиляции
• DeskPad — виртуальный монитор для шаринга экрана
Android
• Обновления в адаптивных макетах Compose с I/O
• Разработка новостного приложения. Часть 7. Загрузка в Google Play
• Разработка новостного приложения. Часть 6. Что я сделал не так
• Оптимизация Compose: проблемы, опыт, тактика, стратегия
• Google Bets on Kotlin Multiplatform: Koin Leads for Android & KMP
• Injecting Composables with Dagger without losing it
• Caching Strategies in Android
• KotlinConf 2024 announcements
• Change App Theme — Personalizing Accessibility
• A Developer’s Roadmap to Predictive Back (Views)
• App Architecture: JUnit Tests
• Compose UI Test and Preview Hacks!
• Kotlin Mobile Monorepo
• Annoying problems with Android projects
• The on-device Vector Database for Android and Java
• Securing the Future: Navigating the Deprecation of Encrypted Shared Preferences
• My Story of Getting Scammed and Losing My Google Play Console Account
• 7 Android Studio Usage Tips
• Crafting Custom 3D Dialog Animation in Jetpack Compose
• Now in Android: 105 — I/O ‘24, Android 15, KMP, Compose, AndroidX, and more
• List + Detail Screens Just Got SO MUCH Easier — NavigableListDetailPaneScaffold
• Building an Android Video Calling App With the Stream SDK
• Mastering Feature Flags: Best Practices with Firebase Remote Config
• The Essence of Coroutines
• Blueprint — размеры Composable
• Compose Guard — плагин Gradle для обнаружения регрессий в Jetpack Compose
Кроссплатформа
• Почему я продолжаю ставить на Flutter
• Firebase Analytics в KMP: Android, iOS, Desktop (MacOS, Windows)
• 5 лет с Flutter: эволюция кроссплатформенности
• Flutter-диета. Как сбросить вес, выпиливая модули
• Migrating UI-oriented Android library to Compose Multiplatform
• The rollercoaster of releasing an Android, iOS, and macOS app with Kotlin Multiplatform
• How BigPay Increased Flutter Developer Velocity
• These New Flutter/Dart Features Make My Life Easier
• From SQLDelight to Room in Kotlin Multiplatform Projects
• Building multiplatform games with Flutter
• Bringing Together: Jetpack Compose and Native iOS Components
• Can a backend engineer learn Flutter with AI?
Разработка
• Непроизвольная тирания пользовательских интерфейсов
• Куда катится MobAIle-разработка
• Как понять, что пора выпускать новое приложение вместо старого? Разбираем со стороны бизнеса
• Редизайн сервиса «Обмен валюты» в мобильном приложении ОТП Банка
• Профиль защиты ЦБ РФ и мобильные приложения: разбираемся, как соответствовать
• Mobius 2024 offline. День первый
• Прокачиваем Code Review: как выжать максимум?
• Пишем нативно под Аврора ОС как под iOS: Clean-архитектура, Coordinator и UDF
• Маргарита Лукина про Frontend, высшее образование, софт-скиллы и женщин в IT
• Observability, Profiling и Benchmarking как основа High Performance
• Три закона сложности программного обеспечения (или почему инженеры-программисты всегда грустные)
• В каком возрасте программисты создают новые языки?
• ChatGPT на вопросы по программированию дает 52% неправильных ответов
• Codestral — первая генеративная модель Mistral для кода
• Writing a Unix clone in about a month
• MobileLlama3: Run Llama3 locally on mobile
• Big Data is Dead
• Indexing all of Wikipedia, on a laptop
• AI-Friendly Programming Languages: the Kotlin Story
• Don’t DRY Your Code Prematurely
• Linear Algebra Course – Mathematics for Machine Learning and Generative AI
• Openpanel — альтернатива Mixpanel с открытым исходным кодом
Аналитика, маркетинг и монетизация
• Как оценить валидность A/B тестов. SRM и другие критерии
• Приложение Autobiographer использует ИИ, чтобы помочь вам рассказать историю своей жизни
• Supercell выпустила свою шестую игру — Squad Busters
• Мини-игры Playables стали доступны всем пользователям YouTube
• Алгоритмы, модели и пицца: как с помощью programmatic-рекламы эффективно привлекать и возвращать пользователей. Кейс «Додо Пиццы» и Bidease
• Why Duolingo’s Engagement Strategy Won’t Work For Every App — Asya Paloni, Welltory
AI, Устройства, IoT
• Делаем кондиционер умным с помощью Elixir и Nerves
• Обзор новых Open Source LLM. Или как локально запустить аналог ChatGPT
• Стеллажная система на 480 ярусов: как автоматизировать выращивание растений и не сойти с ума
• Запускаем .NET на RISC-V и разрабатываем IoT приложение для Sipeed Lichee RV
• Kincony KC868-A256: а ты готов к настоящему хоккею?
• Новый контроллер, облако, выключатели, DALI-шлюз и датчики присутствия от Wiren Board
• Как мы обуздали ПОТОК данных со сварочных аппаратов
• Проект хаба для “умного дома” с BLE-устройствами
• Avito Product meetup: ML-продукты
• Fitbit выпустил Ace LTE — умные часы/трекер для детей
• ИИ-репетиторы незаметно меняют подход к обучению детей
← Предыдущий дайджест. Если у вас есть другие интересные материалы или вы нашли ошибку — пришлите, пожалуйста, в почту.
Подписывайтесь на наш Telegram-канал Mobile Insights, где еще больше материалов для мобильных разработчиков. А в IT Insights — много об интересном коде и технологиях.
iOS
• Как сделать мобильные приложения, которые приносят $3,000 в день
• Основы iOS-разработки в Revolut
• Разбираемся с типографикой в visionOS
• Стэнфордский курс CS193P “Разработка iOS приложений в SwiftUI” Весна 2023: русскоязычный конспект с адаптацией к iOS 17
• SwiftUI уроки (часть 13)
• Pедактор цен для iOS подписок
• Поваренная книга SwiftUI: изображения и иконки — Часть 2
• Как писать игры на Swift для Playdate
• Мок-собеседование iOS-разработчика. SwiftUI (+ все собеседования)
• Макросы Swift: проще, чище, быстрее
• Мы решили все проблемы работы в модульном проекте. Хотите так же?
• Siri получит обширные знания для запуска отдельных функций приложений
• Финалисты Apple Design Award 2024
• How Do You Know Whether or Not SwiftUI Previews and Preview Content Are Excluded From App Store Builds?
• Tricking iOS Into Animating App Icons
• This is what peak UIKit looks like
• Your Complete Guide to Push Notifications in SwiftUI
• How to build segmented circular progress views in SwiftUI with Swift Charts
• Apple rich text fundamentals
• How to create custom @Environment values in SwiftUI
• Slowly migrating from Objective-C to Swift
• @preconcurrency usage in Swift explained
• Save Data in Your Swift App with PropertyListEncoder
• Selective Unit Testing on iOS: Achieve %80 Faster Feedback
• Observation Framework for SwiftUI
• A Guide to High-Performance Networking
• Flip Clock Text Effect — SwiftUI
• Expandable Search Bar using SwiftUI
• Hacker Text Effect using SwiftUI
• Spotlight your app with App Shortcuts
• Update Live Activities with push notifications
• Discover Calendar and EventKit
• Create a great ShazamKit experience
• How to cache the result of API calls (using NSCache)
• Sword — инъекция зависимостей во время компиляции
• DeskPad — виртуальный монитор для шаринга экрана
Android
• Обновления в адаптивных макетах Compose с I/O
• Разработка новостного приложения. Часть 7. Загрузка в Google Play
• Разработка новостного приложения. Часть 6. Что я сделал не так
• Оптимизация Compose: проблемы, опыт, тактика, стратегия
• Google Bets on Kotlin Multiplatform: Koin Leads for Android & KMP
• Injecting Composables with Dagger without losing it
• Caching Strategies in Android
• KotlinConf 2024 announcements
• Change App Theme — Personalizing Accessibility
• A Developer’s Roadmap to Predictive Back (Views)
• App Architecture: JUnit Tests
• Compose UI Test and Preview Hacks!
• Kotlin Mobile Monorepo
• Annoying problems with Android projects
• The on-device Vector Database for Android and Java
• Securing the Future: Navigating the Deprecation of Encrypted Shared Preferences
• My Story of Getting Scammed and Losing My Google Play Console Account
• 7 Android Studio Usage Tips
• Crafting Custom 3D Dialog Animation in Jetpack Compose
• Now in Android: 105 — I/O ‘24, Android 15, KMP, Compose, AndroidX, and more
• List + Detail Screens Just Got SO MUCH Easier — NavigableListDetailPaneScaffold
• Building an Android Video Calling App With the Stream SDK
• Mastering Feature Flags: Best Practices with Firebase Remote Config
• The Essence of Coroutines
• Blueprint — размеры Composable
• Compose Guard — плагин Gradle для обнаружения регрессий в Jetpack Compose
Кроссплатформа
• Почему я продолжаю ставить на Flutter
• Firebase Analytics в KMP: Android, iOS, Desktop (MacOS, Windows)
• 5 лет с Flutter: эволюция кроссплатформенности
• Flutter-диета. Как сбросить вес, выпиливая модули
• Migrating UI-oriented Android library to Compose Multiplatform
• The rollercoaster of releasing an Android, iOS, and macOS app with Kotlin Multiplatform
• How BigPay Increased Flutter Developer Velocity
• These New Flutter/Dart Features Make My Life Easier
• From SQLDelight to Room in Kotlin Multiplatform Projects
• Building multiplatform games with Flutter
• Bringing Together: Jetpack Compose and Native iOS Components
• Can a backend engineer learn Flutter with AI?
Разработка
• Непроизвольная тирания пользовательских интерфейсов
• Куда катится MobAIle-разработка
• Как понять, что пора выпускать новое приложение вместо старого? Разбираем со стороны бизнеса
• Редизайн сервиса «Обмен валюты» в мобильном приложении ОТП Банка
• Профиль защиты ЦБ РФ и мобильные приложения: разбираемся, как соответствовать
• Mobius 2024 offline. День первый
• Прокачиваем Code Review: как выжать максимум?
• Пишем нативно под Аврора ОС как под iOS: Clean-архитектура, Coordinator и UDF
• Маргарита Лукина про Frontend, высшее образование, софт-скиллы и женщин в IT
• Observability, Profiling и Benchmarking как основа High Performance
• Три закона сложности программного обеспечения (или почему инженеры-программисты всегда грустные)
• В каком возрасте программисты создают новые языки?
• ChatGPT на вопросы по программированию дает 52% неправильных ответов
• Codestral — первая генеративная модель Mistral для кода
• Writing a Unix clone in about a month
• MobileLlama3: Run Llama3 locally on mobile
• Big Data is Dead
• Indexing all of Wikipedia, on a laptop
• AI-Friendly Programming Languages: the Kotlin Story
• Don’t DRY Your Code Prematurely
• Linear Algebra Course – Mathematics for Machine Learning and Generative AI
• Openpanel — альтернатива Mixpanel с открытым исходным кодом
Аналитика, маркетинг и монетизация
• Как оценить валидность A/B тестов. SRM и другие критерии
• Приложение Autobiographer использует ИИ, чтобы помочь вам рассказать историю своей жизни
• Supercell выпустила свою шестую игру — Squad Busters
• Мини-игры Playables стали доступны всем пользователям YouTube
• Алгоритмы, модели и пицца: как с помощью programmatic-рекламы эффективно привлекать и возвращать пользователей. Кейс «Додо Пиццы» и Bidease
• Why Duolingo’s Engagement Strategy Won’t Work For Every App — Asya Paloni, Welltory
AI, Устройства, IoT
• Делаем кондиционер умным с помощью Elixir и Nerves
• Обзор новых Open Source LLM. Или как локально запустить аналог ChatGPT
• Стеллажная система на 480 ярусов: как автоматизировать выращивание растений и не сойти с ума
• Запускаем .NET на RISC-V и разрабатываем IoT приложение для Sipeed Lichee RV
• Kincony KC868-A256: а ты готов к настоящему хоккею?
• Новый контроллер, облако, выключатели, DALI-шлюз и датчики присутствия от Wiren Board
• Как мы обуздали ПОТОК данных со сварочных аппаратов
• Проект хаба для “умного дома” с BLE-устройствами
• Avito Product meetup: ML-продукты
• Fitbit выпустил Ace LTE — умные часы/трекер для детей
• ИИ-репетиторы незаметно меняют подход к обучению детей
← Предыдущий дайджест. Если у вас есть другие интересные материалы или вы нашли ошибку — пришлите, пожалуйста, в почту.