Мобильный Гоша из Dodo
506 subscribers
127 photos
20 videos
43 links
Инженерный взгляд на продукты, сделанные с любовью к платформе.

Про эмоции и детали в iOS/Android, которые никто не замечает, но все чувствуют
Download Telegram
💡 Как я попытался автоматизировать расшифровку встреч и сэкономить $20 в месяц

Мы в Додо используем Google Meet для созвонов, и у нас есть подписка на Gemini.
В Meet встроен Gemini - можно запускать транскрибацию и саммари звонков.

Конечно же, есть одно но!

Gemini пока не поддерживает русский язык.
Поэтому для этих целей я использую Notion AI, который посоветовал наш Head of Design

Это довольно удобно:
- в реалтайме транскрибируется звонок
- можно делать заметки
- просить не записывать какую-то важную информацию
- и подводить итоги встречи в виде саммари

Минусы: транскрибация не самая лучшая, потому что Notion не подключается к звонку, а записывает звук с микрофона и динамика.
Но тем не менее саммари получаются 🔥

Всё бы хорошо, но платить $20 в месяц, когда есть корпоративная подписка на Gemini - такое себе 🫠

Поэтому на одной из встреч наш инженер предложил лайфхак:
1. Включаем запись с субтитрами — они поддерживают русский
2. Google сохраняет видео + текст субтитров + чат в отдельных файлах
3. Скармливаем субтитры Gemini и просим сделать саммари
4. Тратим $20 на пиццу и кофе Экономим $20

Я даже подумал, что можно всё это автоматизировать через Google Apps Script и сразу отправлять результат в корпоративный мессенджер.

Но, увы.
Даже с русскими субтитрами Gemini всё ещё пытается распознать английский в русском, поэтому эксперимент не удался.

Так что пока остаюсь без $20 с Notion AI 😊
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥5😁2🤔1
Сижу в самолёте, лечу в Питер после отпуска. С понедельника командировка.

Рядом парень в спортивном костюме и кавказской внешности спрашивает у меня:
Ты отдыхать или работать?


В тот момент понял, что тоже лечу в Россию подзаработать.



Кстати, на днях была презентация Apple. Я её с радостью пропустил, выбрав плавание в бассейне.
Но там есть пару интересных обновлений, о которых хочу рассказать 👀
Please open Telegram to view this post
VIEW IN TELEGRAM
😁4👍31🤔1
Лично мой фаворит — Live Translation в AirPods.

Теперь в наушниках можно слушать перевод в реальном времени, когда кто-то говорит на другом языке.
Наконец я буду понимать французов, итальянцев и вьетнамцев.

Хотя, вряд ли:
1. В Европе фича недоступна
2. Список языков ограничен (английский, французский, немецкий, испанский, португальский)
3. Работает только на AirPods 4+ или AirPods Pro 2+
4. Нужен iPhone не ниже 15 Pro
5. Только с iOS 26

Apple сделала красиво, но пользоваться этим смогут пока только избранные.
А значит, всё ещё придётся использовать Google Переводчик 🙂
🔥4👀3👍1
Ребят, мы в Додо Пицце 🍕 ищем Middle+ iOS-разработчика в команду оформления заказа 📱

Если ты не просто пишешь код, а хочешь видеть, как он сразу влияет на то, что видят пользователи, — тебе к нам. Здесь твои фичи мгновенно отражаются на заказах и среднем чеке.

Что ты будешь делать:
• Проектировать архитектуру
• Запускать ключевые фичи, от выбора адреса до финального оформления заказа
• Поддерживать стабильность критического пути
• Работать в тесной связке с соседними командами: back-end, UX/UI, маркетинг, аналитика


Что важно уметь:
• UIKit + SwiftUI
• async/await
• VIPER (или хотя бы понимание, зачем он нужен)
• Любишь писать тесты и поддерживать высокое качество кода

Что ты получишь:
• Удалёнка, но есть классные офисы в Москве, Питере, Алматы, Сыктывкаре и Нижнем
• Продуктовый подход
• ДМС, курсы, английский и всякие плюшки

