В новом дайджесте ускорение запуска приложений и спойлер-эффект кна Swift, сборщик метрик Android-проекта и рисование звезд, замена Firebase, идеальный встраиваемый язык, приложение для заметок, которое не стремится сделать вас более продуктивным и многое другое. Подключайтесь!

Подписывайтесь на мой Telegram-канал Mobile Insights, где еще больше материалов для мобильных разработчиков. А в IT Insights — много об интересном коде и технологиях.
iOS
• Почему ваша задача выполняется в главном потоке?
• Как ускорить запуск iOS-приложения в 2 раза с помощью Network Instrument
• Быстрый доступ к VPN в iOS с помощью App Intents
• Как реализовать спойлер-эффект как в Telegram на Swift?
• Как в Duolingo удалили 10,000 строк кода с помощью Reaper
• Предотвращаем порчу кодовой базы в iOS-проектах с помощью прекоммит хуков
• Как мы запекали 3D-пиццу
• Есть ли ORM круче SwiftData
• Макросы спустя полгода: не все так гладко
• DriverKit: гоняем данные по проводу без мам, пап и MFi
• HomePod с дисплеем, homeOS и Apple Intelligence выйдет на рынок в следующем году
•
Server side Live Activities guide
•
Getting Started with Hummingbird
•
SwiftUI Animations
•
Using the #expect macro for Swift Testing
•
Using PreviewModifier for Quick Xcode Previews
•
SwiftUI: Configurable Widget to Let Our User Choose!
•
Mastering container views in SwiftUI. Sections.
•
Blending colors dynamically with the mix modifier
•
Mastering Actors and Concurrency — Best Practices
•
Implementing Shared With You in SwiftUI
•
Fixing Bitcode Issues in Xcode 16: How to Resolve Invalid Executable Errors When Uploading iOS Builds
•
How XcodeGen reduced the TDD in Swift codebase by 58,000+ lines
•
How to Perfectly Merge SwiftUI and UIKit Navigation: A Step-by-Step Guide
•
How to Use Accessibility Inspector for iOS Apps
•
CoreML in Action: From Concept to Code
•
S.O.L.I.D. in Swift
•
Recreate Apple’s Stopwatch: Mastering Millisecond Precision in SwiftUI
•
Видео SwiftCraft 2024
•
Alternative App Icons in Xcode 16
•
New in Xcode16: the macro @Previewable
•
SwiftUI — Support Prior iOS Versions — Backward Compatibility
•
Embedded Swift and 16×16 LED Matrix Animation Overview
•
Preview Updates in Xcode 16
•
Auto Scrolling Infinite Carousel — iOS 18
•
LinksKit — удобное представление SwiftUI для отображения общих ссылок
•
SymSpellSwift — коррекция орфографии и нечеткий поиск
•
SwiftUI Flow Layout — потоковый макет на SwiftUI
Android
• Как устроен сборщик метрик Android-проекта
• Рисуя звезды: рисование с помощью Compose и Canvas
• Koin: как сделать свой DI за 10 минут
• Шлём биткоины с Android (и смотрим транзакции)
• Новый подход к безопасному управлению состояниями в Kotlin-приложениях
• Создание уведомлений на языке Kotlin
• Gemini Nano теперь доступен на Android в экспериментальном режиме
• Что такое Hilt
•
ImageVector vs painterResources — Under the hood
•
Why fullMode hates Gson so much?
•
Optimized Image Loading for Compose and Kotlin Multiplatform
•
Demystifying the Android Build Process: A Deep Dive into APK Generation
•
Quick introduction to Large Language Models for Android developers
•
How to Ripple Outside of Compose Material
•
Our journey with compose animations
•
A Beginner’s Guide to Building Android from AOSP
•
Exploring the Declarative Nature of Jetpack Compose
•
Startup Profiles: The Quick Fix for Painfully Slow App Startups
•
Jetpack Compose Tutorials and Playground
•
Using kotlin-inject in a Kotlin/Compose Multiplatform project
•
How to bring your AI Model to Android devices
•
A quick glance at AppWidget
•
Implementing Type-Safe Multi-Module Nested Navigation in Bottom Navigation using Jetpack Compose
•
Weather App For Android Wear OS Using Compose
•
How to “Safely” Migrate from Retrofit to Ktor
•
Integrating the Gemini API in Android
•
How to Navigate From ViewModels With a Custom Navigator
•
Android Application with Microsoft Identity Platform
•
Applying the Factory Method and Abstract Factory Patterns in Kotlin
•
YourSpace — семейный локатор и общение
Кроссплатформа
• Как Dart VM выполняет твой код?
•
Inspektify: KMP network inspection library
•
Hotwire Native
•
A Simple way to organize your code in Flutter
•
Automate Your Flutter Environment Setup: One Script to Configure It All
•
Realistic folder opening animation in Flutter
•
2D Game in Flutter using Flame
•
Multiplayer drawing with Flutter and Serverpod. Full tutorial.
•
Texty — текст с различными стилями, эффектами и анимацией для Compose Multiplatform
Разработка
• Чем можно заменить Firebase — Обсуждение на Reddit
• 10 SDK, чтобы улучшить ваше мобильное приложение
• 3 совета для улучшения читабельности кода
• Разработчики получают мало пользы (если вообще что-то получают) от ИИ-помощников
• Aspect Build получил $3.85M на улучшение работы с Bazel
• Самые высокооплачиваемые вакансии сентября в сфере разработки приложений
• Уволить нельзя терпеть
• Lua – идеальный встраиваемый язык
• ⅔ российских компаний используют ИТ-шеринг
•
Shadow Calls and Circuit Breakers: Uber’s Safe Approach to Mobile Network API Migration
•
It’s hard to write code for computers, but it’s even harder to write code for humans
•
Don’t Be Afraid to Re-Invent the Wheel
•
Evolving GitHub Issue
•
A Local-First Case Study
•
Why do programmers need private offices with doors?
•
From Manual Pain to Automation Chaos: Finding the Right Balance
•
Giving depth to your App Icons
•
The reality of the developer job market with ex-Googler YK Sugi
Аналитика, маркетинг и монетизация
• Самые скачиваемые и зарабатывающие приложения в России в сентябре 2024
• Новый запрос на обмен контактами в iOS 18 стал угрозой для новых социальных приложений
• Epic подала в суд на Samsung и Google
• Napkin — приложение для заметок, которое не стремится сделать вас более продуктивным
• Новое приложение Wordy поможет вам учить язык во время просмотра фильмов и шоу
• Проектируем А/Б-эксперименты грамотно
AI, Устройства, IoT
• Когда в автомобиле нет системы GNSS…
• Новый подход к безопасному управлению состояниями в Kotlin-приложениях
• Как в Купере масштабировали машинное обучение и что из этого получилось
• Ищем потерявшихся питомцев с помощью нейросетей
• OpenAI запускает «Холст» для программирования с ChatGPT
• Poolside, занимающийся ИИ-программированием, привлек $500 млн
• Nvidia открыла новую ИИ-модель, готовую соперничать с GPT-4
• Ello обучает детей чтению и с помощью ИИ позволяет детям создавать свои собственные истории
← Предыдущий дайджест. Если у вас есть другие интересные материалы или вы нашли ошибку — пришлите, пожалуйста, в почту.

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

