В нашем новом дайджесте снова история уменьшения размера приложения, Android System Design и проектирование для больших экранов, мобильные таблицы, сообщения об ошибках, «антивирусный» Mastodon и многое другое!
В нашем Telegram-канале Mobile Insights, еще больше материалов для разработчиков — подключайтесь!

iOS
• Как я уменьшил размер моего приложения на 73%
• Шифруем CoreML
• «Оживляем» наше iOS-приложение с помощью Live Activity
• Как устроено приложение Календарь в iPhone
• Пишем собственный CustomStepper в Swift
• Работая в Xcode: создаем реюзабельные цветовые палитры, которыми можно поделиться
• Core Data в современном интерьере SwftUI. Некоторые уточнения и заблуждения. часть 1 + часть 2
• Загружаем dSYM в Firebase Crashlytics через Xcode Cloud
• Месячная заруба с Apple. Встраиваем On-Demand Resources. Часть 1
• Observer (Наблюдатель) — шаблон проектирования на примере Swift
• Видение вариативных дженериков в Swift
•
How Does Swift Concurrency Prevents Thread Explosions?
•
Five ways to break Swift Concurrency
•
SwiftUI Labeled Content
•
The 5 Best iOS Developer Communities You Should Join
•
When to use Swift For-in and ForEach
•
Q&A: 10 Questions with Design Evangelism
•
How to implement sound waves in iOS by using ZEGOCLOUD SDK
•
Make swift ‘contains()’ and ‘filter()’ ready for iOS Development
•
The Chain of Responsibility Pattern in Swift
•
The Ultimate Domain Language: Declarative Swift
•
Dissect the PKCE Authorization Code Grant Flow on iOS
•
Get Started with Unit Testing in Swift
•
SwiftUI Binding Extensions
•
Get Started With The Dynamic Island and Live Activities in iOS 16.1
•
Dependency Injection in Swift 5
•
7 iOS Projects to Hack on This Weekend
•
Swift Charts Tutorial: Getting Started
•
A Deep Dive Into the Swift Concurrency Bottleneck
•
Swift and Objective-C Interoperability With @objc and @objcMembers
•
DALL-E API in Swift — Generate Faces
•
How to Create Your Xcode Cloud Workflow
•
Two Practical Uses of Enum in Swift
•
Removing 30% of our iOS crashes
•
Introducing N26 Backend Driven Navigation: FlowKit
•
PromiseKit: промисы для Swift и ObjC
•
KeyboardKit: кастомные клавиатуры для iOS
Android
• Собеседование Android System Design
• Шаблоны проектирования для больших экранов
• Orange Pi OS: операционная система от создателей конкурента Raspberry Pi. Возможности ОС
• Вращаем невращаемое, или Как повернуть экран звонка
• Удалённая сборка Android проектов на сервере прямо из Android Studio
• Как можно хранить стабы для MockWebServer в Android-тестах
• Поиск не вставая с дивана, или как подружить приложение со Сбер Ассистентом
• Системный подход к улучшению старта Android-приложения
• Компилируем validatekeymaps из Android для запуска в браузере
• Deep Dive Into Deep Link. Часть 5. Нюансы: port, mime, path, диспетчеризация, обратная совместимость
• Трудности, с которыми мы столкнулись при модуляризации нашего приложения — Часть 1
• Удовлетворенность экосистемой Kotlin — исследование JetBrains
• Google TV и Android TV переходят на Android App Bundle
•
AGSL: Made in the Shade®
•
Under the hood of Relay, Android Studio plugin for exporting Figma components to compose
•
Faster Jetpack Compose <-> View interop with App Startup and baseline profile
•
Rethinking Android Runtime with Profile-Guided Optimizations
•
Compose by example: BoxWithConstraints
•
Solving the Moshi enumeration problem using generics
•
Fixing Dependency Metadata in Gradle
•
Do you follow these Kotlin Best Practices?
•
Card Flip Animation with Jetpack Compose
•
Most Asked Android Interview Questions In 2022
•
Why go with Paparazzi? Our journey with Android Screenshot Testing
•
How to Customize the Switch Slider in Android
•
Coroutine: Make it faster and Efficient
•
Retrofitting null-safety onto Java at Meta
•
Development on steroids: Ping-pong Programming and TDD
•
You Must Be 64-Bit to Ride This Ferry
•
Mercado Libre Android app is on a diet: Dynamic Features
•
Just your type: Variable fonts in Compose
•
How Kotlin Is Going To Fix Your Pains in 2023
•
Cloudy: blur для Jetpack Compose
•
Android App Starter Template: шаблон правильного приложения
Кроссплатформа
• Создаём сложные интерфейсы и спецэффекты на базе Qt. Часть II
• Bender postmortem
•
How to Build a Game for the Playdate Console Using the Playdate SDK and Lua
•
In App Update — The Flutter Way
•
Flutter vs Jetpack Compose: The Battle of the Decade
•
Top 8 Flutter Animation Packages
•
Dart Extensions Tutorial: Improve your Flutter Code
•
Integrate Payment in Flutter with Stripe
•
Blurhash — an image placeholder for React Native
•
How react-native became performant as native with the new architecture
•
Kotlin for backend, is it that good?
•
Difference Between Ephemeral State & App State In Flutter
Разработка
• Как отобразить таблицу на экране мобильного устройства: решения
• Использование Rust в стартапе: поучительная история
• Что такое Black Box Testing?
• Будьте другом своему пользователю, пишите осмысленные сообщения об ошибках
• Пользовательские истории в разработке
• Как доработка UX помогла сократить время прохождения сценария заказа еды на 70%. Часть 1
• Flower: как работает чат-бот платформа Авито
• Podlodka #295: финмониторинг и банковский compliance
• Alphabet планирует сократить 10,000 сотрудников
• Самые высокооплачиваемые вакансии ноября в области разработки приложений
• Niantic показала будущее AR-игр
•
The Architecture of a Modern Startup
•
The Difference Between The Clever Developer & The Wise Developer
•
Coding is simple. Engineering is hard.
•
How I’m a Productive Programmer With a Memory of a Fruit Fly
•
Why Some Developers Will Never Improve
•
Bullshit Software Projects
•
Real-Time Game Server Internals: Basic Theory, Architecture, Optimization, Auto-Scaling
•
Are Developers Costs or Assets?
•
Learn Kubernetes with Google
•
This Simple Question Made Me Hire a Couple of Junior Programmers
•
Elimination of programmers
•
Rhasspy: голосовой помощник
Аналитика, маркетинг и монетизация
• Альтернатива Твиттеру: почему Mastodon сделан так, чтобы быть «антивирусным»
• Appodeal представил обновленный SDK 3.0 c улучшенным функционалом
• МТС запустила свой магазин приложений AppBazar
• Аудитория RuStore выросла в шесть раз
• Исследование “Бенчмарки продуктового опыта 2022”
• Careem app – сервисы в одно окно
• 97% доходов игр идет от повторных покупок
• App Store собирает все данные о действиях пользователей
• Самые зарабатывающие приложения США в октябре
AI, Устройства, IoT
• Тестируем ультра-производительные кроссоверы для встраиваемых систем
• AlertBox Radio: ещё больше магии (плюс ETH, RS485, RTC, WDG, SD)
• Переделка оповещателя пожарной сигнализации для отправки тревоги в Home Assistant
• Google работает над новым ИИ для написания кода
• Kite, занимавшийся ИИ автодополнения кода, закрывается
• Amazon Alexa: «колоссальный провал», который в этом году может стоить $10 млрд
← Предыдущий дайджест. Если у вас есть другие интересные материалы или вы нашли ошибку — пришлите, пожалуйста, в почту.
В нашем Telegram-канале Mobile Insights, еще больше материалов для разработчиков — подключайтесь!


