Android
• Вышел Android 14 Beta 4
• Ручной DI на Котлине? Легко! Ну, почти…
• Храним краску с умом: как организовать ресурсы в многомодульном проекте
• Unlocking the Art: A Guide to Generating Code with Kotlin Symbol Processor
• daniel.atitienei/implementing-in-app-subscriptions-and-products-using-jetpack-compose-e867141bec7b">Implementing in-app subscriptions and products using Jetpack Compose
• WhatsApp Home Screen Design in Jetpack Compose
• Cracking the Kotlin Interview
• Android Custom Tab Material Layout With Dynamic Padding
• Mastering Kotlin: The Ultimate Guide to Becoming a Productivity Ninja
• How we improved our Android apps performance by up to 24%
• Android unit testing at Zenjob
#android
🔥 Пройдите тест на знание основ программирования и получите эксклюзивную подборку вебинаров по Flutter!
Востребованность Flutter-разработчиков растет с каждым годом. Освойте и вы эту трендовую технологию кроссплатформенной разработки!
Что вы найдете в подборке, если успешно пройдете тест:
🔵Урок «Аркадные игры на Flutter 3»
Изучите возможности Flutter для создания кроссплатформенных игр и создадите свою аркадную игру.
🔵Урок «Создание невероятных визуальных эффектов на Flutter»
Откроете перед собой мир визуальных возможностей Flutter и научитесь создавать потрясающие интерфейсы с использованием системных сервисов и оборудования.
🔵Урок «Создаем свою систему координат для RenderObject»
Освоите новый движок Impeller и научитесь размещать виджеты в трехмерном пространстве, создавая свою уникальную систему координат для RenderObject.
Записи этих уроков являются частью онлайн-курса «Flutter Mobile Developer» от OTUS.
Не упустите свой шанс стать настоящим экспертом Flutter!
👉 Пройти тест: https://otus.pw/FRLJ/
Нативная интеграция. Информация о продукте www.otus.ru
Рекомендую занятную статью от разработчика из Square, который в общем-то здраво декларирует, что метрики производительности нужны не все, а те, которые делю пользователей счастливее. Например, если у вас будет полностью загружен процессор, но насущная задача пользователя выполнится быстрее, то это вполне ОК. Останавливается он при этом почему-то только на скорости загрузки и отзывчивости (и раскрывает измерение метрик применительно к Android), но надо думать, что будет продолжение. В общем рекомендую и спрашиваю - а как и зачем вы меряете производительность приложений? 🧑💻
Разработка
• Производительность мобильных приложений, ориентированная на пользователей
• Анализ приложений Threads
• Code Interpreter стал доступен всем подписчикам ChatGPT — «теперь каждый может стать аналитиком данных»
• Локализация игр при помощи ChatGPT — недорого и качественно. Гайд
• Modularization of mobile applications at scale
• Invisible Details of Interaction Design
• The 8 Must-Have Productivity Apps for Programmers in 2023
• Confirmed: Code Coverage Is a Useless Management Metric
Маркетинг
• Кейс «Хлебная Усадьба»: разработка собственного мобильного приложения для сетевой пекарни
Кроссплатформа
• vbalaji165/flutter-for-web-development-building-responsive-and-feature-rich-web-apps-4aa5402d4c82">Flutter for Web Development: Building Responsive and Feature-Rich Web Apps
iOS
• Build A To Do List App using SwiftData
• jacobmartinbartlett/dependency-injection-for-async-tests-17d796cbd315">Dependency Injection Demystified
• @backDeployed to extend function availability to older OS releases
• Creating a Circle Loader Animation in SwiftUI
• mrdeerwhale/getting-started-with-node-based-shaders-for-visionos-materials-7f901177567c">How to Use Material Nodes in Reality Composer Pro’s Shader Graph
#ios
Android
• Я.Субботник по Java-разработке
• А это можно запустить в фоне?
• Lobzik: полуавтоматическая модуляризация Android-проекта
• Мой офис. Как открываются документы на смартфоне
• Okio: I/O библиотека для Android, Java и Kotlin Multiplatform
• Modern MVI и MVVM+ со всех сторон в 2023
• Как я перестал волноваться и полюбил ошибки в Kotlin корутинах: Мифы обработки ошибок в корутинах
• User-Centric Mobile Performance
• Blast Off: Managing Hundreds of UI Updates for an Emoji Cannon
• A Guide to Filament for Android
• Eliminating coroutine races
• No Mocks Allowed
#android
Решаем шахматные задачи с Chess Puzzles Set: разбор приложения
Разбираем приложение @oleg_soloviev - набор шахматных задач.
TLDR: все плохо. Вроде как отдельные части есть, а все вместе не работает. Ощущается как до конца недоведенный пет-проект.
Статья: https://apptractor.ru/info/articles/chess-puzzles-set.html
Если хотите принять участие - пишите в комменты.
SOLID архитектура для мостов и багов
Новый еженедельный дайджест - снова 117 материалов! Обязательно прочитайте, поставьте 👍 или 🖤, поделитесь или поддержите. И присоединяйтесь к IT Insights, где новости и статьи про код, технологии и все самое интересное за пределом мобайла. Вот, например, у меня там была интересная статья "Создание основ машинного обучения в реальном времени в Lyft" - о том, как компания обучает модели в реальном времени на потоковых данных.
Mobius в поиске спикеров!
Конференция по мобильной разработке Mobius 2023 Autumn будет идти четыре дня: 1–2 ноября в онлайне и 9–10 ноября в офлайне.
Расскажите о платформах, языках, архитектуре, качестве продукта или инфраструктуре. Полный список тем — на сайте. И не стесняйтесь предлагать свои.
Вы можете выступить онлайн или офлайн и выбрать любой формат выступления — доклад, воркшоп, интервью, обсуждение, BoF-сессию или придумать что-то свое.
На этапе подачи заявки подойдут даже примерные тезисы, необязательно иметь уже готовый доклад. После отправки заявки Программный комитет поможет доформулировать идею и превратить ее в доклад. А персональный куратор пройдет с вами весь путь — от идеи до продакшена: сделает ревью, поможет с доработкой, проведет репетиции и даст рекомендации по выступлению.
Подавайте заявки до 25 июля.
Android
• Разбор тестового задания на позицию Android Developer
• A flexible, modern Android app architecture: complete step-by-step
• Native UI and multiplatform Compose with Redwood
• How to build a Clean SSEClient Flow
• afolayanseyi/implementing-single-source-of-truth-in-android-9b2cc9510704">Implementing Single Source of Truth in Android
• pravishanth/migrating-from-android-api-level-30-to-31-32-or-app-crashing-after-updating-target-sdk-version-to-586e4892dfb9">Migrating from Android API level 30 to 31/32 or App Crashing After Updating Target SDK
#android
И снова хочу поделиться авторским каналом об iOS-разработке.
В нём автор рассказывает про свой опыт, поэтому будет много кода, сложных моментов и забавных историй (иногда не очень):
🔘 Как я выиграл в конкурсе Telegram и как проиграл.
🔘 Многопоточность в Swift.
⭐️ Подготовка к собеседованиям.
Заходите, если хотите узнать ответ на вопрос.
Android
• Amethyst: клиент Nostr для Android
• fadhifatah_/textinputlayout-censoring-with-password-like-method-303b986f5364">TextInputLayout Censoring with Password-like Method
• Experimenting with Android Studio Bot
• smish_/unlocking-the-power-of-jetpack-compose-fragments-stateflow-and-viewmodels-a-comprehensive-guide-f0b76f9a02ee">Unlocking the power of Jetpack Compose, Fragments, Stateflow, and ViewModels: A Comprehensive Guide
#android
Зарплаты мобильных разработчиков
В период с 1 марта по 31 мая 2023 на Хабр Карьере можно было откликнуться на 6 870 вакансий.
1. Чаще всего на Хабр Карьере ищут мидлов — этой весной доля вакансий для них составляла 53,3%.
2. Среди разработчиков самыми популярными оказались бэкендеры — для них разместили 21,6% вакансий, на втором месте фронтендеры — 6,1% вакансий. Третье место досталось разработчикам мобильных приложений — 3,9% вакансий.
3. Самые популярные разработчики мобильных приложений — мидлы и сеньоры, доли вакансий для них одинаковые — по 45,2%. Реже ищут лидов — доля 7,1%. Джунов практически не ищут - всего 2,5%.
4. Самые популярные языки в мобайле: Kotlin, Swift и Java.
5. Мидлы в разработке мобильных приложений больше всего получают в Java — 238 000 ₽. Зарплаты сеньоров в выборке начинаются от 295 000 ₽ в Java и заканчиваются на 347 000 ₽ в Swift. Лиды в мобайле больше всего зарабатывают в Swift — 430 000 ₽.
Android
• darush/build-a-simple-sort-and-filter-screen-in-your-android-app-318f0d86e228">Build a Simple Sort and Filter Screen in Your Android App
• Efficient Ways of Using Location Services in Kotlin Android Apps
• prashantdixit_87612/creating-and-publishing-your-own-android-library-in-kotlin-2023-part-1-3e542dad4ca0">Creating and publishing your own Android library in Kotlin
• The beauty of Kotlin type system
#android
По слухам, Apple сократила заказ на Vision Pro - с 1 миллиона до 400 тысяч за год. Как пишут, дело в том, что китайский производитель не может выпустить достаточное количество. Впрочем, вопрос в том, что считать успехом для Vision Pro, остается. Даже 400К инновационных устройств стоимость в $3,500, наверное, можно будет считать отличным результатом. Но, мне кажется, даже этот порог не будет достигнут. Я бы говорил о десятках тысяч. К тому же сокращать объемы предполагаемых продаж стали еще до выхода, так что вполне может быть, что это такой хитрый ход - это не мы не смогли продать, это они не смогли сделать.
Разработка
• По слухам, Apple сократила заказ Vision Pro
• $2 млн: RoboDeck — робот для обслуживания веранд и палуб
• Приложение Threads появилось в App Store
• Fight Unplanned Work, the Silent Killer of Projects
• tsecretdeveloper/we-just-hired-a-messy-coder-here-are-my-fears-c83911407728">We Just Hired a “Messy Coder”. Here Are My Fears
Маркетинг
• How Duolingo pushes users from freemium to premium
Кроссплатформа
• Строим мосты: подключение зависимостей с Cocoapods в Kotlin Multiplatform Mobile
• Метод setState() во Flutter может работать не так, как вы это представляете
• Introducing LangChain.dart
• Implementing CI/CD for Jetbrains Compose Multiplatform Android and iOS Apps using GitHub Actions
iOS
• Следующие AirPods смогут проверять слух и температуру
• Жизненный цикл объектов SwiftUI
• Mapbox Maps SDK iOS: интерактивные настраиваемые карты
• SwiftUI: Trailing label TextField
• Embracing CloudKit
• SwiftUI Data Flow 2023
• Create an Interactive Widget Using App Intents
• Async Animations in SwiftUI
• batrakov.vitaly/di-in-swiftui-9f929b50ab5c">DI in SwiftUI
• Animate SF Symbols with symbolEffect
#ios
iOS
• Используем атрибут @backDeployed для расширения доступности функций
• Queryable: ML-поиск фотографий на iOS
• A few Xcode debugging tips
• Unidirectional flow in Swift
• Floating Action Button in SwiftUI
• Mastering SSL Pinning in Swift: No Third-Party Libraries Required
• Protocol Oriented Programming: Prioritizing Flexibility and Reusability
• Learn how to unleash the Power of Automatic Grammar Agreement in Swift
• Find unused code in Swift
• Implementing Dark Mode and using CGColor
#ios
НЕ перерабатывает 42% программистов
Это результаты нового опроса SuperJob.
1. 18% программистов ответили, что перерабатывают менее 10% рабочего времени, 25% программистов перерабатывают 11-25% от рабочего времени, 5% сотрудников – 16-25%, 8% − более 50%.
2. При этом 42% программистов сказали, что не перерабатывают.
3. В среднем переработки от нормы рабочего времени в месяц (средний % от числа имеющих переработки) составляют 22%.
4. В прошлом году не перерабатывающих было 43%. В 2021 году – 19%.
И что: как писал Егор, переработки это совсем не “абсолютное зло”. Переработки это замечательно, пока вы от них получаете явную пользу. Не пытайтесь обменивать свое время на деньги. Меняйте его на фан, профессиональный рост и самореализацию. Прямая конвертация труда в деньги обычно происходит по не самому выгодному курсу. Гораздо эффективнее вкладывать эти часы в обучение тому чего вы раньше делать не умели, и в будущем продавать уже эти умения по сильно большему ценнику.
Android
• InnerTune: плеер музыки для YouTube в Material 3
• Делаем эмулятор Android через Terminal: пошаговое руководство
• Как я перестал волноваться и полюбил ошибки в Kotlin корутинах
• Learn rememberCoroutineScope - Mastering Side Effects
• Getting Started With SQLDelight in Android Development
• myofficework000/boost-your-android-developer-workflow-with-chat-gpt-855879b7ed46">Boost your Android Developer Workflow with Chat-GPT!
• Demystifying Kotlin’s Channel Flows
• husayn.fakher/10-questions-and-answers-about-viewmodels-in-android-dd18be43382b">10 Questions and Answers about ViewModels in Android
#android
У генеративного ИИ уже был момент Unstable Diffusion, а теперь подключилась и коммерческая жилка - компания Lovense, наиболее известная своими секс-игрушками с дистанционным управлением, на прошлой неделе представила Advanced Lovense ChatGPT Pleasure Companion. Пользователь задает условия для генерации “романтической” истории, ChatGPT сочиняет ее, а игрушки Lovense… “озвучивают”, мягко говоря. Возможно, это не совсем то, что имели в виду маркетологи 1990-х годов, когда придумали слово «мультимедиа», но в целом неплохой подход 😀
Разработка
• ChatGPT использовали для рассказов эротических историй
• Evernote увольняет всех американских сотрудников и переезжает в Европу
• Podlodka #324: 3D-графика. Почему игры тормозят?
• OpenAI объявляет о всеобщей доступности API GPT-4
• Как дизайнер запустил продукт и не нашел product market fit
• Super app evolution: Building a platform-based ecosystem for holistic user experience
• tsecretdeveloper/this-happens-youre-too-old-to-be-a-programmer-72f5e50a23d3">This Happens? You’re Too Old To Be a Programmer
• Developers Need To Enjoy The Struggle
Маркетинг
• Решаем шахматные задачи с Chess Puzzles Set: разбор приложения
• Верификация пользователей принесла Instagram более $15 млн
• Самые скачиваемые приложения в июне 2023
Кроссплатформа
• Использование Provider, Riverpod, Bloc(Cubit), Redux, MobX на одном простом примере
• A New React Native Development Approach – Part 2: The “How?”
• Jetpack Compose Multiplatform Android & iOS
iOS
• ScrollViewLoader: бесконечный список для SwiftUI
• Использование XCFramework в крупном iOS-проекте, или Как ускорить сборку в 2 раза
• SwiftUI для большого B2C-продукта
• Async / Await в Swift
• SwiftData Suprises
• Advanced Animation in SwiftUI under iOS17
• How to use String Catalogs for pluralization in Swift
• RadialGradient in SwiftUI
• iOS: UI Testing Strategy and Tooling at Reddit
#ios
Верификация пользователей принесла Instagram более $15 млн
В начале этого года, когда все умилялись синей галочкой Twitter за 8 долларов, Instagram (запрещен) решил, что эту функцию стоит скопировать.
1. До запуска программы верификации приложение Instagram в App Store приносило Meta (запрещено) около $1.5 млн чистого дохода в месяц.
2. Верификация пользователей, которая являются почти точной копией Twitter, была запущена в США в апреле и стоила $14.99/мес.
3. Instagram закончил март с $4.4 млн. чистого дохода. Можно предположить, что верификация обеспечила около $2.5 млн из этой суммы.
4. Общая сумма выросла до $6.4 млн в апреле и $7 млн в мае. В июне доход немного снизился, на 4% до $6.8 млн. Без учета бейджей и подписок, по оценкам аналитиков, верификации принесли Instagram $16.8 млн чистого дохода в App Store с момента запуска в апреле. Общий доход приложения за эти 4 месяца составил $24.6 млн.
И что: оказывается, не все, что делаем, Маск, лютая пурга 🙂 И если правильно подойти к его идеям, то можно неплохо заработать. Да, в данном случае речь идет о масштабах Instagram, но переосмыслив наверняка можно применить и к вашим продуктам.
Видео и подкасты за неделю
• (iOS Ru)
Использование XCFramework в крупном iOS-проекте, или Как ускорить сборку в 2 раза
• (iOS Ru)
SwiftUI для большого B2C-продукта
• (iOS En)
iOS 17 VisualEffect & ScrollTransition APIs - Circular Carousel Slider
• (iOS En)
iOS Dev Job Interview - Must Know Topics
• (iOS En)
Swift Variadic Parameters
• (iOS En)
Swift Observation from Scratch
• (And Ru)
А это можно запустить в фоне?
• (And Ru)
Мой офис. Как открываются документы на смартфоне
• (And Ru)
Modern MVI и MVVM+ со всех сторон в 2023
• (And Ru)
Lobzik: полуавтоматическая модуляризация Android-проекта
• (And Ru)
Я.Субботник по Java-разработке
• (And En)
Foreground Services - Android Basics 2023
• (And En)
Broadcasts & Broadcast Receivers - Android Basics 2023
• (And En)
What's new in Kotlin 1.9.0
• (Crs En)
How to build a collision-based game using Flutter and Flame
• (Dev Ru)
Podlodka #324: 3D-графика. Почему игры тормозят?
• (Dev En)
Introducing Kotlin Notebook
Посмотрели какое-то другое интересное видео? Отправьте боту -> 🧑🏻💻
Спасибо за вчерашние проекты, буду разбирать. Сегодня вышла вторая часть, практическая, про архитектуру Android, ну я попутно перевел первую - про основные принципы (космонавтом!). Новое вряд ли для себя откроете, но повторить никогда не мешает. А еще у Instagram* запустился конкурент Twitter - Threads, который сразу поставил рекорд по росту аудитории. Вы уже там? Нужен там канал, или это как Clubhouse?
Разработка
• Как создавать архитектуру Android-приложений: глубокое погружение в принципы
• Какую работу, компанию или продукт выбирают продакты
• Скажи что-нибудь на разрабском, Figma
• A Case: How To Design A Medical App
• 5 Mac accessories for developers
• Accelerating Success: Decoding the Weekly Sprint Velocity of the International Mobile Team
Маркетинг
• Threads запустился в App Store и Google Play
• Spotify окончательно отказался от покупок через App Store
Кроссплатформа
• 4 Flutter Open Source Projects From Which You Can Learn A Lot! (2023)
• Error Handling In My Flutter App
• rorystephenson/how-to-cluster-markers-with-fluttermap-d462459b7143">How to Cluster Markers with FlutterMap
• How to build a collision-based game using Flutter and Flame
• From Hacking to Shipping: Kotlin Multiplatform Mobile at Hootsuite
iOS
• Billboard: красивая и безопасная реклама
• Data-Oriented-Design — A Swift Introduction
• Mastering Swift Foundation Formatter API. Custom Format Styles
• SwiftUI apps at scale
• Swift Observation from Scratch
• Difference Between Implicit and Explicit Animations in SwiftUI
• The Ultimate Guide to Building SwiftData Applications
#ios
На примере очередной статьи про Duolingo думаю пообозревать приложения. Что нравится, что не нравится, что можно улучшить и т.п. Страница в сторе, онбординг, UX и т.д. Будет такое интересно? Накидайте в комменты ваших проектов 😊
Разработка
• Зарплаты мобильных разработчиков по данным Хабр Карьера
• Бесплатный курс по Natural Language Processing (NLP) от The Hugging Face
• Stay Technical While Leading Your Team
• The hardest part of building software is not coding, it’s requirements
Маркетинг
• Как Duolingo подталкивает пользователей к premium — 5 уроков крупнейшего образовательного приложения
Кроссплатформа
• Optimising Page Load Times in Flipkart Mobile App
• The Complete Guide to Deploy Flutter Builds Using App Center
iOS
• .xcstrings в Xcode 15
• App Intents Spotlight integration using Shortcuts
• CollectionOfOne in Swift
• dhairyavora_35186/demystifying-opaque-types-in-swift-2ac25290c331">Demystifying Opaque Types in Swift
• A Deep Dive Into Observation: A New Way to Boost SwiftUI Performance
#ios
Яндекс проводит вечеринку для сообщества мобильных разработчиков — Yandex Summer Mobile Party!
12 июля приглашаем мобильных разработчиков на вечеринку — обсудим последние новости индустрии и хорошо проведём вечер с едой, коктейлями и музыкой. Приходите общаться с ребятами из Яндекса и знакомиться с сообществом.
Что вас ждёт:
— Lightning Talks про разработку и жизнь от мобильных разработчиков;
— Лекция от популяризатора физики Дмитрия Побединского;
— Настольные игры от Яндекса, зоны отдыха и летние коктейли.
Место проведения:
Плюс Дача в Парке Горького
В этот раз формат только оффлайн. Количество мест ограничено – ждём ваши заявки, и 10 июля вышлем приглашения на почту.
До встречи!
Программа и регистрация
iOS
• Создание интерактивного виджета с помощью App Intents
• iOS Learning Materials: обучающие материалы по iOS-разработке
• Cleaner Views: Clean Code in SwiftUI
• 10 More Deadly SwiftUI Mistakes and How to Avoid Them
• Slow architecture in Swift
• iOS 17 @Observable and the Observation Framework
#ios
Android
• Paraphrase: типобезопасные форматеры для строк
• Android: смотрите на больших экранах
• Готовим конфигурацию Android-приложения с помощью Dynamic Proxy и рефлексии
• Настраиваем CI/CD для тестовой инфраструктуры Android
• Migrate RecyclerView to Lazy list
• digvijaysingh.rajat/two-way-communication-between-fragments-in-a-multi-module-android-project-while-maintaining-loose-711bdcf86e42">Two-Way Communication Between Fragments in a Multi-Module Android Project while maintaining loose coupling
• Animated action menu
• Build Interactive Live Streaming Android App with Video SDK using Java
• Exploring SharedFlow in Kotlin: Understanding tryEmit() and the Importance of Buffers
• Paging in Android Jetpack compose: from caching data with Room to displaying in Lazycolumn
• Reduce Boilerplate When Running Kotlin Tests
#android
Тут в комментах к пятничному исследованию у нас написали, что все неправда. Не могу не отметить, что к любым исследованиям нужно подходить с определенной долей скептицизма. И “ехать в страну не промониторив ничего, это нужно быть альтернативно одаренным”. Но если вы в Европе за пределами 🐻 - расскажите, как у вас в стране с вакансиями, зарплатами и вообще IT?
Разработка
• Топ-10 самых востребованных у работодателей языков программирования
• Самые высокооплачиваемые вакансии июня в области разработки приложений
• Чтобы стать великим разработчиком, нужна система
• Бесплатный курс по основам Continuous Delivery
• Вероятно Twitter заDDOSил сам себя
• Видео Yandex BDUI Conf
• СЛЕЗЫ ВКАТУНА: Реальная история входа в IT в 2023
• Разгоняем BLE
• Avito Design Talk: дизайнер vs. продакт
• Охэхэнный подкаст: кто такой тимлид
• Niantic снова проводит увольнения
• Какие баги мы заложили в мобильный банк на PHDays 12: разбор конкурса $NATCH
• Moneyball for Software Teams – An Imperfect Heuristic for Quantifying Dev Performance
• The Story of Samsung’s OneUI
• Building Real-time Machine Learning Foundations at Lyft
Маркетинг
• Корейский Alwayz пытается сделать шоппинг веселым и социальным
• Реклама Facebook* в Европе позволит скачивать приложения напрямую
• Одно приложение — в 50 раз больше заказов
• Клуб миллионеров в App Store — 503 приложения зарабатывает $1 млн или больше
• MyTracker запустила инструмент для оценки портрета аудитории сайта или приложения
Кроссплатформа
• Flutter meetup от Evrone
• Колесо сансары в поиске решения бага «белый экран» в SPA приложении на React
• Shorebird: CodePush & Over-the-Air Updates for Flutter Apps
• Explore Animated Loader In Flutter
• Profiling React Native Apps With iOS and Android Tools