• Почему ваша задача выполняется в главном потоке?
• Как ускорить запуск iOS-приложения в 2 раза с помощью Network Instrument
• Быстрый доступ к VPN в iOS с помощью App Intents
• Как реализовать спойлер-эффект как в Telegram на Swift?
• Как в Duolingo удалили 10,000 строк кода с помощью Reaper
• Предотвращаем порчу кодовой базы в iOS-проектах с помощью прекоммит хуков
• Как мы запекали 3D-пиццу
• Есть ли ORM круче SwiftData
• Макросы спустя полгода: не все так гладко
• DriverKit: гоняем данные по проводу без мам, пап и MFi
• HomePod с дисплеем, homeOS и Apple Intelligence выйдет на рынок в следующем году
•

•

•

•

•

•

•

•

•

•

•

•

•

•

•

•

•

•

•

•

•

•

•

•

•

•

•


• Как устроен сборщик метрик Android-проекта
• Рисуя звезды: рисование с помощью Compose и Canvas
• Koin: как сделать свой DI за 10 минут
• Шлём биткоины с Android (и смотрим транзакции)
• Новый подход к безопасному управлению состояниями в Kotlin-приложениях
• Создание уведомлений на языке Kotlin
• Gemini Nano теперь доступен на Android в экспериментальном режиме
• Что такое Hilt
•

•

•

•

•

•

•

•

•

•

•

•

•

•

•

•

•

•

•

•

•

•


• Как Dart VM выполняет твой код?
•

•

•

•

•

•

•

•


• Чем можно заменить Firebase — Обсуждение на Reddit
• 10 SDK, чтобы улучшить ваше мобильное приложение
• 3 совета для улучшения читабельности кода
• Разработчики получают мало пользы (если вообще что-то получают) от ИИ-помощников
• Aspect Build получил $3.85M на улучшение работы с Bazel
• Самые высокооплачиваемые вакансии сентября в сфере разработки приложений
• Уволить нельзя терпеть
• Lua – идеальный встраиваемый язык
• ⅔ российских компаний используют ИТ-шеринг
•

•

•

•

•

•

•

•

•


• Самые скачиваемые и зарабатывающие приложения в России в сентябре 2024
• Новый запрос на обмен контактами в iOS 18 стал угрозой для новых социальных приложений
• Epic подала в суд на Samsung и Google
• Napkin — приложение для заметок, которое не стремится сделать вас более продуктивным
• Новое приложение Wordy поможет вам учить язык во время просмотра фильмов и шоу
• Проектируем А/Б-эксперименты грамотно

• Когда в автомобиле нет системы GNSS…
• Новый подход к безопасному управлению состояниями в Kotlin-приложениях
• Как в Купере масштабировали машинное обучение и что из этого получилось
• Ищем потерявшихся питомцев с помощью нейросетей
• OpenAI запускает «Холст» для программирования с ChatGPT
• Poolside, занимающийся ИИ-программированием, привлек $500 млн
• Nvidia открыла новую ИИ-модель, готовую соперничать с GPT-4
• Ello обучает детей чтению и с помощью ИИ позволяет детям создавать свои собственные истории
← Предыдущий дайджест. Если у вас есть другие интересные материалы или вы нашли ошибку — пришлите, пожалуйста, в почту.