24 часа спустя
Пару месяцев назад коллеги с моей новой работы предложили присоединиться к ним и принять участие в крупном хакатоне в Нью-Йорке. Сначала я удивился, зачем лететь так далеко, но немного изучив тему, понял, что по-настоящему крупные хакатоны проходят не так уж и часто, и майский TechChrunch Disrupt является одним из наиболее уважаемых и крупных среди подобных мероприятий. У ребят к тому моменту уже было за плечами несколько побед в других хакатонах, и мне тоже захотелось проявить себя, поэтому недолго думая я зарегистрировался, купил билеты и с нетерпением стал ждать 12го мая...
Правила хакатона
До участия я лишь отдаленно представлял себе, что такое хакатон. Если коротко, то основные правила следующие:
- Нужно за 24 часа сделать и показать рабочий продукт. Без слайдов и лишних слов
- Собрать прототип и написать код необходимо за эти 24 часа с нуля. Можно использовать Open Source API, общедоступные библиотеки и сервисы
- Продукт должен быть новым, расширить существующий нельзя
- Размер команды ограничен пятью участниками
- Необходимо продемонстрировать свою работу со сцены в течение одной минуты, за которую нужно убедить жюри, что именно вы достойны получить приз
Особых ограничений на идею проекта нет. По ходу хакатона я украдкой смотрел, что делают другие команды (а их было почти 90): кто-то программировал дронов, делал 3D-модели соседних улиц, писал софт для распознавания чеков, и многое другое.
Каждой команде в распоряжение предоставляется стол, 6 стульев, один пилот, неограниченные кола, кофе и энергетики, а также время от времени предлагают разнообразную еду.
рабочее место хакера
Идея
Среди множества вариантов мы остановились на идее делать клуб парковок для велосипедистов. Чтобы вступить в клуб, нужно купить замок, рассчитанный на два велосипеда: одна секция всегда пренадлежит хозяину, вторая же доступна для любого другого члена клуба. Велосипед — это очень популярный вариант для комьюта (commuting — перемещение из дома на работу и обратно) там, где я сейчас живу, а парковка велика становится актуальной проблемой, потому что куда бы ты ни поехал, приходится всегда возить с собой замок (зачастую весьма тяжелый), чтобы обезопасить свою собственность.
замок на два велосипеда
С технической точки зрения наскоро сделанный прототип — это конструкция из соплей и палок из пластиковых водопроводных труб, в которую встроена Arduino, умеющая открывать и закрывать замок. Она подключена к облаку и ожидает управляющих команд. Пользователь управляет замком, отправляя СМСки, либо через мобильное приложение. Это приложение также умеет находить ближайшую свободную парковку и строить до нее велосипедный маршрут.
В качестве замка для прототипа выбор пал на линейный актуатор. Обычно их используют для сельскохозяйственной техники, автоматизации промышленности и умного дома.
У нашего был запас хода в 5 сантиметров, и этого как раз хватало, чтобы зафиксировать велосипедное колесо между трубами. "Подружить" его с Arduino оказалось несложно: в Интернете легко нашлась соответствующая схема:
Отбракованные фичи
С одной стороны 24 часа — не такой уж и большой срок, с другой на выступление отводится всего лишь минута, поэтому важно фокусироваться на основных фичах и отбрасывать второстепенные. Из нереализованного мы хотели "научить" наш замок оповещать владельца припаркованного велосипеда о надвигающемся дожде, а также добавить в мобильное приложение месседжинг, чтобы можно было оперативно узнать, когда другой член клуба освободит заинтересовавшую вас парковку.
Проблемы
В нашей команде не было человека, который бы профессионально занимался железками, ну или хотя бы имел к этому склонность. Сделать хороший дизайн — не вопрос, написать код под любую платформу и на любом языке программирования — с удовольствием, а вот паять или хотя бы иметь отдаленное представление, как собирать электронные схемы, — это не про нас. Разумеется, мы столкнулись с массой проблем с "железом", и ниже далеко не полный их список.
GPRS модем
В первоначальной схеме планировалось подключить Arduino к GPRS-модему для обмена данными с облаком. Этим мы бы убили сразу двух зайцев: спрятали бы все микросхемы и провода в трубы, что сделало бы нашу конструкцию визуально гораздо лучше, и смогли бы не использовать местный WiFi, который часто сбоит на таких мероприятиях. Однако, когда мы разложили микросхемы, то почти сразу же поняли, что на то, чтобы просто подключить их друг к другу и заставить работать, может потребоваться больше 24 часов без каких-либо гарантий на успех. Это пример "хорошей" проблемы, когда сразу очевидно, что ничего путного не выйдет и нет соблазна потратить драгоценное время напрасно.
Arduino и WiFi
В качестве замены GRPS мы бы с радостью воспользовались расширением Arudino WiFi Shield, если бы смогли его оперативно найти и купить, но увы. Однако, нашлась другая плата — WEMOS D1. Если коротко, то это Arduino с WiFi на борту. У меня ушло не больше получаса на то, чтобы с ее помощью сделать первый успешный HTTPS запрос, однако радость продолжалась недолго — после нескольких часов безуспешных попыток "научить" WeMOS управлять замком, выяснилось, что у этой платы не только отличается порядок входов и выходов от оригинальной Arduino (соответствие в Интернете нашлось за пару минут), но из-за поддержки WiFi набор доступных разработчику интерфейсов был урезан, и либо мы были обречены с самого начала, либо я оказался слишком криворуким. Другими словами, тут тоже ничего не вышло.
Arduino и Arduino
Хорошо: раз у нас есть Arduino, которая умеет управлять замком, и WEMOS, который умеет ходить в Интернет, буквально напрашивается решение их "подружить". На несколько неудачных попыток было потрачено еще минут 30. Итого за первые семь часов хакатона успехами мог похвастаться только дизайнер, который успел разработать и опубликовать лендинг, нарисовать экраны мобильного приложения и подготовить описание нашего проекта на сайте Дизрапта. Желание инженеров сделать все красиво и элегантно уступило стремлению сделать "хоть как-нибудь, лишь бы оно уже наконец-то заработало".
Arduino и MacBook
В итоге мы вернулись к самому простому и неизящному варианту: макбук поллит облачный сервис и отправляет Arduino управляющие команды через USB. Казалось бы, что может быть проще, но и тут словили граблей: через Arduino IDE команды отправлялись, а скриптом — нет. К счастью, баг получилось найти и исправить достаточно быстро, когда я догадался открыть исходники Arduino IDE на гитхабе и найти соответствующий фрагмент кода. Ура! За 8 часов собрали работающий прототип!
Хрупкость
Схема состояла из 11 проводов, и каждый из них мог стать точкой отказа. Вообще говоря, точек отказа у нас и так хватало с учетом использования стороннего облака, хакатонского WiFi и мобильного приложения, написанного на коленке за пару часов. Мы постарались по-максимуму укрепить конструкцию, поэтому следующие 3 часа паяли, изолировали и клеили. Думали, что обойдемся 30 минутами, но сильно недооценили свои "способности".
процесс
Софт
Работу с "железом" мы с горем пополам закончили к часу ночи. Хотя впереди нас ждало еще много работы, мы почуствовали огромное облегчение. Оба инженера нашей команды профессионально разрабатывают софт более 10 лет, поэтому за следующие 3 часа мы разработали и задеплоили в облако необходимые веб-сервисы и разработали мобильное приложения, можно сказать, не приходя в сознание. После нескольких успешных end-to-end тестов я все же пошел спать в 4 утра, а коллега решил заниматься шлифованием приложения "до упора".
Демонстрация
Я проснулся чуть раньше 9 утра. Утро получилось очень сумбурным: как всегда в приложении всплыли шероховатости, плюс надо было что-то где-то срочно дозаполнить, плюс дали совсем немного времени на сбор вещей и освобождение стола. За всей этой рутиной время пролетело очень быстро, и настало время демонстраций.
за 30 минут до начала
Хотя нам и достался 33й номер, дополнительного времени это не давало: команды выстроились в блоки по 20 штук и бодро двигались по направлению к сцене. На самой сцене одновременно находилось сразу 5 команд: у каждой было по минуте на выступление, и, когда одна заканчивала, сразу же начинала другая. За эту минуту нужно представиться, рассказать и показать свой продукт. В процессе выступления можно использовать камеру, которая проецирует изображение с телефона или планшета на большой экран. С технической точки зрения организация показа была устроена выше всяких похвал, и я не могу вспомнить ни одного примера, когда у какой-либо команды возникла проблема с демонстрацией по вине организаторов.
Хотя команды шли друг за другом достаточно бодро, путь до сцены показался мне вечностью — по пути я изо всех сил старался обезопасить наш прототип, чтобы не дай Бог никто его случайно не задел и не сломал — починить мы бы уже не успели. За минуту до нашего выступления я поставил конструкцию на сцену: замок по-ближе к краю, ноутбук — где-то в двух метрах, у ног ведущего, чтобы он был не так заметен. В самой демонстрации я непосредственного участия не принимал, поэтому мне лишь оставалось ждать за кулисами. Вообще говоря, актуатор — штука весьма шумная, и я думал, что услышу, заработал он или нет. Это был самый важный момент в этих 24 часах: если все сработает — у нас очень хорошие шансы на победу, если нет — можно сразу ехать домой. У фантазеров нет шансов на победу в таких конкурсах. Я так ничего и не расслышал: слишком много шума и звуков было вокруг сцены. Не ожидая ничего хорошего, я вернулся на сцену ровно через минуту, чтобы помочь убрать конструкцию, где и застал последние мгновения открывающегося замка — главное свидетельство нашего успеха!
Не успели мы уйти со сцены, как к нам подошел журналист и попросил об интервью, — хороший знак, значит мы как минимум в шорт-листе!
Победа
Следующий час мы провели в зрительном зале, смотрели работы других команд, переписывались с друзьями. Наконец, пришло время подведения итогов конкурса и награждения, где мы узнали, что наш проект выиграл номинацию "За развитие местных и региональных сообществ".
Это был потрясающий опыт, и я надеюсь, когда-нибудь получится его повторить!
Take aways
- TechCrunch Disrupt Hackathon, New York, 13-14 мая 2017 года
- 87 команд
- $36,404 призовой фонд
- 7 номинаций
Репозиторий: https://github.com/yury-dymov/disrupt
Статья про проект: https://techcrunch.com/2017/05/14/bikeparking-club-brings-connects-a-social-network-to-bike-locks-in-a-city/
P.s. Как всегда, буду рад получить личное сообщение с найденными ошибками и опечатками.
Комментарии (24)
saroff
26.05.2017 17:34Замок только переднее колесо лочит? Снять колесо — дело пары секунд. Существуют специальные крепления для колеса предотвращающие быстрое снятие, но их не всегда можно найти.
Если бы в замок был встроен хотя бы какой-то датчик вибрации с сигнализацией, еще куда ни шло, но я бы все равно не стал оставлять свой велосипед под такой сомнительной защитой.yury-dymov
26.05.2017 18:35Любой замок можно взломать. Мы думали об этом и пришли к выводу, что если продавать замок чуть дороже и заложить стоимость страховки, а также интегрироваться с городскими камерами, то это решило бы проблему. Это хоть и важные моменты, но вторичные, поэтому они не вошли, ни в речь, ни в демо.
decomeron
26.05.2017 17:34А почему бы приз давать не за саму разработку, а например, по прошествии года реализации ее на Родине, хотя бы в одном городе. А то разработок много, а где они все потом? Но все равно поздравляю! хоть где-то мы впереди планеты всей!
yury-dymov
26.05.2017 18:37Спасибо за поздравления! Хакатоны и стартапы — это разные виды спорта :) Задачи, которые решает хакатон я описал выше: https://habrahabr.ru/post/329500/#comment_10236650
MonstreekS
26.05.2017 17:34идея с клубными парковаками прикольная (напоминает правда с вай фаем), но вот реализация чет не очень
колеса у велосипедов легкосъемные, инструмент не требуется, то есть устройство защиащет только одно переднее колесо, а не велосипед, который легкий и его быстро унесут
без инструментов можно снять оба колеса и седушку, тут как минимум нужно три тросса с собой, плюс четвертый крепить самое дорогое — раму к парковочному месту
Legantmar
26.05.2017 17:34не совсем понял идею проекта.
это сингл парковка на 2 места? или этих устройств может быть гораздо больше — велопаркинг?
а почему нельзя придумать за год проект («в гараже и никому не показывать»), сделать работающий макет.
а на хакатоне просто симулировать бурную деятельность собирая уже отработанный заранее проект?
p.s. с помощью каких библиотек делался дизайн? приложение написано на джаве под андроид?Anarions
26.05.2017 18:07«а на хакатоне просто симулировать бурную деятельность собирая уже отработанный заранее проект?» — порой так и случается. Отличить довольно сложно — во многих хакатонах организаторы активно мониторят процесс разработки.
Legantmar
26.05.2017 18:12Тогда такие «конкурсы» с плавающими заданиями вызывают массу вопросов и подозрений.
Если бы давали набор определенных железок (список известен заранее) и задание (неизвестно заранее), что из них собрать (в соответствии с ТЗ организаторов), тогда это был бы честный конкурс.
Ну а далее оценивать в разных номинациях:
— кто быстрее
— у кого код красивее
— у кого багов меньше
— у кого дизайн симпатичнее
— у кого функциональность
— у кого практичность и удобность
и пр. и др.Anarions
26.05.2017 18:14Разные номинации обычно и оценивают. Но вот отсутствие наработок заранее очень сложно проверить.
yury-dymov
26.05.2017 18:53Да, так и есть, номинации только выдают не по особенностям реализации, а по бизнес составляющей, например, "лучшее дополнение SmartCity", "развитие местных и региональных сообществ" и так далее. Баги и красивый код никому не интересны.
Этот конкурс куда ближе к фигурному катанию, где много субъективности, чем к бегу на 100 метров, где все делают одно и тоже, и надо понять, кто делает это лучше. От такого конкурса куда больше пользы: https://habrahabr.ru/post/329500/#comment_10236650
Дома имеет смысл придумать идею и подумать, что нужно для ее реализации — не больше.
shurupkirov
27.05.2017 08:05Да, это уже как раз соревновательный процесс, как на личный зачет, так и на командный
yury-dymov
26.05.2017 18:451) На хакатоне мы не можем исходить из предположения, что "город, государство или компании купят у нас наш продукт", поэтому мы работаем с конечным потребителем. Мы можем обосновать два места, можем сделать модель на 3 и 4 (если вся семья на колесах), но вот больше — вряд ли
2) Можно прийти на хакатон со всем готовым, но, организаторы, жюри, журналисты и спонсоры ходят в процессе творения, смотрят, общаются, помогают, задают вопросы, — сложно будет их всех обмануть. Ну, и люди примерно представляют, что можно сделать за сутки, а что — домашняя работа. Да, и если честно, я смогу найти, как более выгодно время потратить :)
3) В статье есть ссылка на гитхаб, где лежит исходный код приложения, оно под iOS.Legantmar
26.05.2017 19:44Юр, спасибо за ответ!
еще раз с победой!
в следующий раз посмотрите в сторону esp8266 или esp32
shurupkirov
Все конечно отлично, но дальше-то что:
деньги на бочку — прототип на свалку?
В чем полезность данного мероприятия, кроме отработки работы команды в стрессовой ситуации?
asivura
И безмерная слава ;-) Мне нравится процесс придумывания идеи и воплощения ее в каком-то виде. Не всегда же только код писать, вот с железом поигрались чуть-чуть.
shurupkirov
ну это отлично. а кто мешал командой собраться тут в России и сделать тоже самое?
P.S.: Я без тени наезда. Тема хакатонов для меня темный лес. Часто слышу и читаю про них, но сути до сих пор не понял
yury-dymov
Интереснее выступить на чемпионате мира, чем на чемпионате России, если есть такая возможность
shurupkirov
не-не-не. Вопрос был не про чемпионат в целом. А в то, кто мешал придумать, реализовать и запустить проект с замками здесь в России
Anarions
Мотивация (херачить код 24 часа в простой день — довольно сложная задача. А формат хакатона ставит в рамки). Шанс на полезные контакты (и разработчики, и инвесторы).
yury-dymov
Во-первых, это интересно — есть возможность посмотреть, что делают другие, пообщаться и познакомиться, лучше понять, куда движется мир технологий и что будет сильнее востребовано в следующие пару лет.
Во-вторых, выигранный хакатон — это очень сильный маркер как для работодателя, так и для инвестора, что перед ними человек, который вероятно обладает набором ценных качеств: целеустремленный, способный придумать и воплотить в жизнь и продать стоющую идею за ограниченный промежуток времени в стрессовой ситуации, умеющий работать в команде. Это выигрышная история для обеих сторон: исполнителям проще доказывать свою состоятельность, заказчикам — делать хороший выбор.
В-третьих, по статистике после хакатона лишь 2% проектов воплощается в жизнь, но это лишь вершина айзберга — этот опыт поможет кому-то начать свой собственный небольшой проект или сделать полноценный стартап. Также отличный способ посмотреть друг на друга в стрессовой ситуации и понять, имеет ли смысл делать совместно что-то более серьезное.
В-четвертых, это отличная история для спонсоров и индустрии в целом: у Cloudflare до дизрапта было меньше 100 клиентов, после — 5000. Неплохо для одного дня, не так ли?
shurupkirov
Т.е. в целом получается, что хакатон — "смотрины невест", куда съезжаются "женихи" (инвесторы, работодатели)