Если стало интересно - пиши мне в личку @goshaginyan

Сама вакансия тут
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥8👍2🤔1
А вы видели новый айфон?

Разработать дизайн нового iPhone 17 Pro Apple пригласила дизайнера Сергея Мекрюкова, который консультировал купертиновцев в выборе цвета.

Тим Кук и команда в знак благодарности выпустили эксклюзивную линейку DodoPhone.

PS. Сергей занимает роль Head of Design в Dodo Engineering(Drinkit, Dodo Pizza) и ведет тг канал
1😁105🔥4
Apple услышала пользователей, которым не хватает контраста.

С iOS 26 текст довольно часто из-за недостаточной контрастности плохо читается.
И с iOS 26.1 beta 4 теперь можно настроить уровень Liquid Glass.
Если не нравится прозрачность, можно будет добавить немного “блюра”

Для разработчиков и дизайнеров это, конечно, новая головная боль.

Необходимо поддержать версии:
- до iOS 26 (18, 17…)
- iOS 26.0
- теперь ещё с iOS 26.1 будет +1 вариация
👍4😁2
Нужно ли делать двойную работу и рисовать макеты под Android?

В прошлом посте в комментариях поднялась тема как мы поддерживаем iOS и Android?

Дисклеймер: да, мы готовим макеты под каждую платформу, поддерживаем две темы(темную и светлую), поддерживаем Dynamic Type и тд

И каким-то магическим образом наша дизайн команда именно сегодня выложила на эту тему пост

https://t.iss.one/designdodo/275
👍21🔥1
Теперь и на Android будут красивые приложения😁

В начале месяца Apple выпустила библиотеку App Migration Kit, которая позволяет передавать данные между iOS и Android.
Тогда было не очень ясно зачем?

И вот вчера всё стало понятно.

Команда Swift представила Swift SDK для Android.

Теперь iOS-разработчикам будет гораздо проще портировать свои приложения под Android.

Пойду свой пет переводить, что ли
🔥4👍2🤔1
Media is too big
VIEW IN TELEGRAM
Пока iOS-разработчики не заменили Android-разработчиков

В Додо мы каждый год проводим хакатон.
И в этом году наш Android-лид из Drinkit вместе с командой выиграли его, создав AI-помощника прямо внутри приложения Drinkit 🐳

Они использовали Firebase AI, которую Google представила на Google I/O 2025.

Firebase AI Logic — это набор инструментов,
позволяющий разработчикам интегрировать
возможности ИИ от Google, включая модели Gemini.


Очень горжусь, что работаю с такими крутанами, поэтому не могу не поделиться радостной новостью.

Макса пригласили выступить на ряде конференций, где он расскажет как работает Firebase AI.

Если будете в этих городах, не пропустите:

🇹🇷 6 Dec — DevFest Mersin
🇹🇷 7 Dec — DevFest Istanbul
🇹🇷 13 Dec — DevFest Izmir
🇦🇪 15 Dec — Droidcon Abu Dhabi
🇦🇲 20 Dec — DevFest Armenia
Please open Telegram to view this post
VIEW IN TELEGRAM
1🔥92👍2👎1
Запустили Live Updates на Android

Люблю новые технологии. Кто же их не любит, правда?

В мае на Google I/O показали Live Updates — Android-аналог Live Activity.

Да, работает только на Android 16.
Да, покрытие - меньше 7%.

И всё равно мы решили делать.
Потому что Live Activity на iOS - одна из самых удобных штук для трекинга статусов: доставка, такси, кофе - всегда перед глазами.

Теперь Live Updates доступны в Dodo Pizza и Drinkit.
Фича уже в проде, можете тестить.

Но самое крутое, что наш Android-разработчик в Пицце не просто внедрил Live Updates, а разобрался в API и написал подробную статью по реализации.

Кому интересно - читайте, там все разложено по полочкам.

В комментах закину еще скрины из Дринкита
1👍7🔥6
This media is not supported in your browser
VIEW IN TELEGRAM
KPACUBO и ТЕХНО/\ОГИЧНО

