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