В этом дайджесте задачи Yandex Cup и сложные фичи, стабильный Kotlin Multiplatform и собеседования в SberDevices, стартапы из одного человека, игры с помощью нейросетей, интерактивные виджеты и многое другое!

Подписывайтесь на на наш Telegram-канал Mobile Insights, где еще больше материалов для мобильных разработчиков. А в IT Insights — много об интересном коде и технологиях.



iOS

• Как я стал iOS разработчиком
• Разбор задачи A отборочного этапа Yandex Cup 2023 — iOS
• Как создать интерактивные виджеты на iOS 17
• Кнопки красить — это вам не деревья вертеть
• Поваренная книга SwiftUI: тени для представлений
• Подходы к верстке в UIKit
• Все видео Swift Connection 2023
•  Show Callers in Xcode 15
•  Automerge for Swift
•  Combine charts to create stunning designs with Swift Charts
•  Hacking iOS Alerts in Swift
•  SwiftUI Tutorial: Keyframe Animations for iOS 17
•  How to get a SwiftData model container and context in SwiftUI
•  Packaging Libraries in iOS: A Comprehensive Guide v2
•  Seamless Flow: Streamlining iOS Projects with CI/CD Tools and Tactics
•  How to setup your Xcode project for testing with Unit and UI Tests in 4 simple steps
•  SwiftUI: Introducing MVI How to Easily Implement MVI in SwiftUI
•  Server-side Swift? Why not?
•  Builder Design Pattern in iOS
•  Singleton Design Pattern in iOS
•  The Future of Accessing User Location in SwiftUI
•  The curious case of ShareLink with plain text strings
•  Modular Navigation in SwiftUI: A Comprehensive Guide
•  Using Real-World Analogies to Demystify Creational Design Patterns in Swift
•  How to Observe Data Changes in SwiftData Using Persistent History Tracking
•  Mastering iOS Debugging with User Defaults
•  New SwiftUI Photo Picker — Single & Multiple Selection
•  SwiftData CRUD Operations
•  How to solve nested Observable Objects issue
•  Swift Connection 2023 Videos
•  Cleaner, Safer Code with Swift KeyPaths
•  A Tour of Xcode Cloud
•  An Easier Dev Life with Kaleidoscope
•  touchHLE: высокоуровневый эмулятор iPhone OS
•  Moya: сетевые абстракции для Swift
•  Aidoku: открытый ридер манги для iOS

Android

• Байт-код — это просто! Как сделать DI по-настоящему быстрым
• Что будет если команда, не видавшая Compose, решила делать новую сложную фичу на нём?
• В помощь тем, кто погружается в Smali
• Как сделать тесты на Espresso более читабельными и стабильными
• Как стилизовать текст на Compose через Spannable
• Как реализовать приостановку трансляции и фоновый стриминг на Android с помощью опенсорс-библиотеки
• Собеседование с Михаилом Левченко
• Управление сложностью состояния
• Google опубликовал новые данные по распространению версий Android
•  CatGPT — or How to Position Elements on Overlays
•  Building a Speedometer with Compose Canvas API
•  Harmonizing Modifiers in Jetpack Compose: A Tale of Flexibility and Usability
•  Material Design Components for Android 1.10.0
•  Regional Preferences in Android 14
•  Beyond MVVM: Hierarchical State Management with Molecule and Compose
•  How to create list sections with animated shapes
•  A step-by-step tutorial in codelab format for Android UI testing
•  Kotlin 101: Unit Tests Cheat Sheet for Paging Library and Room Database
•  Finding the Right Balance in Gradle Dependency Strategy
•  Avoid Primitive Obsession in Kotlin with zero-cost abstractions
•  Simple and secure sign-in on Android with Credential Manager and passkeys
•  How to Use Render Effects in Jetpack Compose for Stunning Visuals
•  Kotlin Coroutines vs Threads Memory Benchmark
•  The Syntax Chronicles: Implementing Google Sheets API in your Android app
•  Kotlin 1.9.20 Released
•  The Android Backstage of Mercado Libre Warehouses
•  Hilt Version 1.1.0
•  Best Practises For Writing Testable Code In Kotlin
•  Now in Android: 94 — #TheAndroidShow, Jetpack Glance, Google Play policy updates, and more
•  AndroidX, Gradle and Metalava — Android Developers Backstage
•  When Should You Migrate to Jetpack Compose?
•  3 Clean Code Hacks I Bet You Didn’t Know
•  What’s new in Kotlin 1.9.20
•  Making Threads for Android
•  Kotlin & Android Development Course: Build a Quiz Application
•  ComposeNumericRoller: анимация цифр на Compose
•  FlorisBoard: открытая клавиатура для Android

