Если вы, как и я, думали, что определение положения людей по Wi-Fi сигналам что-то из шпионских боевиков, то вовсе нет. Технология уже используется в мирных продуктах - например, Zoe Care сделала умную розетку, которая анализирует Wi-Fi сигналы и определяет падения людей. Нужно это для заботы о пожилых людях, при обнаружении падения сигналы преобразуются в оповещения в мобильном приложении. Не нужны Apple Watch, не нужны персональные данные, все работает в самой розетке. Просто, эффективно, супер технологично, все как мы любим.
Разработка
• Zoe Care показала умную розетку, обнаруживающую падения людей при помощи Wi-Fi
• Золотой век Kotlin и его неопределенное будущее
• Качество программного обеспечения
• Copilot стал подбирать выразительные имена для переменных
• C# стал языком года в Индексе TIOBE
• Рынок работы для разработчиков ухудшается
• Google реорганизует свое «железное» подразделение
• I'm a different engineer than I was 3 years ago
• Google Pay Home Page Redesigning
• Glaring UX Mistakes on Real Apps
Маркетинг
• Продвижение приложения в VK Рекламе и in-app: как снизить CPI и CPA в 2 раза — кейс «Ситидрайв» и Rocket10
• Push Notifications - What to Push, What Not to Push, and How Often
Кроссплатформа
• Управляем навигацией во Flutter с помощью библиотеки auto_route: часть 2. Guards, Wrappers и миграция
• Об одном способе реализации архитектуры крупного Flutter-приложения
• ismailharmanda/optimizing-react-native-best-practices-for-effective-development-28516c8df413">React Native Masters: Best Practices for React Native Applications
• Visual Studio Code Settings for Flutter Project
iOS
Самое время разбирать новинки WWDC 2023 😜
• Разборы важных новинок для iOS-разработки с WWDC 2023
• Detecting Sensitive Content in your own iOS app
• SwiftUI Observation Framework: State Containers
• Using Identifiable in SwiftUI
• jpmtech/solving-swiftui-performance-issues-with-the-instruments-app-fb4a9737e39e">Solving SwiftUI Performance Issues with the Instruments App
• kodekarim/5-big-creators-every-aspiring-senior-ios-developer-must-follow-2024-84487e6624b1">5 Big Creators Every Aspiring Senior iOS Developer Must Follow 2024
• Scalable Continuous Integration for iOS
• Advanced Swift Actors: Re-entrancy & Interleaving
• How to use Published Properties inside a Protocol in SwiftUI?
#ios
Рынок работы для разработчиков ухудшается
Большую часть нашей жизни программирование считалось одной из самых надежных работ. Однако, кажется, эта эпоха подошла к концу.
В декабрьскому опросе 9 338 программистов почти девять из десяти опрошенных инженеров-программистов заявили, что сейчас найти работу сложнее, чем до пандемии, причем 66% ответили, что «намного сложнее».
Почти 80% респондентов заявили, что за последний год рынок труда даже стал более конкурентным. Только 6% инженеров-программистов «абсолютно уверены» в том, что смогут найти другую работу с такой же компенсацией, если потеряют свое рабочее место сегодня, в то время как 32% заявили, что «совсем не уверены».
Причин тому множество - экономическая ситуация, перепроизводство инженеров, искусственный интеллект.
А вы как думаете - найдете новую работу если что?
Android
• Google улучшает трансляции в Android
• Building Real-Time Location Tracking in Android
• Reshaping the Network Layer: Transitioning from Retrofit to Ktor
• bhoomigadhiya/android-development-in-2023-a-year-of-evolution-ff5c122fad1e">Android Development in 2023: A Year of Evolution
• Kotlin Tricky Output Questions
• Boosting Kotlin Performance: Essential Knowledge in 15 Best Practices
• Synchronous and Asynchronous runs: run, runCatching, runBlocking and runInterruptible in Kotlin
• Safely Navigating the Transition: From Gson to kotlinx.serialization
• Using C/C++ in Android: A Comprehensive Guide For Beginners
#android
Влияние AnyView на производительность SwiftUI
AnyView — это представление без типа (type-erased), которое может пригодиться в контейнерах SwiftUI, состоящих из разнородных представлений. В таких случаях вам не нужно указывать конкретный тип всех представлений, которые могут находиться в иерархии. При таком подходе можно избежать использования дженериков, что упрощает код. Однако его использование может сопровождаться снижением производительности. Как известно, SwiftUI полагается на тип представлений для вычисления разниц (диффинга). Если это AnyView (который, по сути, является оберткой), SwiftUI будет сложно определить идентичность представления и его структуру, и он просто всегда будет перерисовывать всё представление, что не очень эффективно.
В этой статье на примере Stream SDK отслеживаем производительность ленты (заминки анимации и FPS) - без AnyView и с ним.
С мест докладывают, что у Duolingo лучший год - как по установкам, так и по деньгам. Чистая выручка Duolingo (после “налогов” магазинов) в 2023 году составила $339 млн. Это на 57% больше, чем в прошлом году, и на 2,725% больше, чем в 2018. Что касается загрузок, то в 2023 году Duolingo получил 134 миллиона новых установок из App Store и Google Play. Это на 30% больше, чем в 2022 году, и на 179% больше, чем в 2018. Это не такой рост, как у доходов, но очень хорошо для признанного лидера. Так что в целом все, кто жалуется на злобную зеленую сову, могут идти лесом 🛍
Разработка
• Тестируем с широко закрытыми глазами
• Как работает видеостриминг в мобильных приложениях
• Unity сокращает 25% своего персонала
• Обзор Mac Mini (M2, 2023): лучший настольный компьютер за свои деньги
• Jan: открытый офлайн аналог ChatGPT
• OpenAI запускает GPT Store
• Software Quality
• Design better pagination
• UI/UX Design Trends For 2024
• How Uber Finds Nearby Drivers at 1 Million Requests per Second
• The biggest mistake you’re probably making for your FAANG/MAANG Interview prep
Маркетинг
• Язык успеха — Duolingo
Кроссплатформа
• Что нового во Flutter 3.16, ч.1
• Object Detection in React Native
iOS
• SwiftData: новый persistence framework от Apple
• Вышел Xcode с поддержкой Apple Vision Pro
• Вопросы с собеседований: Как устроено наследование в Swift
• ScrollView с прилипающим выделенным элементом на SwiftUI
• How we built a Swift macOS app that uses our Rust library
• AnyView’s impact on SwiftUI performance
• Can Swift Keep Its Compile-Safe Thread Management Promise?
• SwiftData Course
• Changing your iOS App Icon programmatically
• @Observable Macro performance increase over ObservableObject
#ios
Врываемся в новый год с первой рекламой Apple Vision Pro.
Apple откроет предварительные заказы на Vision Pro 19 января, а официально она будет доступна 2 февраля. Для разработчиков уже вышел Xcode 15.2 с полной поддержкой visionOS SDK.
@AppTractor
Итоги моего канала за 2023 год. По всем параметрам выросли 😌 По сайту еще подведу отдельно итоги, но и так спасибо, что читаете и участвуете!
Читать полностью…Последняя подборка в этом году. Всех с наступающим 🎄 Любви и хороших проектов, пусть все получится и приносит радость. Обнял ☺️
Разработка
• ATHYLPS: пет-проект, приносящий радость от экспериментов с технологиями
• Новый умный холодильник Samsung генерирует рецепты с помощью ИИ
• Ведущий дизайнер Apple перешел в компанию Джони Айва для работы над ИИ-устройством с Сэмом Альтманом
• Когда закончится эра безграмотных мобильных интерфейсов? Воспоминания о курсе эргономики 1985 года
• Stop saying “technical debt”
• Unwrapping the Delightful UX of the Chipotle App: A Case Study
• The IDEs we had 30 years ago... and we lost
• Developers experience burnout, but 70% of them code on weekends
Маркетинг
• Это база: как создать эффективный рекламный баннер в приложении
Кроссплатформа
• Я сделал Cardoteka и вот как её использовать [кто любит черпать]
• sebizaur/flutter-fails-how-to-avoid-the-top-5-mistakes-in-2023-b4c034eb8db9">Flutter Fails: How to Avoid the Top 5 Mistakes in 2023
iOS
• CodeEdit: редактор кода для macOS
• Как и зачем мы внедрили Snapshot Testing
• Comparing Swift Compiler Performance on Type Inference
• Rust API Bindings: Core Foundation Signed/Unsigned Conversion
• fsamuelsmartins/how-to-use-the-swiftuis-navigationstack-79f32ada7c69">How to use the SwiftUI’s NavigationStack
• shchukin-alex/lock-free-in-swift-memory-model-and-petersons-algorithm-f070581c2d75">Lock-Free in Swift: Memory model and Peterson’s algorithm
#ios
Мое новое легендарное интервью с Сергеем Опиваловым, Senior Software инженером в Gradle
Обсуждаем его пет-проект — приложение ATHYLPS, тренажер для математических навыков в покере.
⁃ Первое ядро, которое делает эвалюацию покерных рук и может генерировать рандомные раздачи для тренировки, было на Go.
⁃ Это ядро использовалось на Android и на iOS (Flutter).
⁃ В этом году получилось переписать ядро на Kotlin и было принято решение переезжать с Flutter на Kotlin Multiplatform.
⁃ Реализация ядра на Kotlin позволила наконец-то написать хорошие тесты для него, в том числе перформанс тесты на JMH.
Подробнее про разработку: https://apptractor.ru/info/interview/athylps.html
Android
• Bluetooth LE Spam: спам через BLE
• husayn.fakher/exploring-kotlin-deferred-10-questions-answered-e1ea98f644db">Exploring Kotlin Deferred: 10 Questions Answered
• AppBarLayout in Compose
• A Complete Guide to Android Foldable Devices: Unfolding the Future
• Compose Navigation — A great choice for large Android apps
• pnbharat/performance-optimization-in-jetpack-compose-e689660d4aac">Performance Optimization in Jetpack Compose
#android
Agile “по бразильской системе” - eXtreme Go Horse
Прекрасный юморной манифест для тех, кто устал от бесконечных скачек.
XGH не цепляется за сиюминутные течения, они для слабаков. XGH всегда использовался и будет использоваться теми, кто пренебрегает качеством. В XGH вы не думаете, вы делаете первое, что приходит в голову. Нет второго варианта, единственный вариант — самый быстрый.
Android
• Increase your app’s availability across device types
• Tiled Image Backgrounds in Jetpack Compose
• Simplifying Navigation in Multi-Module Android Apps with Compose Destinations
• Say Goodbye to Script Duplication: Gradle Convention Plugin for Android Code Reuse
• Yo Ho Ho and a Heap of Memory Leak Woes: LeakCanary to the Rescue!
• Offline mode in the Licious Rider App
• sujathamudadla1213/android-kotlin-coroutines-interview-questions-6118b7725f54">Android Kotlin Coroutines interview questions
#android
Android
• Compose Stacked Snackbar: мультиплатформенный Snackbar
• Android, Bluetooth and BLE the modern way: a complete guide
• Android DevOps CI/CD Pipeline Architecture
• sporentusjourney/my-top-10-clean-code-tips-for-kotlin-development-in-2024-e9639cd971cf">My Top 10 Clean Code Tips for Kotlin Mobile in 2024
• SPI in Android
• Supercharging Android Build Processes to Boost Developer Efficiency
#android
Золотой век Kotlin и его неопределенное будущее
В то время когда одни говорят, что рост Kotlin никогда не остановится, другие более трезво смотрят на вещи и отмечают, что отчасти Kotlin уже стал стагнировать. Ловро Панджич из Infobip рассматривает предысторию языка, его сильные и слабые стороны и что надо сделать, чтобы Kotlin все таки победил:
Переломным моментом станет 2025 год. Почему именно он? В этот момент мы увидим, что на Java появляется все больше возможностей (например, проекты Valhalla и Panama), а альтернативы Kotlin не будет. Если к тому времени Kotlin не сделает значительный шаг вперед, его популярность упадет и достигнет критической точки. В сообществах разработчиков на YouTube, Hacker News или Reddit уже можно наблюдать движения в этом направлении, но пока оно не критическое.
Статья: https://apptractor.ru/info/articles/age-of-kotlin.html
У Data.ai вышел годовой отчет State of Mobile 2024 - много данных по рынку, категориям, странам. Всего пользователи потратили в магазинах 171 миллиард долларов, это рост на 4%. На приложения из них ушло 64 миллиарда. Больше всего выросли категории Развлечения, Социальные Медиа и Утилиты/Продуктивность. Топ категорий по тратам - OTT, Dating, Короткие видео, Видео-шаринг, Комиксы. В общем - более 100 страниц и желательно к изучению.
Разработка
• Quora получила $75 млн на развитие ИИ-платформы Poe
• Принципы функционального программирования — Обучающий курс Университета Карнеги-Меллона
• How to use stacked PRs to unblock your entire team
• Product Management is broken, a change is coming
Маркетинг
• State of Mobile 2024 — годовой отчет Data.ai
• PhotoRoom, ИИ-приложение для обработки фотографий, привлекает еще $60 млн
Кроссплатформа
• Implementing Clean Code Principles in Flutter Programming
• Flutter 3.18 | Top 8 Feature
iOS
• SwiftEasyPop: алерты и тосты в SwiftUI
• Влияние AnyView на производительность SwiftUI
• Swift Note: How to write code faster by using Xcode Snippet
• Using @Binding with @Environment(Object.self)
• 2018.itsuki/horizontal-scrollable-buttons-tabs-with-indicators-7aafafbbaae2">Horizontal scrollable buttons (tabs) with Indicators
• redhotbits/testable-swiftui-views-dd268d15a10e">Testable SwiftUI views using async/await
• A Girl and her @ViewBuilder
• Perception: A back-port of @Observable
• StoreKit testing in Swift
#ios
Наконец-то Google перешел от завоевания рынка к созданию действительно удобной для пользователей среды. На CES компания объявила сразу о целом ряде нововведений в Android, которые помогут устройствам лучше работать друг с другом (и с людьми).
Это:
• Output Switcher 2.0 на Android U упростит обмен потоками между устройствами и управление всем из одного места.
• Передача данных на устройства поблизости - пользователи смогут передавать текущую музыку с телефона Pixel Pro на подключенный планшет Pixel Tablet, просто поднеся телефон ближе к подключенному планшету. Эта функция требует интеграции Output Switcher в качестве предварительного условия.
• Google Cast для коротких форм - Google Cast будет лучше работать с TikTok.
• Google и Samsung объединяют Nearby Share и Quick Share в единое решение, которое будет работать на всех типах устройств в экосистемах Android и Chromebook. Google также объявила о сотрудничестве с производителями ПК, такими как LG, чтобы распространить Quick Share на ПК под управлением Windows в качестве предустановленного приложения.
• Fast Pair для сопряжения устройств появится и в Chromecast с Google TV.
Подробнее тут, а как с этим работать тут.
Android
• Compose Drag And Drop: перетаскивание в Compose-проектах
• Добавь немного сахара в Espresso или как писать UI тесты под Android
• Сколько памяти нужно для сборки: Android-разработчикам о JVM
• Android Auto: как Organic Maps переносили в машину
• AnimatedBottomBarCompose: анимированный TabBar для Jetpack Compose
• Как я попробовал написать авиасимулятор
• Пример исследовательского реверс-инжиниринга приложения Zone Launcher
• Exploring use of Gemini Generative AI APIs in a Kotlin/Compose Multiplatform project
• Removing Ambiguity in Kotlin Function by Reference
• Free hand draw polygon in Google Maps Compose
#android
• Mastering Android Dynamic Feature Module Delivery
• Mastering Lazy Lists in Jetpack Compose with Data Classes and MVI
OpenAI запускает GPT Store
OpenAI планирует запустить магазин пользовательских приложений, основанных на ее ИИ-моделях (например, GPT-4), на этой неделе.
1. Магазин GPT был анонсирован в прошлом году во время первой ежегодной конференции для разработчиков, но его запуск позже был отложен — из-за перестановок в руководстве, которые произошли в ноябре.
2. Сторонние GPT (их называют во множественном числе - GPTs) не требуют опыта программирования и могут быть как простыми, так и сложными по желанию разработчика. Например, GPT можно обучить работе с коллекцией кулинарных книг, чтобы он мог отвечать на вопросы об ингредиентах для конкретного рецепта. Или GPT может получить собственные кодовые базы компании, чтобы разработчики могли проверить их стиль или сгенерировать код в соответствии с лучшими практиками.
3. Разработчики могут просто набрать на простом языке те возможности, которые они хотят предложить в своем GPT, и инструмент OpenAI для создания GPT, GPT Builder, попытается создать чатбота на базе ИИ для их выполнения.
4. Пока неясно, будет ли магазин GPT Store работать по какой-либо схеме разделения доходов и будут ли там продажи вообще. об этом обещают рассказать на этой неделе.
И что: первые, как обычно, получают больше. А в целом интересно, как OpenAI переходит от чат-бота к платформе.
Весь год я находил для вас самые интересные новости и статьи о разработке мобильных приложений и их маркетинге, технологиях и мобильном рынке.
Это самые популярные статьи AppTractor.ru за год:
1. Что нужно и чего не нужно делать во время Code Review
2. Что такое Внедрение зависимостей и как это использовать в разработке
3. ARPU и ARPPU: одна буква и принципиальные отличия
4. Как настроить Charles
5. 6 алгоритмов, которые должен знать каждый разработчик
6. Ангелы Charles: как сниффер поможет разработчикам мобильных приложений
7. Мобильные модальные окна: 8 лучших примеров использования
8. Концепции Jetpack Compose, которые должен знать каждый разработчик
9. Принципы SOLID в Swift
10. Что такое событийная (Event Driven) архитектура
11. Как правильно хранить пароли в базе данных
12. compileSdkVersion и targetSdkVersion: в чем разница?
13. По ложному пути: катастрофа последнего обновления Duolingo
14. Архитектура VIPER простыми словами
15. Большая языковая модель на вашем компьютере — момент Stable Diffusion продолжается
Еще раз с Новым Годом и Рождествами 🎄 Хороших приложений!
Видео и подкасты за неделю:
• (iOS Ru)
SwiftData: новый persistence framework от Apple
• (iOS En)
Simple, Clean Empty States in SwiftUI - ContentUnavailableView
• (iOS En)
SwiftUI Parallax Scroll Effect
• (iOS En)
SwiftUI Pie & Donut Charts
• (iOS En)
SwiftData Storing Images and Bug Fixes
• (iOS En)
SwiftUI App Theme Switcher - Dark Mode Switch
• (And Ru)
Android Auto: как Organic Maps переносили в машину
• (And Ru)
Сколько памяти нужно для сборки: Android-разработчикам о JVM
• (And Ru)
Добавь немного сахара в Espresso или как писать UI тесты под Android
• (And En)
I've Built an Android App With Google's New AI Gemini
• (And En)
Top 3 Hacks to Remove LazyColumn Lag in Jetpack Compose
• (Crs En)
Best Practices for Developing Amazing Kotlin Multiplatform Apps with Pamela Hill
• (Dev Ru)
Как работает видеостриминг в мобильных приложениях
• (Dev Ru)
Sber ML Meetup: AutoML, трейдинг и мультимодальность
• (Dev Ru)
Как мы ВКонтакте ускоряем получение результатов тестов
• (Dev Ru)
Тестируем с широко закрытыми глазами
• (Dev En)
Microsoft Azure Fundamentals Certification Course
В комментариях поделитесь интересным видео, который вы посмотрели!
Android
• Простой вопрос по Android Core, на который даже сеньоры отвечают неправильно
• Зачем и как в Альфе была написана библиотека для скриншот тестов под Android
• Mastering Android Dynamic Feature Module Delivery
• hossein_kheirollahpour/implementing-authentication-with-jwt-in-android-without-using-a-library-5b01ea53a9e9">Implementing Authentication with JWT in Android (without using a library)
• android-world/optimizing-jetpack-compose-with-stable-smart-recomposition-strategies-81147b779a0a">Optimizing Jetpack Compose with @Stable: Smart Recomposition Strategies
#android
Наши коллеги из Rocket10 и Bidease подвели итоги уходящего года. Героями предновогодних выпусков «Маркетологи в мобайле» стали ведущие специалисты из компаний inDrive, Sunlight, Fonbet, «Национальная Лотерея» и др.
Ребята рассказали о трендах в performance-маркетинге, поделились интересными бизнес-решениями и посоветовали, на какие источники трафика стоит обратить внимание в 2024 году.
Ссылки на выпуски:
• Часть 1
• Часть 2
Microsoft давеча окончательно переименовала Bing Chat в Copilot и выпустила выпустила Android-приложение для него. Приложение Copilot очень похоже на ChatGPT, с доступом к функциям чатбота, генерации изображений с помощью DALL-E 3, собственно там вроде как даже есть бесплатный доступ к новейшей модели GPT-4 от OpenAI. Из России традиционно недоступно, но с VPN все работает. Так что теперь у нас аж 3 более или менее действующие платформы - ChatGPT, Bard и Copilot.
Разработка
• Microsoft выпустила приложение Copilot для Android
• Как проектировать системы уведомлений в приложениях: дизайн, этапы и нюансы архитектуры
• Спринты — самая большая ошибка в программной инженерии, примите eXtreme Go Horse
• A programming language coding in a grid
• 10 Things Software Developers Should Learn about Learning
Маркетинг
• Маркетологи в мобайле. Итоги года 2023. Часть 2
• AppStore не пропускал нашу регистрацию из-за санкций, но мы всё же выпустили приложение для тех, кто следит за здоровьем
• Japan to crack down on Apple and Google app store monopolies
Кроссплатформа
• ximya/save-your-time-by-handling-flutter-imports-boosting-productivity-with-single-import-82d16dbca0f5">Save Your Time by Handling Flutter Imports: Boosting Productivity with Single Import
• Dart: Object-Oriented Programming (OOP) - Full Course
• lidhin/simplifying-flutter-with-extensions-a33d43d31998">Simplifying Flutter with Extensions
iOS
• Прививка от созависимости. Зачем нужен DI и как он работает в iOS-приложениях hh.ru
• Conway's Game of life with SwiftUI
• jpmtech/getting-started-with-instruments-a35485574601">Getting Started with Instruments
• Jager-yoo/optimizing-ios-widget-network-calls-with-temporary-caching-e32c01570a5c">Optimizing iOS Widget network calls with temporary caching
• adityagi02/creating-a-signature-view-in-swiftui-a-step-by-step-guide-575bb08d20af">Creating a Signature View in SwiftUI: A Step-by-Step Guide
#ios
Новостей особых в выходную неделю нет, поэтому вот вам новое исследование Developer Nation. Пройдите опрос, внесите свой вклад в будущее сообщества и получите ценные призы - вплоть до MacBook Pro 13" M2.
Разработка
• The 10 best UX interactions of 2023
• noriller/sprints-the-biggest-mistake-of-software-engineering-34115e7de008">“Sprints”: The biggest mistake of Software Engineering
Маркетинг
• У трекеров сна лучший год
• Нужен ли был кому-нибудь Beeper Mini?
Кроссплатформа
• NativeScript в мире кроссплатформенной разработки
• Use ONNX Runtime in Flutter
iOS
В первой статье - интересные фишки и оптимизации SwiftUI.
• Мастерство работы в SwiftUI
• On-Demand Resources in iOS
• How to Optimize Your Xcode Project for Fast Test Feedback
• Discovering iOS memory leaks: A case study with Firefox app
• Breaking Language Barriers: How We Added Right To Left Compatibility to the Trendyol iOS App
• RIB Architecture in iOS Swift
#ios