• Как я уменьшил размер моего приложения на 73%
• Шифруем CoreML
• «Оживляем» наше iOS-приложение с помощью Live Activity
• Как устроено приложение Календарь в iPhone
• Пишем собственный CustomStepper в Swift
• Работая в Xcode: создаем реюзабельные цветовые палитры, которыми можно поделиться
• Core Data в современном интерьере SwftUI. Некоторые уточнения и заблуждения. часть 1 + часть 2
• Загружаем dSYM в Firebase Crashlytics через Xcode Cloud
• Месячная заруба с Apple. Встраиваем On-Demand Resources. Часть 1
• Observer (Наблюдатель) — шаблон проектирования на примере Swift
• Видение вариативных дженериков в Swift
•

•

•

•

•

•

•

•

•

•

•

•

•

•

•

•

•

•

•

•

•

•

•

•

•

•


• Собеседование Android System Design
• Шаблоны проектирования для больших экранов
• Orange Pi OS: операционная система от создателей конкурента Raspberry Pi. Возможности ОС
• Вращаем невращаемое, или Как повернуть экран звонка
• Удалённая сборка Android проектов на сервере прямо из Android Studio
• Как можно хранить стабы для MockWebServer в Android-тестах
• Поиск не вставая с дивана, или как подружить приложение со Сбер Ассистентом
• Системный подход к улучшению старта Android-приложения
• Компилируем validatekeymaps из Android для запуска в браузере
• Deep Dive Into Deep Link. Часть 5. Нюансы: port, mime, path, диспетчеризация, обратная совместимость
• Трудности, с которыми мы столкнулись при модуляризации нашего приложения — Часть 1
• Удовлетворенность экосистемой Kotlin — исследование JetBrains
• Google TV и Android TV переходят на Android App Bundle
•