Одно из немногих приложений, которое не боится делать смелые и дерзкие решения.

Придумать классную пасхалку сложно.
Продать её бизнесу — ещё сложнее.
Профита никакого, кроме эмоций и хайпа.
Но иногда именно это делает продукт живым.

Уже угадали к чему пасхалка?

Передаю огненный привет команде Дринкита 💔
🔥11👍4
Костыль года: Firebase Crashlytics → Loop

История о том, как отсутствие одной интеграции заставило меня и Макса написать целый парсер Gmail-писем.

Проблема простая: у нас в компании используется Loop (корпоративный мессенджер на базе Mattermost).
Firebase Crashlytics умеет слать алерты только в Slack, Email, Jira и PagerDuty. Slack у нас нет, Jira мы не пользуемся, email никто не смотрит, PagerDuty нам не нужен. А Crashlytics-алерты очень хочется видеть в реальном времени.

Что пришлось сделать:
1. Настроить Firebase → отправка всех крашей на e-mail
2. Сделать фильтр в Gmail → все письма от Firebase падают в метку «crash_alerts»
3. Написать Google Apps Script, который каждую минуту:
- проверяет новые письма в метке
- парсит их
- форматирует в красивый attachment
- отправляет через webhook в наш Loop-канал

В итоге, что мы получили:
- Все новые краши из всех наших мобильных приложений теперь в одном канале
- Покрыто 8 приложений: Dodo Pizza, Drinkit, Menusa и курьерское приложение.
- Все в одном месте: какое приложение, какая платформа, какая версия упала и что за ошибка.

Когда нет готовой интеграции — приходится писать свою.

В следующий раз расскажу, как я готовил технический дашборд в Grafana и собирал свой Crash-Free дашборд для всех наших приложений, потому что у Crashlytics нет API.
👍7🔥6
Про внутреннюю конкуренцию

В 2020 году в Dodo Brands у нас было три продукта:
• Dodo Pizza — зрелый бизнес
• Drinkit — новый кофейный стартап
• Doner 42 — ещё один стартап

И между ними постепенно возникла естественная конкуренция.
Не корпоративная — а здоровая, живая и творческая.

Любимый пример — комбо.

В 2021 году мы в Doner 42 запускали комбо и разобрали все решения, какие были на рынке:
• конкурентов
• зарубежные аналоги
• и, конечно же, старшего брата — Dodo Pizza

На основе этого микса родилось решение, которое мы считали самым удобным на тот момент —
простым, интуитивным, без лишних шагов. Для донера оно подходило идеально.

Спустя годы в Dodo Pizza решили полностью обновить раздел комбо.
И задача была уже другая:
• не просто сделать лучше, чем было
• а сделать лучше, чем у всех
• при этом учесть специфику пиццы, где вариаций и кастомизаций в десятки раз больше

И, конечно, решение донера не подошло бы.
Получилось свежее, современное и сильное решение.

Сейчас такую же задачу решает Drinkit.
Команда проектирует комбо «с чистого листа» — смотрит на весь рынок,
учитывает специфику напитков и пытается сделать своё, уникальное.
И я уверен: у них получится версия, на которую потом будут смотреть уже другие команды.

И это дает эффект, которого невозможно добиться, если сделать одно универсальное решение для всех.

Что это даёт:
• каждая итерация делает продукт лучше
• каждая команда привносит свой стиль и своё понимание «удобно»
• каждая внутренняя конкуренция поднимает планку
• никто не застревает в иллюзии «мы и так лучшие»
• команды двигаются быстрее
• разные подходы рождают сильные решения
• создает дружеское соревнование, которое вдохновляет

Совсем свежий пример:
Сегодня остались два проекта — Drinkit и Dodo Pizza. Обе команды сделали Live Updates, про которое я писал выше. И снова наблюдаю знакомую картину:
• одна команда выкатывает решение
• вторая выкатывает другое
• потом подсматривают друг у друга и делает еще лучше

Это тот случай, когда win-win — не просто слова

