- PVSM.RU - https://www.pvsm.ru -

Куда катится техничка с полторашкой: хакатоны в Avito

В моём прошлом посте [1] я рассказывал о хакатонах. Разных, хороших. Настолько хороших, что и внутри компании захотелось устроить собственные соревнования. В посте расскажу, как проходили хакатоны в Avito, какие проекты реализовали, про техничку с полторашкой, кодокатицу, свидетеля столовой и носочки с котиками.

Куда катится техничка с полторашкой: хакатоны в Avito - 1

Внутренние хакатоны Avito

Полторашка

imageПервый хакатон запланировали провести в течение полутора суток. Маленький, экспериментальный, просто организованный, по-домашнему уютный. Название напрашивалось само собой — «Полторашка».

Хакатон проходил в пятницу и субботу: руководство отдало участникам один рабочий день. Это всем понравилось, используем дальше.

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

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

Было опасение, что внутри компании не наберётся достаточно желающих, но всё прошло отлично: заявилось больше десятка команд, полутора суток хватило.

Техничка

imageВторой хакатон стал экспериментом с ограничением тематики. Его посвятили техническим вопросам: техпортал и внутренние инструменты разработки, инструменты-кандидаты на опенсорс. Выбрали название: «Техничка».

Ввели простую систему номинаций, например, самый упоротый хак или самый полезный хак. Победители в номинациях получили на выбор поход на квест или в бар. Угадайте, что выбирали победители. Лучшие проекты определили сразу по завершении «Технички»: голосованием среди хакатонщиков.

Заявилось пятнадцать команд. Участники начали придумывать забавные названия командам, предлагать смелые идеи проектов. Появился ряд качественных прототипов.

Chucknology

imageТретий хакатон, Chucknology, сконцентрировался на поиске новых решений в рамках продукта, продолжил поддерживать опенсорс-проекты и полезные в работе инструменты. Перечислен список перспективных технологий для номинации «Самый инновационный хак». Появился переходящий кубок как главный приз. На нём гравируют имена победителей. Уже в планах приделывать ступеньки как у кубка лорда Стэнли.

Четырнадцать команд на финише. Идеи стали смелее, а проекты заметно сложнее: нейросети повсюду, хитрая кластеризация больших объёмов данных для поиска, продвинутая визуализация. Демонстрации и презентации повзрослели. Стали появляться презентации с фото и видео, снятыми во время хакатона.

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

Куда катится техничка с полторашкой: хакатоны в Avito - 5

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

Кодокатица

imageЧетвёртый хакатон поставил рекорд по количеству команд: двадцать. По традиции Rust у одной из них. Названия продолжают эволюционировать: бок о бок работают «Вздутый кляр» и «Дверь мне сгенерируй или клиент мне запили». Перед хакатоном в чате идёт агитация:

Хакатонщики! В команде «Асинхронные упоры» всё ещё есть места!
Мы пишем host-based IDS на Rust c применением blockchain. Требуются ржавые хардкорные бекендеры и один фронтендер со спиннером. Асинхронисты всех стран, объединяйтесь!

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

Подытог

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

Заранее формируем команды, определяемся с темой. Проводим мозговые штурмы идей одной или несколькими командами, если есть соприкосновение по тематике. Стараемся не конкурировать в рамках одной идеи. Не боимся писать на расте и браться за задачи уровня оператора кубернетеса и нейронок.

Минимализм при организации: предоставляем место, питание. За день до хакатона — собрание на полчасика с рассказом о формате и регламенте. В завершение — питчи и подведение итогов.

Проекты

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

Определение микрокатегории и генерация заголовка объявления на Avito по фото

На хакатоне была создана демо-версия сервиса, который подсказывает пользователю Avito микрокатегорию товара и предлагает заголовок только лишь по фотографии с телефона. Проект победил в номинациях «Самый инновационный хак», «Самая крутая новая фича», и «Лучший проект по версии участников хакатона». Уже используем в работе. Больше деталей про сервис компьютерного зрения — в докладе Артура @N01Z3 Кузина [2] на недавно прошедшем митапе в Avito. Общая схема подхода показана на рисунке.