Кроссплатформа

• Kotlin Multiplatform стал стабильным
• Kotlin Multiplatform перешёл в stable. Что это значит?
• Padding vs SizedBox. Что выбрать для вёрстки отступов Column и Row
• Можно ли обойтись без нативных языков, разрабатывая на Flutter и RN?
• Как использовать нативный платежный сервис SberPay в кроссплатформенном приложении на Flutter
• Flutter. Локальная база данных
• Flutter и работа с нативным кодом на примере библиотеки для работы с NFC
•  Writing Swift-Friendly Kotlin Multiplatform APIs
•  Embrace Functional Programming with /Dart 3.1/
•  Build SwiftUI apps for iOS and Android with Skip
•  State Management With Provider
•  Flutter Integration Testing and CI/CD
•  Building a Compose Multiplatform app with an Architectural pattern
•  Exploring Flutter’s new Sliver API: A Comprehensive Guide
•  12 Image Tips and Best Practices for the Best UX Performance in Flutter
•  Networking in Kotlin Multiplatform Mobile Using Ktor
•  How to create a Flutter plugin step by step
•  Flutter: State Management with pure MVVM
•  Kotlin Multiplatform by Tutorials
•  Ahead of the Curve: Rubikkube’s Kotlin Multiplatform Journey
•  A Complete Guide on “Login with WhatsApp” in Flutter Apps (w/ backend)
•  Skip: транспилятор Swift/SwiftUI в Kotlin/Compose

Разработка

• Как устроены собеседования в SberDevices — Максим Сидоров
• Не Unity единым…
• Backend Driven UI с точки зрения бэкенда: к чему готовиться, если вы решили на него перейти
• $5 млн в посевном раунде: Factory — автоматизация жизненного цикла разработки с помощью ИИ
• Backend Driven… Аналитика!
• Podlodka #341: рендеринг текста проклят
• Открыта регистрация на олимпиаду по программированию для школьников «Технокубок»
• 10 уроков успеха от стартапов, созданных одним человеком
• Делаем многократно используемые компоненты не делая их многократно используемыми
•  Use Abstraction to Improve Function Readability
•  The most valuable trait of top software engineers
•  6 Software Engineering Templates I Wish I Had Sooner
•  Advice to a novice programmer
•  10 Mobile App Projects to Elevate Your Skills to Senior Developer Level
•  Tech Interview Handbook
•  Sheet, dialog, or snackbar — what should a designer go for?
•  Redesigning Swiggy’s new user onboarding — A product design case study
•  How Discord Stores Trillions of Messages — Curious Case of System Design
•  The Worst Code I Ever Wrote, And Why I’m Still Happy About It

Аналитика, маркетинг и монетизация

• Flavrs с помощью ИИ хочет стать главной платформой для едоков во всем мире
• Click, Download, Play! Как использовать геймплей в создании перформящих креативов: часть первая
• Самые скачиваемые и зарабатывающие приложения в России в октябре 2023
• Google и Match Group достигли мирового соглашения по антимонопольному делу о магазине приложений
•  Unity’s Runtime Fee debacle caused 15% of its US advertisers to jump ship
•  The creative testing blueprint: Strategies for high-impact ad campaigns
•  Mastering search engine optimization for your mobile app
•  3Q23 Mobile Ad Network Trends

AI, Устройства, IoT

• От идеи до реализации: создание игры с помощью нейросетей
• Умный дом на Raspberry Pi и Home Assistant: добавляем диммеры и реле Wiren Board
• 8 профилировщиков потребляемой мощности для embedded и IoT систем
• Скромное обаяние ClimateGuard CG Mini
• LYWSD03MMC: ZigBee сеть на термометрах
• Poe от Quora запускает партнерскую программу для создателей чат-ботов
• Apple представила процессоры серии M3
• Apple M3 Pro медленнее в работе с памятью, чем M1/M2 Pro
•  Fixing the Volume on my Bluetooth Earbuds
•  Local AI Stack: создание локальных ИИ-приложений

Предыдущий дайджест. Если у вас есть другие интересные материалы или вы нашли ошибку — пришлите, пожалуйста, в почту.