•

•

•

•

•

•

•

•

•

•

•

•

•

•

•

•

•

•

•

•


• Создаём сложные интерфейсы и спецэффекты на базе Qt. Часть II
• Bender postmortem
•

•

•

•

•

•

•

•

•

•


• Как отобразить таблицу на экране мобильного устройства: решения
• Использование Rust в стартапе: поучительная история
• Что такое Black Box Testing?
• Будьте другом своему пользователю, пишите осмысленные сообщения об ошибках
• Пользовательские истории в разработке
• Как доработка UX помогла сократить время прохождения сценария заказа еды на 70%. Часть 1
• Flower: как работает чат-бот платформа Авито
• Podlodka #295: финмониторинг и банковский compliance
• Alphabet планирует сократить 10,000 сотрудников
• Самые высокооплачиваемые вакансии ноября в области разработки приложений
• Niantic показала будущее AR-игр
•

•

•

•

•

•

•

•

•

•

•

•


• Альтернатива Твиттеру: почему Mastodon сделан так, чтобы быть «антивирусным»
• Appodeal представил обновленный SDK 3.0 c улучшенным функционалом
• МТС запустила свой магазин приложений AppBazar
• Аудитория RuStore выросла в шесть раз
• Исследование “Бенчмарки продуктового опыта 2022”
• Careem app – сервисы в одно окно
• 97% доходов игр идет от повторных покупок
• App Store собирает все данные о действиях пользователей
• Самые зарабатывающие приложения США в октябре

• Тестируем ультра-производительные кроссоверы для встраиваемых систем
• AlertBox Radio: ещё больше магии (плюс ETH, RS485, RTC, WDG, SD)
• Переделка оповещателя пожарной сигнализации для отправки тревоги в Home Assistant
• Google работает над новым ИИ для написания кода
• Kite, занимавшийся ИИ автодополнения кода, закрывается
• Amazon Alexa: «колоссальный провал», который в этом году может стоить $10 млрд
← Предыдущий дайджест. Если у вас есть другие интересные материалы или вы нашли ошибку — пришлите, пожалуйста, в почту.