Куда катится техничка с полторашкой: хакатоны в Avito - 7

А вот и команда проекта:

Куда катится техничка с полторашкой: хакатоны в Avito - 8

Фильтры для Paparazzo

Многие знают про наш опенсорс-проект, медиапикер Paparazzo. Он уже упоминался в этом блоге: 1 [3], 2 [4]. В ходе хакатона коллеги вели разработку дополнительных возможностей для него. Многие пользователи Avito перед тем, как разместить фото своего автомобиля, замазывают его номера. Либо как-то еще редактируют иллюстрации к объявлению. Чтобы облегчить им эту задачу, ребята придумали встроить фильтры непосредственно в медиапикер. Для комьюнити это означает опенсорс-компонент с фильтрами, который можно встроить в свое приложение. Фильтры можно написать самому или взять из каталога.

Весь проект был написан на языке Swift, работа с DeepBelief велась на Objective-C. На хакатоне использовали встроенное определение лиц через CIDetector, поиск номера реализовали средствами фреймворка DeepBeliefSDK [5], умеющего распознавать, что изображено на фото.

Несколько фильтров, в частности, автоматическое замазывание лиц и номеров, встроили в основное приложение с использованием новых системных фреймворков Vision и CoreML. Работа с фильтрами выложили в опенсорс [6].

Также для проекта был реализован умопомрачительный фильтр, располагающий свидетеля из Фрязино [7] рядом с людьми на фото. Зачем? Автор утверждает:

Он просто делает мир лучше.

Проект с фильтрами победил в номинациях «Лучший open-source» и «Самая зажигательная презентация».

Галерея:

Куда катится техничка с полторашкой: хакатоны в Avito - 9 Куда катится техничка с полторашкой: хакатоны в Avito - 10 Куда катится техничка с полторашкой: хакатоны в Avito - 11 Куда катится техничка с полторашкой: хакатоны в Avito - 12

Видео:

Команда проекта:

Куда катится техничка с полторашкой: хакатоны в Avito - 13

Карта офиса

Когда компания разрастается, встает необходимость навигации, поиска коллег, оргтехники, переговорок в офисе. Чтобы решить эту проблему, можно нарисовать двумерный план помещений и даже добавить интерактив с привязкой к базе данных сотрудников. Но намного эффектнее и нагляднее сделать карту трехмерной. Про этот проект Александр s9k [8] Амосов рассказывал на РИТ++ 2017 [9] и MoscowJS 37 [10].

Куда катится техничка с полторашкой: хакатоны в Avito - 14

В докладах описан процесс создания WebGL-визуализации, начиная от создания модели в трехмерном редакторе и заканчивая оптимизациями из мира компьютерных игр. Посмотрите видео по ссылке выше, если вы хотите свой интерактивный 3D-проект.

Этот проект — победитель номинации «Лучший хак на свободную тему» самого первого хакатона. Уже больше года он используется в Avito и сильно облегчает жизнь сотрудникам.

Kubernetes load testing tool

Ещё один проект, который появился в результате хакатона — система для проведения нагрузочного тестирования с помощью Kubernetes. Её цель — предоставить инфраструктуру для нагрузочного тестирования микросервисов. В графическом интерфейсе можно указать, что нагрузить, профиль нагрузки и другие параметры. А потом нажать на кнопку, и система сама сшедулит стрелялку и проведет нагрузочное тестирование.

Используемые технологии: Golang для написания инфраструктурных компонентов, работы с API Kubernetes, Yandex Tank для запуска стрельбы с помощью декларативного описания параметров нагрузки, Kubernetes для оркестрации компонентами, Redis для очереди стрельб, Graphite для метрик. Система состоит из нескольких компонентов: web UI, очередь стрельб, воркеры для разгребания очереди и discovery свободных танков, танки с API для проверки текущего состояния.

Задача на стрельбу поступает от пользователя через web-интерфейс и складывается в очередь (Redis). Воркеры читают из очереди и производят discovery танков с помощью API kubernetes. Когда находится свободный танк, задание поступает в работу и производится стрельба. Во время стрельбы метрики пишутся в graphite. После окончания стрельбы есть возможность посмотреть основные метрики по latency, rps и кастомные метрики по cpu, RAM, etc. Этот проект будет допиливаться и использоваться в рабочих задачах.

