будни

Похвастаюсь: записали сегодня подкаст про машинное обучение с Петей Ромовым, техдиром gosu.ai (стартап, анализируют доту), и Самером Фатайри, главным по дата-сайнсу в adjust (крупная компания про mobile attribution).

Вот вам история, которую Петя вспомнил уже после записи, в кафе: в школе анализа данных Яндекса, у него был студент-физик, Стас, который круто решал учебные задачи, но когда его просили объяснить решение, он начинал рассказывать про физический матаппарата и физическую интуицию, из которой он черпал свои идеи. То есть задачу на определение нелегального поведения в соцсети он мог решить через прием, взятый из матаппарата анализа молекул газа, например. 🤯 Вот пример аналогичного разбора на ютубе (задача уже из «взрослого соревнования»).

В последствии, Станислав Семенов стал top-1 игроком на Kaggle — самой популярной соревновательной платформе для дата-сайнтистов (читай олимпийским чемпионом в машинном обучении). 💫

Перевёл сегодня интерфейс одного проекта с одного языка на другой с помощью Google Cloud Translation API.

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

Я попробовал несколько разных систем машинного перевода для этой задачи, самая хорошая - Google Translate. Она даже теги span и переменные в фигурных скобках не корёжит, переводит только тексты. Учитывая бесплатные полмиллиона символов перевода - даже с настройкой биллинга не придётся заморачиваться, скорее всего. Регистрируетесь в Google Cloud Platform, пишете небольшой питоновский скрипт и вперёд. Можете взять мой за основу.

Конечно, локализация (l10n) и интернационализация (i18n) проекта (разница между ними) — гораздо больше, чем просто перевод; а даже организация перевода для большого проекта с несколькими переводчиками — то ещё развлечение. Но это тема для гораздо более длинного поста.

«Название компании потом запикаем», «часть про *** и *** нужно вырезать целиком» — вот лейтмотив вчерашней записи подкаста про IT-безопасность.

Строгий продюсер запрещает что-либо обещать, так что пока рано подписываться в iTunes, продолжаем работать...

Всю свою карьеру я стеснялся и стыдился того, что не умею профессионально программировать (я начинал админом, так что unix однострочники не в счет). Я говорил, что хочу научиться, покупал книжки, но дальше пары страниц, примеров и вечеров дело не шло.

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

С радостью представляю первую программу, которой пользуются больше 3 человек. Издательский дом «Комитет» запустил публичное API для комментариев на своих сайтах tj.ru, vc.ru и dtf.ru. DTF.ru — сайт про игры и другие развлечения, так что на выходных я запрогал для него бота. Бот отвечает информацией об игре, если взять её имя в квадратные скобки. Спасибо техдиру комитета Илье за хорошее API и помощь в тестировании. Эта история бы не состоялось без Дениса из Комитета и главреда RAWG Сережи. Коллаборация!

Мне не стыдно показать исходный код публично; наверное, потому, что я не профессиональный программист. Код работает, вы можете использовать его как основу для своих ботов. Буду благодарен, если подскажете, что можно сделать лучше (python, github).

Кстати, у RAWG хорошая обвязка API под питон (написанная немецким студентом), так что если хотите поделать что-то с играми — не стесняйтесь.

Да здравствует свобода от внутренних ограничений! Ура.

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

С расстояния лучше видно потерю фокуса; вернувшись в свой проект я провел параллели и стало легче отказываться от маловажного ради реализации ключевых вещей.

Теперь с нетерпением жду новостей Forbes.ru о запусках. Меж тем, они расширяются, ищут хорошего бэкендера на пыхе, аналитика и smm-щика. Хотите работать в медиа с хорошей продуктовой командой, дельным руководством и офисом рядом с Белым домом? Пишите Наташе на [email protected]

Приехал в Вильнюс на день, пообщаться с коллегами по RAWG. В результате 7 часов подряд бились над идеями, куда развиваться. И даже напрогал скрипт на питоне по-быстрому, чтобы проверить одну гипотезу.

Самое крутое в стартапе — чувство, что можно всё изменить, перепридумать и запустить буквально на коленке.

Эта свобода пьянит, хочется пробовать, рисковать и стараться.

🚀

Все мы были в ситуации, когда тест идет совсем не так, как мы планировали.

Надеюсь, что руководство МТС не будет никого наказывать, а разработает правила, которые предотвратят возможность такой ошибки в будущем. Вот было бы круто послушать разбор этой ситуации от кого-то из МТС.

Поделюсь, как я тестировал пуши в Медузе. В какой-то момент я придумал отправлять в тестовом пуше ровно то же содержимое, которое было в предыдущем продакшен пуше. Если такой тест протечет на продакшен — большинство людей подумают, что это глюк телефона (или их самих глючит), но в любом случае — такая проблема мало кого удивит. «тест» или того хуже «111 zaebalo» — гораздо хуже. Признаюсь, что порой я тестировал пуши «путин умер», но повторять такое я не рекомендую.

Давно я не рассказывал истории из профессиональной жизни.

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

В случае фейсбука мы хотим использовать классную кнопку «продолжить как имярек» с аватаркой. (кстати, летом у гугла была похожая возможность в режиме беты и, говорят, она адски повышала конверсию, но сейчас её выключили).

Из-за этой кнопки с аватаркой всё и закрутилось. Для начала, пришлось выкинуть старый механизм аутентификации с oauth-редиректом и подключить библиотеку фб, которая делает всю работу сама. Потом я заметил (уже на продакшене), что страница логина крешится. Оказалось, что фейсбук хитро инициализирует свою js-библиотеку и при определенной последовательности загрузки скриптов она ломается. Воспроизводится это у нас не каждый раз и только на продакшене. В сафари ломается чаще, чем в хроме, так что любовь нашего фронтендера Ромы к Linux отладку не упрощала. Чтобы не ломать страницу целиком, мы срочно вставили try-catch, а потом сделали хитрую схему.

Теперь мы сначала показываем все три кнопки соцсети как обычно (oauth-редирект для фб вернулся в код обратно), при этом в фоне грузим библиотеку фб. После успешной загрузки красивой кнопки фб, мы заменяем нашу кнопку логина на родную фб, так что это практически незаметно.

В отношении этой разработки у меня два разных чувства:

- жалость, что зря потеряли время, потому что у большинства пользователей, которым нужен логин через Facebook, уже загружена js-библиотека фейсбука, так что можно было не извращаться + кажется, что тупо недоразобрались с js-ошибками;
- чувство удовлетворения, что сделали качественно «заднюю стенку шкафа», все три кнопки логина покажутся мгновенно, без задержки в любом случае.

В любом случае, получилось классно. Логиньтесь!

В ролях: продакт 🤔 Алексей Горностаев, дизайн 🖌 Андрей Кулагин, фронтенд 🖼 Роман Ахмадуллин.

Психанул и ответил Taxify на их retention письмо. Конечно, в компании с нормальным сервисом ответы на такие письма должны попадать в папку «важное!11», но что-то мне подсказывает, что в случае Taxify будет не так :(

А вы разговариваете с роботами?

🤖 284❌ 284🐝 104

Когда по ошибке отправил 2000 писем на продакшене вместо 10 (слава богу, все две тысячи на наши адреса, не игроков)