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
Вероятно Twitter заDDOSил сам себя
Последние два дня Илон Маск утверждал, что Twitter подвергается атаке со стороны "нескольких сотен организаций", которые осуществляют "ЭКСТРЕМАЛЬНЫЙ уровень извлечения данных". Это вынудило компанию экстренно включить "большое количество серверов" и принять чрезвычайные меры.
1. В выходные Twitter начал блокировать доступ к Twitter всем вышедшим из системы, требуя входа в систему для просмотра любого твита или профиля. Маск назвал это "временной чрезвычайной мерой".
2. Очевидно, это не остановило наплыв трафика, и Twitter ограничил количество твитов, которые вы можете просматривать.
3. Сразу же пользователи Twitter начали видеть сообщения "Rate Limit Exceeded".
4. Неужели компании, занимающиеся разработкой искусственного интеллекта, обрушили соцсеть? Возможно, да. А возможно и нет.
5. Само веб-приложении Twitter постоянно отправляет запросы в Twitter в бесконечном цикле. "Это уморительно. Похоже, что Твиттер сам себя заDDOSил". Twitter отправляет около 10 запросов в секунду, пытаясь получить контент, который никогда не приходит. Вероятно, это создало адские условия, которые инженеры даже не предполагали, и поэтому мы получаем эту комедию ошибок, приводящую к самой эпической самоликвидации - само-DDOS.
6. С другой стороны в настоящее время неизвестно, когда этот баг появился и насколько сильно он влияет на трафик, поэтому трудно определить, этот баг вдохновил Twitter заблокировать незарегистрированный доступ и добавить ограничения скорости, или же баг был спровоцирован развертыванием этих изменений.
И что: было бы забавно, если бы эта "чрезвычайная ситуация" от начала и до конца была вызвана ошибкой, в результате которой Twitter сам себе устроил DDOS, породив все эти "интересные" решения 🤡
Топ-10 самых востребованных языков программирования
Исследование проводилось на базе данных крупнейшего в мире сервиса по поиску работы Indeed.com - 817 259 вакансий в сфере IT.
1. Топ языков - Java, SQL и Python.
2. Самый высокий дефицит IT-кадров этой весной испытывали в Европе. Среди европейских стран больше всего IT-специалистов этой весной искали в Германии (103 089), Франции (65 753), Нидерландах (32 814), Ирландии (29 995) и Польше (29 286).
3. Европа лидирует и по количеству IT-вакансий, где от соискателей требуется владение русским языком (3% от всех IT-вакансий в регионе).
4. В Европе, Латинской Америке, Азии и на Ближнем Востоке высокий спрос на senior-разработчиков. В отдельных европейских и латиноамериканских странах исследователи наблюдают также дефицит джунов. Рынок труда в США ориентирован на IT-специалистов уровня миддл.
5. Абсолютным лидером по числу открытых вакансий стал специалист технической поддержки (17%). Дальше Инженер-программист, Бизнес-аналитик, ИТ-консультант, Менеджер проектов в ИТ.
6. Невостребованными во всех исследуемых регионах оказались Data Scientist (2% от общего числа IT-вакансий) и разработчики мобильных приложений (менее 1%).
И что: "пара-пара-пам всё". Если серьезно, джунам надо в ЛатАм, а просто "разработчикам" переходить на уровень Engineer, Manager, Analyst и т.п.
Android
• Как мы снизили время запуска FullStory на Android на 75%
• TranslationPlugin: перевод текста в IntelliJ/Android Studio
• Обзор библиотек для скриншот-тестирования Android проектов. Часть 1
• Тестирование мобильных игр перед релизом: инструменты и лучшие практики в Google Play
• bapness/tools-and-tips-i-wish-i-knew-when-i-started-android-development-1dce73c491a">Tools and tips I wish I knew when I started Android development
• Records in Android Studio Flamingo
• Avoid Java double brace initialization
• Jetpack compose — How to implement Custom Pager Indicators
#android
Занятная история от разработчика screen.studio. Чувак забыл отключить скачивание обновлений - новая версия на 250 Мб скачивалась и через 5 минут… снова скачивалась, и через 5 минут… У каждого клиента. В результате за полтора месяца отдали с Google Cloud 2 петабайта данных на $8000 и отключили одному клиенту интернет из-за перерасхода трафика, а обнаружили только когда кредитка начала вопить о перерасходе средств. Смысл - ставьте триггеры на облачные расходы и особо тщательно пишите любой код, который потенциально может генерировать затраты 🤷
Разработка
• Одна строчка кода, которая стоила $8,000
• Tesla добавляет поддержку сторонних приложений
• ChatGPT запустили на Windows 3.1
• Как мы делаем тестирование прозрачным. Всё об инфраструктуре QA
• JTBD-метод на практике для решения тестового задания
• To Be A Great Software Developer — You Need a System
Маркетинг
• data.ai announces the Top Publishers in 2023
• Категория «Здоровье и фитнес» в 2022 — отчет AdQuantum и Sensor Tower
Кроссплатформа
• aliammariraq/sealed-classes-in-dart-unlocking-powerful-features-d8dba185925f">Sealed Classes in Dart: Unlocking Powerful Features
ChatGPT запустили на Windows 3.1
"640К памяти должно хватить всем".
1. Разработчик создал приложение ChatGPT для Windows 3.1. WinGPT представляет собой очень базовую версию чат-бота ChatGPT в приложении, которое может работать на 386 процессоре.
2. «Я не хотел, чтобы мой Gateway 4DX2-66 1993 года остался в стороне от ИИ-революции, поэтому я создал AI Assistant для Windows 3.1, основанный на OpenAI API».
3. WinGPT написан на языке C с использованием стандартного Windows API от Microsoft и подключается к API-серверу OpenAI с помощью TLS 1.3.
4. Впрочем, ответы ChatGPT не поддерживают контекст из-за ограничений памяти.
И что: если не задаваться вопросом зачем и у вас все еще есть машина с Windows 3.1, то можете скачать WinGPT и наверстать 30 лет между двумя этими технологическими революциями.
Android
• Crafting a Clock in Jetpack Compose with Canvas
• How we lowered FullStory for Android’s impact on app startup time by 75% thanks to Emerge Tools
• Understanding memory leaks
• Talkback Ordering in Android Jetpack Compose
• Performance With Jetpack Compose
#android
Из вчерашнего еще замечательное - закрылась социальная сеть IRL. Она должна была, по хорошему, стать заменой всяких Фейсбуков для Поколения Z, но не осилила. Всего стартап поднял около 200 миллионов долларов с оценкой в 1.17 млрд и в пике утверждал, что у него MAU 20 миллионов пользователей. Потом гендира с помпой уволили, провели увольнения, а вишенкой на торте оказалось расследование, которое показало, что 95% пользователей сети - боты. Масштаб, да? 200 миллионов на ботов. Что-то обещали вернуть, но бедный SoftBank 🙈
Разработка
• TikTok закрывает свой клон BeReal
• Только четверть программистов однозначно счастливы, работая в IT
• Google отменил свои AR-очки Project Iris и переключился на создание платформы
• Как я написал конвертер 3D-моделей из подручных средств
• Nobody Listens to UX
• I Wish I Knew These 10 Software Architectural Styles Before the Interview
Маркетинг
• В AppMetrica появились кастомные дашборды
Кроссплатформа
• Demystifying Local AAR Usage in Flutter: Step-by-Step Guide for Flutter Plugins and Projects
• Unifying our workflow: the journey to monorepo with Kotlin Multiplatform Mobile
• parthg500/flutter-ios-app-release-on-appstore-using-bitbucket-pipeline-255a0b6c0976">Flutter — iOS App Release on AppStore using Bitbucket Pipeline
Спасибо за вчерашние проекты, буду разбирать. Сегодня вышла вторая часть, практическая, про архитектуру 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
Переключатель фич
Новый еженедельный дайджест - 117 материалов. Обязательно прочитайте, поставьте 👍 или 🖤, поделитесь или поддержите. И присоединяйтесь к IT Insights, где новости и статьи про код, технологии и все самое интересное за пределом мобайла. Вот, например, у меня там была совершенно чумовая вещь - Boba AI, co-pilot, созданный для разработки продуктовых стратегий, генерации идей и концепций.
Видео и подкасты за неделю
• (iOS Ru)
СЛЕЗЫ ВКАТУНА: Реальная история входа в IT в 2023
• (iOS Ru)
Жизненный цикл объектов SwiftUI
• (iOS En)
Implementing Carousel Slider Inspired From Material Carousel
• (iOS
En)
SwiftUI Glassmorphism - Glass Background Effect
• (iOS En)
Easily Add Filtering In SwiftData Using Searchable
• (And Ru)
Android: смотрите на больших экранах
• (And Ru)
Готовим конфигурацию Android-приложения с помощью Dynamic Proxy и рефлексии
• (And En)
Location location location, revisited - Android Developers Backstage
• (And En)
Intents & Intent Filters - Android Basics 2023
• (And En)
Resources & Qualifiers - Android Basics 2023
• (Crs Ru)
Flutter meetup от Evrone
• (Crs En)
Creating Kotlin Multiplatform SDK
• (Dev Ru)
Охэхэнный подкаст: кто такой тимлид
• (Dev Ru)
Видео Yandex BDUI Conf
• (Dev Ru)
Разгоняем BLE
• (Dev Ru)
Avito Design Talk: дизайнер vs. продакт
Посмотрели какое-то другое интересное видео? Отправьте боту -> 🧑🏻💻
iOS
• iOS: Узнать и отслеживать состояние физического переключателя тихого режима
• shiny.shubham/unleashing-xcodes-potential-6-uncommon-xcode-extensions-for-senior-ios-engineers-1f0553f9dc38">Unleashing Xcode’s Potential: 6 Uncommon Xcode Extensions for Senior iOS Engineers
• vladosius/implementing-location-search-by-address-into-the-ios-app-step-by-step-guide-1131b0d17664">Implementing location search by address into the iOS app
• How to set up Gitlab CI/CD with Fastlane for iOS-project on a Mac mini
• Working with C callback functions in Swift
#ios
В AppMetrica появился удобный, простой и эффективный инструмент для быстрой визуализации событий из мобильного приложения.
С его помощью вы сможете следить за успешностью любой конкретной фичи в вашем продукте.
А на главной странице можно быстро сделать дашборд с KPI или любыми показателями, чтобы вся команда могла пользоваться единой панелью и понимать, что происходит с метриками и куда вы движетесь.
Это удобный инструмент для отслеживания эффективности привлечения трафика, LTV, ROI.
iOS-разработчик в Финтех Яндекса
Знаете, где самое место для weak и что такое MVVM и MVC? Тогда есть вакансия для вас 👀
Финтеху Яндекса нужен iOS-разработчик, который и новую фичу добавит, и старый баг отловит. А кроме этого — поможет построить инфраструктуру для приложения и автоматизировать процессы разработки и тестирования.
Ждём, что вы уже кодили для iOS и разбираетесь в сортах Swift. И мы не про творчество Тейлор, а про Swift 5.x, SwiftLint и SwiftFormat. Ещё нужно создавать кастомные UI-компоненты и любить ревью кода.
Финтех — молодой сервис, где можно предлагать идеи и реально влиять на продукт. При этом получать блага большого Яндекса: премии раз в полгода, ДМС со стоматологией, массаж прямо в офисе и не только.
До лички рекрутера всего один шаг — решить задачку на сайте
iOS
• ReSwift: однонаправленный поток данных в Swift
• Макросы в Swift
• Swift 5.9. Что нового?
• Agile Architecture in Swift
• Effective Task cancellation in Swift by leveraging Combine’s AnyCancellable
• Writing a modern iOS Networking Library with Swift Concurrency
• Libraries with resources optimized for build time and application size
• How to use String Catalogs for localization in Swift
#ios
Android
• Flagfit: флаги функций для Android и Kotlin
• Google обновляет дизайн логотипа Android
• MockResponseInterceptor: Simplifying Retrofit API Response Mocking in Android
• Dropbox rebuilt its search experience 40% faster with Jetpack Compose
• How to create a welcoming codebase
• Simplify Testing Kotlin Flows with Turbine
#android