Учёт мобильных девайсов

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

Куда катится техничка с полторашкой: хакатоны в Avito - 15

Проект победил в номинациях «Самый полезный внутренний инструмент» и «Один в поле воин».

Отпускник

Бот для Slack, написанный во время хакатона, знает, на сколько можно уехать отдохнуть и помогает коллегам генерировать заявления на отпуск.

Куда катится техничка с полторашкой: хакатоны в Avito - 16

Helm

Для хостинга [11] сервисов внутри Avito мы используем Kubernetes-кластер. Для управления релизами — Helm. Helm был опробован в рамках хакатона, после чего успешно внедрён.

Карта теней на террасе

Я уже писал о том, что одна из важных составляющих хорошего хакатона — упоротость. Этот проект — лауреат номинации «Самый упоротый хак». Дело в том, то мы все любим поработать на террасе и не любим, когда солнце ярко светит на монитор. И теперь у нас есть инструмент, который показывает, где на террасе будет тень в выбранную дату и время. Из технологий была использована библиотека threejs.org [12].

Куда катится техничка с полторашкой: хакатоны в Avito - 17

Заключение

Внутренние хакатоны дали кучку приятных возможностей и осязаемых полезностей. Часть реализованных проектов используется, другая ждёт своего часа. Третьи показали состоятельность или несостоятельность идеи, позволили оценить сложность её реализации. Хакатонщики стали чаще отходить от привычного им стека технологий и пробовать что-то им неизвестное: AST парсят, блокчейн дрессируют, на новых языках пишут. Появился соревновательный момент. С каждым хакатоном всё сложнее используемые технологии, всё круче названия команд и зажигательнее презентации.

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

Куда катится техничка с полторашкой: хакатоны в Avito - 18

P.S.

Пока статья дозревала, успел пройти пятый хакатон — «Грогчейн». И, впервые в истории хакатонов в Avito, моей команде Du kannst mich gern haben удалось взять номинацию за упоротость. Делали железную кнопку релиза. Деревянный корпус, внутри которого кнопка от какого-то заводского конвейера и умная железка с вайфаем. Нажимаешь кнопку — сервис выкатывается в бой.

Куда катится техничка с полторашкой: хакатоны в Avito - 19

Как-нибудь расскажу подробнее о пятом хакатоне. О телеграм-боте, об умном кэшировании, о том, почему QA больше не нужны и о том, как прокачать ваш Exchange.

Автор: pik4ez

Источник [13]


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/programmirovanie/268693

Ссылки в тексте:

[1] прошлом посте: https://habrahabr.ru/company/avito/blog/334604/

[2] докладе Артура @N01Z3 Кузина: https://www.youtube.com/watch?v=c7d2E_zkju8&feature=youtu.be

[3] 1: https://habrahabr.ru/company/avito/blog/326774/

[4] 2: https://habrahabr.ru/company/avito/blog/327486/

[5] фреймворка DeepBeliefSDK: https://github.com/jetpacapp/DeepBeliefSDK

[6] выложили в опенсорс: https://github.com/avito-tech/Paparazzo

[7] свидетеля из Фрязино: http://wikireality.ru/wiki/%D0%A1%D0%B2%D0%B8%D0%B4%D0%B5%D1%82%D0%B5%D0%BB%D1%8C_%D0%B8%D0%B7_%D0%A4%D1%80%D1%8F%D0%B7%D0%B8%D0%BD%D0%BE

[8] s9k: https://habrahabr.ru/users/s9k/

[9] РИТ++ 2017: http://frontendconf.ru/2017/abstracts/2603.html

[10] MoscowJS 37: https://www.youtube.com/watch?v=9ltBI46EK-A

[11] хостинга: https://www.reg.ru/?rlink=reflink-717

[12] threejs.org: https://threejs.org/

[13] Источник: https://habrahabr.ru/post/342466/?utm_source=habrahabr&utm_medium=rss&utm_campaign=best