Лучшее из вчерашнего в #ios - завершение цикла "Масштабирование iOS в Bumble"
Серия из трех статей о работе, проделанной в течение 2022 и 2023 годов и направленной на решение проблем масштабирования производственных приложений для iOS в одной из крупнейших дейтинг-компаний. TLDR: Tuist.
У меня был перевод первой, а вот вторая и jonathan.crooke/scaling-ios-at-bumble-6f0602682903">третья. Поставьте 👍, если тоже хотите их на русском.
Android
• ComposeInvestigator: отслеживание рекомпозиций
• Разработка новостного приложения. Часть 2
• Наш опыт внедрения Compose в большой проект
• Многомодульность: что это такое?
• Жизнь инди в Google Play
• Android Studio Iguana стала стабильной
• State of Compose 2023
• Create Gemini loading animation using Jetpack compose
• Rich media input from the keyboard in Compose
#android
Apple вернет PWA в iOS
Apple «продолжит предлагать существующие возможности веб-приложений для главного экрана в ЕС».
1. Ранее Apple объяснила, что ей придется создать «совершенно новую интеграционную архитектуру, которой сейчас нет в iOS», чтобы решить «сложные проблемы безопасности и конфиденциальности, связанные с PWA-приложениями, использующими альтернативные браузерные движки».
2. Сегодняшним заявлением Apple изменила свой курс и сообщила, что веб-приложения продолжат существовать в Европейском союзе в том виде, в котором они существовали до версии iOS 17.4.
3. Просто работать всегда они будут на WebKit, независимо от того, добавлено ли веб-приложение с помощью Safari или нет — точно так же, как это работает сегодня и уже много лет.
И что: не могу не вспомнить анекдот в тему
Сидит молодая семья на пляже. Вдруг на песок выпрыгивает золотая рыбка и говорит:
- Я исполню три ваших желания по одному на каждого.
Сын сразу говорит:
- Хочу хомячка!
Отец:
- В жопу хомячка!
Мать:
- Из жопы хомячка!
Гибридная игуана
Подборка всех материалов за прошлую неделю - возврат от SwiftUI к UIKit и машинное обучение на устройствах, стабильная Iguana и гибридный интерфейс в Wear OS, деплой Flutter-приложений, сложный повтор в мобильном календаре, весенние маркетологи в мобайле и многое другое. Подключайтесь!
Android Studio Iguana стала стабильной
Сегодня Google выпустил Android Studio Iguana в канале стабильных релизов. Среди новых функций:
• Интеграция системы контроля версий в App Quality Insights
• Просмотр вариантов сбоев Crashlytics в App Quality Insights
• Проверка доступности и адаптивности дизайна Jetpack Compose
• Прогрессивный рендеринг для предварительного просмотра Compose
• Обновленная платформа Intellij
• Шаблоны для Baseline Profiles
• Проверка изменений конфигурации с Espresso Device API
• Pixel 8 и Pixel 8 Pro в Android Emulator (34.2)
• Поддержка Gradle Version Catalogs
• Интеграция Google Play SDK Index
• Предупреждение о неподдерживаемой compileSdk
Android
Посмотрите - чуть более подробно про гибридный интерфейс в Wear OS.
• Что такое гибридный интерфейс в Wear OS
• Google TV обновляет домашний экран
• Decompose: BLoC с навигацией и подключаемым UI
• Настраиваем кросс-обновления Android-приложений между сторами
• Android Lint: оптимизируем проверку мердж-реквестов
• Fun with shapes in Compose
• Snapshot Testing Libraries for Android: Paparazzi vs Shot
• Jetpack Compose Hacks:Top 3 Secret Jetpack Compose Modifiers
• clwater/think-of-current-android-architecture-from-usecase-cc1f95590e4a">Think of current Android Architecture from UseCase
#android
Лучшее из вчерашнего #ios - бесконечный спор о том, готов ли SwiftUI к проду: Почему Ollie вернулся от SwiftUI к UIKit (мой перевод)
Компания потратила год отнюдь не мифических человеко-часов, чтобы разобраться с тем, как работает фреймворк, но так и не смогла сделать это, до сих пор описывая работу SwiftUI как "магию". Да, признает автор, для простых проектов такие проблемы будут вообще неактуальны, но для больших приложений SwiftUI еще не готов.
После 10 лет страданий, открывания и закрывания, найма и увольнения людей, Apple вроде как окончательно закрыла проект своего автономного электромобиля (надо было купить им Теслу, надо было…). Интересно, что большинство сотрудников команды из 2000 человек, занимавшейся разработкой автомобиля, перейдут к работе над генеративным искусственным интеллектом, который обещают уже в iOS 18.
Разработка
Apple закрыла проект создания электромобиля
Самые высокооплачиваемые вакансии января в сфере разработки приложений
GitHub открывает доступ к Copilot Enterprise
Finding a balance while coding
What’s the buzz about the 2024 OWASP Mobile Top 10 changes?
Маркетинг
Bumble looks to revive its friendship-focused BFF product in wake of dating app downturn
SeatGeek’s new tools help fans resell tickets at the best price
Кроссплатформа
Flutter vs. React Native: Which one to choose for 2024?
henryifebunandu/enhancing-your-flutter-apps-with-this-app-architecture-and-feature-first-approach-14502cb242e1">Supercharge Your Flutter Apps with Google’s App Architecture
iOS
EmojiKit: работа с эмодзи в Swift
Почему Ollie перешел от SwiftUI к UIKit
jakir/gemini-ai-api-implementation-in-ios-swiftui-e92b71a7e4f1">Gemini AI API implementation in iOS
How to use VariadicView, SwiftUI's Private View API
Third-party libraries acknowledgments using a Settings bundle
Discovering Swift Async Algorithms package
#ios
Android
• Прекратите использовать тестовые теги в Jetpack Compose
• Вопросы с собеседований: Когда нельзя использовать inline функции
• Lingshot: правильная архитектура Android-приложения
• Preferences Datastore is slow, but you should still choose it over Shared Preferences
• Overlapping Lists — Custom Composable Vs RecyclerView
• khush.panchal123/prioritydispatcher-dispatcher-based-on-priority-queue-035cebd6f96a">PriorityDispatcher — Priority based Dispatcher in Kotlin Coroutines
• How a Bubble Chat Increases Up to 90% of Seller’s Read Speed
• cgaisl/how-to-pass-arguments-to-a-hiltviewmodel-from-compose-97c74a75f772">How to Pass Arguments to a HiltViewModel from Compose
#android
Лучшее из вчерашнего в #dev - Инжиниринг больше про людей, чем про технологии (link)
Многие инженеры недооценивают важность навыков общения с людьми. Они начинают изучать программирование и полагают, что будут просто кодить весь день и им не придется ни с кем общаться. На самом деле все обстоит иначе. Инженерное дело - одна из самых дружелюбных сфер деятельности. Все дело в хорошем сотрудничестве, согласованности, командной работе и помощи друг другу.
Android
• Google представил гибридный интерфейс в Wear OS
• Новостное приложение: с нуля до публикации в Google Play. Часть 1
• Прокси-сервер для Android на Go
• Stop Using Test Tags in the Jetpack Compose Production Code
• Navigation in Jetpack Compose
• Ins and Outs of Kotlin Variance
• Container transform animation with Jetpack Compose
• Easily add document scanning capability to your app with ML Kit Document Scanner API
#android
Qualcomm открывает AI Hub
На выставке Mobile World Congress компания Qualcomm представила инструмент, упрощающий доступ разработчиков к ИИ-моделям.
1. Новый Qualcomm AI Hub содержит подборку из более чем 75 генеративных моделей ИИ, которые разработчики могут легко загружать на устройства, работающие на базе Qualcomm.
2. Библиотека содержит некоторые из самых популярных моделей в отрасли, такие как Whisper, система автоматического распознавания речи от OpenAI, и Stable DIffusion, модель преобразования текста в изображение от Stability AI.
3. Qualcomm AI Hub автоматически применяет аппаратные оптимизации к моделям для повышения производительности искусственного интеллекта на устройстве. Кроме того, модели доработаны таким образом, чтобы максимально эффективно использовать все ядра Qualcomm AI Engine, включая NPU, CPU и GPU, что позволяет повысить энергоэффективность, снизить нагрузку на память и увеличить скорость вычислений в четыре раза
4. Компания намеревается постоянно добавляться новые модели.
5. Qualcomm сообщает, что оптимизированные модели доступны уже сегодня как на Qualcomm AI Hub, так и на GitHub и Hugging Face.
И что: ИИ-на устройствах не только позволяет ускорить работу приложений, но и соблюсти конфиденциальность в отношении персональных данных. А в целом "пограничный" ИИ развивается семимильными шагами, что не может не радовать.
Видео и подкасты за неделю:
• (iOS Ru)
Введение в разработку под Apple Vision Pro
• (iOS En)
iOS Dev's Thoughts on Working in Apple Vision Pro
• (iOS En)
How to use ContentUnavailableView in SwiftUI
• (iOS En)
How to use Grid in SwiftUI
• (iOS En)
How to use NavigationSplitView in SwiftUI
• (iOS En)
Apple Maps Bottom Sheet
• (iOS En)
65 tips to use Xcode like a PRO
• (iOS En)
Advance Map Interaction - Draggable Annotation
• (And Ru)
Новостное приложение: с нуля до публикации в Google Play. Часть 1
• (And En)
Fan’otations - Android Developers Backstage
• (And En)
derivedStateOf VS. remember(key) - THIS is Really the Difference
• (And En)
Full Beginner's Guide to the Jetpack Compose Preview in Android Studio
• (And En)
Mastering Jetpack Compose Previews - Test your UI before it tests you
• (Dev Ru)
Публичное собеседование на позицию Head of QA
• (Dev Ru)
Обязательные знания для тимлида
• (Dev Ru)
Краш-курс по автоматизации тестирования
• (Dev En)
Google Gemini AI Course for Beginners
• (Dsg Ru)
Ozon Tech Community Design Meetup
Что вы интересного посмотрели/послушали про разработку на этой неделе?
🌐 @AppFiles
Android
• SmartFlow: «В начале был пароль...» или новая аутентификация VK ID
• Container transform animation with Jetpack Compose
• Ins and Outs of Kotlin Variance
• Overlapping Lists — Custom Composable Vs RecyclerView
• kappdev/wobbly-coin-animation-in-jetpack-compose-491e51129a96">Wobbly Coin Animation in Jetpack Compose
#android
Apple только что показала новые 13" и 15" MacBook Air на базе процессора M3. Говорят, что работают на 60% быстрее, чем модели на M1, и до 13 раз быстрее, чем самый быстрый MacBook Air на Intel. Стоимость MacBook Air 13 с M3 составляет от $1099, MacBook Air 15 с M3 уже доступен по предзаказу от $1299.
Разработка
• Как мы пытались растить выручку через персонализацию
• Топ 5 книг для синьора
• Исследователи обнаружили в Hugging Face вредоносные модели ИИ
• How to build a documentation website for your project
• Case Study: Improving a Banking App with a UX Audit
• juraj.malenica/unpopular-opinion-its-harder-than-ever-to-be-a-good-software-engineer-8560585b0ea8">Unpopular Opinion: It’s harder than ever to be a good software engineer
Маркетинг
• Самые скачиваемые и зарабатывающие приложения в России в феврале 2024
• Маркетологи в мобайле (Spring Edition): Василина Кузенко (ИЛЬ ДЕ БОТЭ)
• Самые скачиваемые приложения в мире в январе 2024
• Маркетологи в мобайле (Spring Edition): Ярослава Адаменко (М.Видео и Эльдорадо)
Кроссплатформа
• Migrating to Koin Annotations in a multiplatform project
iOS
• Continuations для взаимодействия асинхронных задач с синхронным кодом
• Apple вернет PWA в iOS
• Apple опубликовала план развертывания подписей для SDK
• Пишем текстовую RPG
• VerticalSplit: контейнер SwiftUI с двумя View с настраиваемым разделением
• Setapp от MacPaw станет первой альтернативной платформой для iOS в Европе
• An Introduction to Isolation in Swift
• Migrating my SwiftUI App to VisionOS in 2 Hours
• jonathan.crooke/scaling-ios-at-bumble-6f0602682903">Scaling iOS at Bumble: Part 3/3 — Results and Developer Quality of Life
• Swift Predicate: Usage, Composition, and Considerations
#ios
Исследователи обнаружили в Hugging Face вредоносные ИИ-модели
На платформе Hugging Face было обнаружено не менее 100 вредоносных ИИ-моделей.
1. Команда безопасности JFrog обнаружила, что около сотни моделей, размещенных на платформе, содержат вредоносный функционал.
2. Например, одна из моделей PyTorch содержала код, который позволял установить обратный shell к компьютеру жертвы. Вредоносный код использовал метод из модуля pickle в Python для выполнения произвольного кода при загрузке файла модели, избегая обнаружения за счет встраивания в доверенный процесс сериализации.
3. В использовании вредоносные модели замечены пока не были и вообще предполагается, что это были исследователи.
4. Однако это происходит, несмотря на меры безопасности Hugging Face, включая сканирование на наличие вредоносного кода и секретов, а также тщательное изучение функционала моделей на предмет обнаружения такого поведения.
И что: все, что может быть поражено - будет поражено. Поэтому в следующий раз при использовании новой модели подумайте, а нет ли в ней бекдора.
Видео и подкасты за неделю:
• (iOS Ru)
Пишем текстовую RPG
• (iOS En)
How to Create 3D App Icons for visionOS
• (iOS En)
How to easily mock ANY network call with URLProtocol
• (iOS En)
Elastic Custom Segmented Control - SwiftUI
• (iOS En)
Custom SwiftUI Calendar
• (And Ru)
Наш опыт внедрения Compose в большой проект
• (And Ru)
Многомодульность: что это такое?
• (And Ru)
Жизнь инди в Google Play
• (And Ru)
Разработка новостного приложения. Часть 2
• (And En)
The Ultimate Package Structure Guide for Android Developers
•(And En)
Modern Dependency Management With Version Catalogs
• (And En)
Modularization at scale with Alireza Tizfahmfard
• (Dev Ru)
Топ 5 книг для синьора
• (Dev En)
Machine Learning in 2024 – Beginner's Course
• (Dev Ru)
Как мы пытались растить выручку через персонализацию
Что вы интересного посмотрели/послушали про разработку на этой неделе? 🌐 @AppFiles
В TechCrunch обозрели приложение Liveliness - это сообщества для любителей заниматься определенным спортом (например, вы бегаете и ищите тех, кто хочет бегать вместе с вами). Собственно, в самом приложении нет ничего особенного - ему уже год и у него около 2.3 тысяч (не сотен, тысяч) пользователей. Мне понравился вывод - “в условиях, когда основные социальные сети чувствуют себя все более неполноценными в качестве инструмента для налаживания человеческих связей, у нишевых социальных сетей, подобных этой, может появиться возможность незаметно вклиниться и набрать обороты, создавая более гостеприимные и ориентированные на сообщества пространства, сфокусированные на общих интересах”. Так что делайте в приложениях сообщества и будет вам счастье.
Разработка
• Открытая модель StarCoder 2 работает на обычных GPU
• «Не заставляйте меня вводить цифры»: реализуем сложный повтор в мобильном календаре
• Crafting a Custom Sports Activity Service with OpenAI and Node JS
• Software engineering practices you should probably be following in 2024
Маркетинг
• Liveliness — сообщества для любителей спорта
• Маркетологи в мобайле (Spring Edition): Ольга Бигбашева (Rendez-Vous)
• Кейс: разметка приложения с нуля на конкретном примере
Кроссплатформа
• Деплой Flutter-приложений и особенности платформ
• Диплом специалиста ИБ. Часть №4 — Мобильное приложение Smart Connect
• Вопросы с собеседований: Что такое примесь (mixin) в Dart
• The missing guide to deep linking in Flutter apps
iOS
• Working with dates and Codable in Swift
• Swift Predicate: Usage, Composition, and Considerations
• rohit-13/exploring-the-swiftuis-grid-view-lazyvgrid-griditem-and-grid-gridrow-888fca958b0f">Exploring the SwiftUI’s Grid View
#ios
Открытая модель StarCoder 2 работает на обычных GPU
Компании с поразительной скоростью делают все новые и новые генераторы кода на основе искусственного интеллекта. Hugging Face несколько лет назад объединился с ServiceNow и создал StarCoder, генератор кода с открытым исходным кодом и менее строгой лицензией. Сейчас вышел StarCoder 2.
1. StarCoder 2 — это не одна модель генерации кода, а скорее целое семейство. Топовая модель имеет 15 миллиардов параметров.
2. Как и большинство других генераторов кода, StarCoder 2 предлагает завершение строк кода, а также обобщение и извлечение фрагментов кода при запросе на естественном языке.
3. При этом модели могут работать локально на обычных компьютерах с современными GPU. Например, StarCoder 2 можно дотренировать для своих данных на Nvidia A100 «за несколько часов» .
4. Знает 619 языков программирования, Hugging Face утверждает, что StarCoder 2 15B превосходит Code Llama 33B на подмножестве задач по дополнению кода с вдвое большей скоростью.
Android
Осознанная оптимизация Compose 2: В борьбе с композицией
hzolfagharipour/comprehensive-guide-to-kotlin-context-receiver-f5478eea6b42">Comprehensive Guide To Kotlin Context Receiver
Jetpack Compose: Strong Skipping Mode Explained
michalankiersztajn/kotlin-inline-value-classes-explained-090fe64829e6">Kotlin inline value classes explained
mohit2656422/android-scoped-storage-dd50104a0cbd">Android: Scoped Storage
#android
С мест докладывают, что Apple вскоре может столкнуться с расследованием в связи с решением прекратить поддержку веб-приложений на iOS в странах Европейского союза. После официального подтверждения того, что PWA на iOS фактически работать перестанут, Еврокомиссия начала собирать мнения разработчиков и экспертов. Правда, Apple в качестве основной причины изменений компания называет сам принятый в ЕС Закон о цифровых рынка, который требует от Apple полной поддержки сторонних браузерных движков, а не только WebKit. По словам компании, внедрение поддержки веб-приложений для других браузеров потребовало бы от компании создания «совершенно новой интеграционной архитектуры», что «было нецелесообразно». Так что может разработчики и будут против, однако кто ж теперь виноват в принятии закона…
Разработка
• Еврокомиссия расследует отказ Apple от PWA
• Бывшие инженеры Twitter создают Particle, читалку новостей с ИИ
• VK расширяет программу оплачиваемой стажировки для молодежи
• Beware the parasite engineer
Маркетинг
• Как 6 экранов в приложении увеличили конверсию в два раза
• Navigating Ramadan 2024: Insights and strategies for app marketers
Кроссплатформа
• Работа с виджетами Flutter | 2 часть
• Mastering Responsive UIs in Flutter: The Full Guide
iOS
• Машинное обучение на устройствах с помощью MLX и Swift
• Как работает async/await в Swift
• Making Customizable SwiftUI Components
• SwiftUI Got Isolation Wrong
• Why Ollie is moving away from SwiftUI to UIKit
• How to determine where tasks and async functions run in Swift?
• Twitter vs. X
#ios
Только что, вместе с OnePlus Watch 2 на базе операционной системы Wear OS 4, Google представил новый “гибридный интерфейс” для этой ОС. Насколько я понял, это новая подсистема, которая распределяет задачи между более мощным процессором приложений (AP) и сверхмаломощным сопроцессором микроконтроллеров. AP выполняет сложные задачи, в то время как менее сложные задачи перекладываются на MCU. Google удалось значительно оптимизировать интерфейс между MCU и AP, что позволило обеспечить очень плавное и интеллектуальное переключение. Так, например, точка доступа может быть переведена в спящий режим, в то время как MCU обрабатывает данные датчиков. Самое приятное для разработчиков то, что эти оптимизации доступны без необходимости вносить какие-либо изменения в код. В целом же новый гибридный интерфейс Wear OS обещает большой прирост производительности и времени работы для смарт-часов.
Разработка
• Qualcomm открывает AI Hub
• Проектируем системный дизайн Spotify
• Ozon Tech Community Design Meetup
• Публичное собеседование на позицию Head of QA
• Обязательные знания для тимлида
• Краш-курс по автоматизации тестирования
• Как создать простой LoRa мессенджер: обмен текстовыми сообщениями между устройствами без интернета
• Agile Cult
• Engineering is more about people than tech
Кроссплатформа
• Пути внедрения поддержки скриптов в Dart/Flutter
• Самый простой CI/CD пайплайн для Flutter приложения с Codemagic
• Build a content recommendation app with Flutter and OpenAI
• Flutter’s 2024 roadmap
iOS
• Минцифры узаконит установку сторонних приложений на iOS
• Поваренная книга SwiftUI: создание и доступ к переменным окружения в SwiftUI
• Себестоимость Vision Pro составляет около $1500
• MLX: фреймворк машинного обучения для Apple Silicon
• Введение в разработку под Apple Vision Pro
• Task и structured concurrency в Swift
• How to delay an animation in SwiftUI
• Modding Plugins back into Xcode
• On-device ML research with MLX and Swift
• Designing APIs with typed throws in Swift
• Embedding a privacy manifest into an XCFramework
• Picture in Picture Cheat Sheet
• How to improve iOS build times with modularization
• Discovering iOS memory leaks: A case study with Firefox app
#ios
О чем говорят делегаты
Подборка всех материалов за прошлую неделю - приложение для Apple Vision Pro за 8 дней и анимированные переходы, Android 15 для разработчиков и делегаты в Kotlin, гироскопический параллакс, разработчики мобильных приложений в 1С и многое другое.
Уже почти 10 лет нет Windows Phone, а ностальгия осталась. Один из фанатов сделал ролик, в котором показывает то, какой могла бы быть Windows 12 Mobile. Да, во многом похоже на Android, но есть и свои находки. И в целом, давайте просто помечтаем не о дуополии, а сразу о трех мобильных ОС ☺️
Разработка
• Какой могла бы быть Windows 12 Mobile
• Go вошел в Топ-10 индекса TIOBE
• Magic AI привлек $117 млн на создание ИИ-программиста
• System Design Interview Question: Design Spotify
• Why would anyone do something as absurd as mob programming?!
Маркетинг
• Apple выпустила приложение Apple Sports со статистикой игр
• В 2023 году Roblox выплатил создателям игр $741 млн
• Отчет Mobile App Trends: 2024 Edition от Adjust и AppLovin
Кроссплатформа
• Практическое применение Sliver’ов для создания современного UI
• Getting started with Serverpod mini
iOS
• Vortex: эффекты частиц для SwiftUI
• Using the New Observation Framework to Network Monitoring in SwiftUI
• SwiftUI Got Isolation Wrong
• How to Handle Optional Values in SwiftData Predicates
• somasharma95/landscape-mode-for-specific-views-in-swiftui-20e4fd5e8bcd">Landscape Mode for Specific views in SwiftUI
• iOSHarsh/mastering-test-driven-development-tdd-in-ios-63e0584a10ae">Mastering Test-Driven Development (TDD) in iOS
#ios