Простой вывод:
Когда внутри компании несколько команд решают одну и ту же задачу по-разному, рождаются не компромиссы, а самые лучшие решения.


И мой совет на последок:
• Не убивайте конкуренцию ради унификации — универсальное часто оказывается средним решением.
• Не бойтесь разных подходов в одной компании.
• Подсматривайте лучшие идеи друг у друга — в этом сила.
• Поощряйте здоровое соревнование — оно делает лучше всех.

Однажды расскажу и про обратную сторону — когда важно не конкурировать, а собраться и сделать одно общее сильное решение.
Главное, выбрать подход под задачу.
1🔥15👍6💯4
🫰 Дайджест тг-постов в Додо за прошлую неделю

🐳Drinkit

Макс Качинкин — Android Lead в Drinkit
Запустил мини-серию постов про шейдеры на Android.
Разобрал базу AGSL, показал, чем он удобнее GLSL, и собрал простой красный фильтр за 3 строки.

Сергей Запухляк — iOS разработчик в Drinkit
Рассказал про запуск «Подарка другу» на iOS и про новую реферальную программу.

🦤 Dodo Pizza

Борис Лысиков — QA Lead в Dodo Pizza
Показал, как сделали AI-ревью тест-кейсов на Gemini.
Скрипт сам проверяет кейсы, оставляет комментарии и экономит время регресса.

Сергей Орлов — Android разработчик в Dodo Pizza
Рассказал, как реализовали Live Updates на Android и как это работает внутри.

Женя Бондарев — Android разработчик в Dodo Pizza
Поделился своим путём в геймдев: от хаоса идей до структурированного ТЗ.
Выпустил первый девлог собственной RTS.

Лёша Березка — iOS Lead в Dodo Pizza
Рассказал, зачем хранит все скриншоты с 2013 года.
Архив как машина времени: эволюция дизайна, баги и этапы разработки.

Никита Белкин - DS дизайнер в Dodo Pizza
Продолжает рассказывать про нашу дизайн-систему в пицце

Dodo Brands

Борис Герн — AI Lead в Dodo Brands
Поделился запуском первого AI-агента по данным — Blender.
Показывает выручку, заказы и чек прямо в Loop.

Сергей Мекрюков — Head of Design в Dodo Brands
Подвёл итоги года по найму дизайнеров: чего не хватило кандидатам и что помогает пройти.

Паша Притчин — CTO Dodo Brands
Разобрал алгоритм, как правильно работать с обратной связью «через одного» и когда подключаться руководителю.

Дима Павлов — Deputy CIO в Dodo Brands
Рассказал, почему умение управлять людьми — недооценённый навык.
Все учат языки и фреймворки, но наверху оказываются те, кто умеет растить лидеров.

И подготовил для вас ссылку на все наши каналы, чтобы вы не пропустили важные новости 😉
Please open Telegram to view this post
VIEW IN TELEGRAM
29🔥7
Forwarded from Dodo Engineering
📱 Apple объявила победителей AppStore Awards

Приложением года в App Store стало Tiimo — новый формат ToDo-планировщика. Head of Mobile Георгий Шагинян объясняет, что в нём интересного и почему это решение не случайно:

Многие удивились выбору: на первый взгляд это обычный список задач, местами даже перегруженный текстом и визуальными элементами. Кажется, что нет ничего «революционного».

Здесь важен контекст:

Во многих странах тема доступности всё ещё остаётся на периферии. Приложения, адаптированные под людей с когнитивными особенностями, ограничениями внимания, моторики или зрения, у нас пока не стали нормой. Чаще их воспринимают как редкое исключение, а не как часть базового качества продукта.

На глобальном рынке ситуация другая:

Apple традиционно уделяет особое внимание доступности и последовательно продвигает продукты, которые создают инклюзивный опыт. Для компании доступность — не «фича», а признак зрелости дизайна и инженерной культуры.

Этот контекст хорошо знаком нам в Додо:

Мы много лет относимся к доступности с таким же вниманием:
Dynamic Type — обязательная часть проектирования интерфейсов в нашей дизайн-системе.
• Приложением можно пользоваться с VoiceOver, и незрячий человек способен оформить заказ без затруднений.
• Бывший Head of Mobile в Додо, Михаил Рубанов, написал целую книгу о доступности.

И именно поэтому выбор Apple становится понятным.
Tiimo — приложение, созданное для людей с СДВГ и нейроотличиями — стало App of the Year. Оно решает не задачу «управления списком дел», а проблему повседневной жизни тех, кому стандартные ToDo-приложения не подходят.
Please open Telegram to view this post
VIEW IN TELEGRAM
7👍4🔥3
🍕 GoDigest 2

Дайджест тг-постов в Додо за прошедшую неделю.

🐳 Drinkit

Дима Максимов — Android разработчик
Разобрал Baseline Profiles и Startup Profiles.
Показал, как включить Startup Profiles, зачем они нужны и почему Google обещает +15–30% к скорости старта.
Все вместе ждём данные с продакшена, чтобы сверить эффект.

Макс Качинкин — Android Lead
Показал первые фото с DevFest Istanbul 2025 — крупнейшего DevFest в Турции.
Уже пообщался с Google и Netflix.
Ну и выступление Макса, разумеется, было самым лучшим🔥


🦤 Dodo Pizza

Никита Белкин — DS дизайнер
Выпустил новый разбор дизайн-системы.
Показал, как автоматизирует токены из Figma на iOS и Android.

Сергей Орлов — Android разработчик
Начал делать ActiveTrend — трекер питания и активности.
Фокус на привычках, минимуме цифр и простом UX.

Женя Бондарев — Android разработчик
Продолжает рассказывать как делает свою игру.
Показал тизер нового ролика: Blender, AI-инструменты и ранние рендеры.
Поделился, почему 3D-генераторы пока не подходят для реальных игр, и как Firefly спас по звуку.

Аня Горохова — концепт-дизайнер
Выступила на Sber Design Meetup.
Разобрала, как делать концепты, что такое ДНК бренда и почему эмоции важны в дизайне.

Дени Егалуев — iOS разработчик
Запустил канал, поделился опытом миграции на Swift Sharing, который длился 4 месяца и разобрал ключевые нюансы.

Лёша Березка — iOS Lead
Рассказал, как ускоряем тесты на CI через параллелизм.
Разобрал нюансы UI- и unit-тестов, использование --only-testing, merge .xcresult и матрицу GitHub Actions.

Борис Лысиков — QA Lead
Показал, как настроить выборочный запуск iOS-тестов из TestOps.
Разобрал связку TestOps → CI → xcodebuild, нюансы -only-testing и готовый workflow.
Полезно при рефакторинге, регрессе и приёмке фич.

🤘 Dodo Engineering

Дима Карпов — Lead Product Owner в B2B
Рассказал, что сделали с валом обращений по AI-фоткам пицц.
Укрепили ручную модерацию, обучили поддержку, прокачали скоринг.
Модели для детекции — дорогие и неточные, поэтому упор сделали в процессы и антифрод.

Женя Пятков — фронтенд разработчик
Разобрал, почему Claude Opus 4.5 — лучшая модель для написания кода.
Пояснил разницу между tool-call и computer-use.
Сделал прогноз: Anthropic может возглавить AI-гонку в 2026.

#godigest #drinkit #dodopizza #goshamobile

Напоминаю, что у нас есть ссылка для подписки оптом😉

Прошлый дайджест
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3🔥31
Общее состояние мобильных приложений в 🔠🔠🔠🔠🔠🔠🔠

Одно из самых важных для мобильной команды — видеть текущее состояние приложений.
Понимать, что там с краш-фри, как долго запускаются приложения и где начинаются проблемы.

Когда приложений много, задача усложняется.
У нас — несколько мобильных продуктов, по две платформы на каждый, и того больше шести приложений, за которыми нужно следить регулярно.

На рынке основной инструмент для отслеживания мобильных метрик — Firebase.
Мы тоже активно им пользуемся, но при масштабе появляются трудности:

- нужно прыгать по разным дашбордам Firebase
- нет общей картины по продуктам
- сложно смотреть состояние на уровне всей компании

В Додо основным инструментом мониторинга является Grafana.
Значит, логичное решение — собрать в ней единый дашборд, который объединяет все важные мобильные метрики.

Мы начали его собирать.
Первые две метрики, которые туда добавили — краш-фри и скорость старта приложений.

0️⃣ Firebase не имеет API

Поэтому любые данные можно получить только через экспорт в BigQuery.
Это ключевой шаг, без которого ничего не заработает.

1️⃣ Скорость запуска

Тут всё довольно просто, так как в Пицце и Дринките уже были кастомные трейсы для измерения старта.

Если вы захотите повторить, порядок действий такой:

0. Добавить кастомные трейсы в Firebase Performance для измерения скорости запуска приложения.
1. Включить интеграцию Firebase → BigQuery.
2. Включить экспорт Performance Monitoring и Crashlytics.
3. Установить BigQuery Plugin в Grafana
4. Добавить BigQuery DataSource в Grafana (нужен service account с правами на чтение).
5. Использовать SQL-запросы для получения статистики.

Пример запроса за последние 7 дней:


SELECT
_PARTITIONDATE AS day,
ROUND(APPROX_QUANTILES(trace_info.duration_us, 100)[OFFSET(50)] / 1e6, 2) AS p50,
ROUND(APPROX_QUANTILES(trace_info.duration_us, 100)[OFFSET(90)] / 1e6, 2) AS p90
FROM
`[project].firebase_performance.[app_bundle_id]`
WHERE
_PARTITIONDATE BETWEEN DATE_SUB(CURRENT_DATE(), INTERVAL 7 DAY) AND CURRENT_DATE()
AND event_name = "cold_startup_menu_shown"
GROUP BY day
ORDER BY day


Теперь скорость запуска подтягивается в единую панель Grafana.

2️⃣ Crash Free

Crash Free — это процент пользователей или сессий, которые не столкнулись с падениями приложения.
В идеале это должно быть 100%.
На практике такого не бывает — разве что в собственных пет-проектах с одним пользователем 🙂

Мы считаем crash-free по пользователям.

Раз Firebase уже экспортируется в BigQuery, достаточно поменять таблицу на firebase_crashlytics и забрать нужные данные.


2.1. Забираем критичные краши

В Crashlytics нам нужны только is_fatal = TRUE.


DECLARE days_back INT64 DEFAULT 7;

SELECT
COUNT(DISTINCT COALESCE(user.id, installation_uuid)) AS users_with_crash
FROM
`[project].firebase_crashlytics.[app_bundle_id]`
WHERE
TIMESTAMP_TRUNC(event_timestamp, DAY) >= TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL days_back DAY)
AND is_fatal IS TRUE;


2.2. Забираем количество пользователей

Эти данные мы берём из внутренней аналитики, а не из Firebase — так дешевле, потому что BigQuery берёт деньги за чтение данных: цены тут

2.3. Считаем Crash Free


Crash Rate = critical_crashes / total_users
Crash Free = 1 − Crash Rate


Дальше остаётся визуализировать эти данные в Grafana:
SLA-линии, алерты, тренды, сравнение платформ.

Итог

Сейчас в дашборде уже есть 4 приложения: два от Пиццы и два от Дринкита.
В планах:

- добавить остальные продукты
- перенести метрики скорости запуска в нашу внутреннюю аналитику (чтобы отказаться от Firebase Performance и снизить косты)
- подумать над альтернативой Crashlytics — если у вас есть опыт, делитесь

P.S. Как бонус мы добавили туда покрытие автотестами в регрессе.
Зачем это нужно — расскажу в следующий раз.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6🔥4
Media is too big
VIEW IN TELEGRAM
🔥Итоги 2025 года в Додошке🔥

Смотреть со звуком!
Please open Telegram to view this post
VIEW IN TELEGRAM
9🔥10👏4