В новом дайджесте разбираем основы 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 — много об интересном коде и технологиях.


• Как сделать мобильные приложения, которые приносят $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
•

•

•

•

•

•

•

•

•

•

•

•

•

•

•

•

•

•

•

•

•

•

•


• Обновления в адаптивных макетах Compose с I/O
• Разработка новостного приложения. Часть 7. Загрузка в Google Play
• Разработка новостного приложения. Часть 6. Что я сделал не так
• Оптимизация Compose: проблемы, опыт, тактика, стратегия
•

•

•

•

•

•

•

•

•

•

•

•

•

•

•

•

•

•

•

•

•

•


• Почему я продолжаю ставить на Flutter
• Firebase Analytics в KMP: Android, iOS, Desktop (MacOS, Windows)
• 5 лет с Flutter: эволюция кроссплатформенности
• Flutter-диета. Как сбросить вес, выпиливая модули
•

•

•

•

•

•

•

•


• Непроизвольная тирания пользовательских интерфейсов
• Куда катится MobAIle-разработка
• Как понять, что пора выпускать новое приложение вместо старого? Разбираем со стороны бизнеса
• Редизайн сервиса «Обмен валюты» в мобильном приложении ОТП Банка
• Профиль защиты ЦБ РФ и мобильные приложения: разбираемся, как соответствовать
• Mobius 2024 offline. День первый
• Прокачиваем Code Review: как выжать максимум?
• Пишем нативно под Аврора ОС как под iOS: Clean-архитектура, Coordinator и UDF
• Маргарита Лукина про Frontend, высшее образование, софт-скиллы и женщин в IT
• Observability, Profiling и Benchmarking как основа High Performance
• Три закона сложности программного обеспечения (или почему инженеры-программисты всегда грустные)
• В каком возрасте программисты создают новые языки?
• ChatGPT на вопросы по программированию дает 52% неправильных ответов
• Codestral — первая генеративная модель Mistral для кода
•

•

•

•

•

•

•

•


• Как оценить валидность A/B тестов. SRM и другие критерии
• Приложение Autobiographer использует ИИ, чтобы помочь вам рассказать историю своей жизни
• Supercell выпустила свою шестую игру — Squad Busters
• Мини-игры Playables стали доступны всем пользователям YouTube
• Алгоритмы, модели и пицца: как с помощью programmatic-рекламы эффективно привлекать и возвращать пользователей. Кейс «Додо Пиццы» и Bidease
•


• Делаем кондиционер умным с помощью 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 — умные часы/трекер для детей
• ИИ-репетиторы незаметно меняют подход к обучению детей
← Предыдущий дайджест. Если у вас есть другие интересные материалы или вы нашли ошибку — пришлите, пожалуйста, в почту.