Проснувшись однажды утром… (нет). Проснувшись как-то вечером… (нет!). Короче, проснувшись однажды на работе солнечным утром (вот уже провокационно звучит), и протерев глаза от производственной рутины, подумал я о том, что команда наша — конечно великолепная, но технологически несколько узковата… “И надо бы покодить на чем нибудь другом!” — блеснул я оригинальной мыслью. И вот мы сделали собственный хакатон, который заточили не по тематике, а по технологии. Получилось, сразу скажу… неплохо.
После короткого анализа нашей текучки, условия были поставлены следующие:
- 3 полных дня на выезде с ночевками (не отвлекаться!);
- Обязательно в полном составе;
- Формат — стандартный (от естественных идей, через естественный их отбор, и вперед — к реализации);
- Идеи проектов — ограничили веб-сервисами (десктопы категорически не хотим), да и само по себе “программирование для людей” — в целом приятное дело.
Технологические условия:
- кодим на чем угодно, только не на нашем “рутинном” стеке (php / java / python / mongodb / *sql / мобильники / пайка микросхем / программирование микроконтроллеров);
- что означало: [node.js] [go] [erlang] [redis] и любые базы [кроме sql] и поднадоевшей уже [mongodb];
- Фронтенда у нас совсем нет, поэтому приглашали друзей/знакомых, но они почему то не присоединились (выходных пожалели — и зря!) — поэтому на фронтенд-ные технологии не ориентировались вовсе;
- Подготовка по стеку минимум на уровне ‘hello world’ для всех участников;
Алкогольныемотивирующие напитки за свой счет.
Первое — надо было выбрать идею для реализации. Несмотря на предстоящие объяснения и прочее умное агитирующее бла-бла, выражения кодерских лиц на 97,43% было тождественно с “WTF, что я здесь делаю?”.
Но уже через несколько минут первые набросы на вентилятор сделали свое дело — поток дружественного троллинга различной толщины активировал творческие доли
Идеи были разные, лишенные какого либо бизнес-смысла (не для бизнеса мы все это затеяли).
Но все они — из области нанесения добра и улучшения (с дальнейшим покорением) интернет-ойкумены:
- оптимизация продаж билетов ржд;
- несколько вариантов гениальных замен для ужасных форм обратной связи на сайтах;
- социальные сети на звуковых сообщениях;
- несколько онлайн-много-человек-игр (мафии/покеры/etc со значительно улучшенными для онлайна правилами с видео-перепиской и системами распознавания мимики);
- муравьиные баталии (http://habrahabr.ru/post/135287/) с переносом действия на онлайн-карты Москвы (исключительная идея зла и разрушения);
- создание неангажированного и грамотного агрегатора новостей с правильным анализом популярности/распространенности;
- космически оперативная курьерская служба, по аналогии с яндекс.такси и механизмами защиты от преступных намерений
Пришло время выбора. На вторых местах — конечно же “эРЖэДэ” (самый толстый троллинг был именно тут). На первых — злые муравьиные сражения и добрый напоминательный сервис. Для разработки выбрали сначала добро, а зло (если успеем) отложили на потом :-)
Идея очень простая, но участникам интересная — сервис с открытым API, через который можно оставить заявку-напоминалку себе, или фолловеру, или группе друзей или корпоративно-административной группе, которую можно сделать периодической или назначить на какое-то время, а также механизмы защиты от использования сервиса в качестве спама, и т.п. кучка связанных фич.
Приступили к архитектурному холивару проектированию. Разумеется, каждый совершенно точно знал, “как это надо делать”, причем самые опытные скромно отмалчивались, “поглощая попкорн с колой” и наслаждаясь действием:
Схемы и варианты реализации размножались со скоростью 27 флипчартов в час:
Режиссура процесса: визуализация провайдерского масштаба доставок для напоминалок:
Команда R&D уже придумала бренд, зарегистрировала домен и приступила к расчету прибылей :-)
К обеду все было готово, а именно:
- Запротоколирована предметная область и архитектурные слои;
- Команда “ERLANG” — делает фронтовую часть и разбрасывание заявок-напоминалок по предметной области (людям/группам/фолловерам) задуманного сервиса;
- Команда “GO” — реализует многопотоковое считывание данных из предметной области и архи-нагрузочное разбрасывание напоминалок по провайдерам доставки;
- В качестве базы взяли Redis;
- Команда “СИСАДМИН” — готовит софт на боевых серверах и бездельничает в ожидании задач по деплою;
- Команда “R&D” уехала искать большие чемоданы для денег :-)
- Осмысленности в выборе технологий под задачи — не было никакой — участники хакатона на данных языках раньше ничего не делали и с Redis-ом не работали. Но именно в таком развитии событий и был задуман хакатон :-)
После обеда — полезные для продуктивной работы серых клеток — моционы.
Табличка “для детей до 14 лет” никого не смутила, тем более что ни одного человека в заданном диапазоне в округе не наблюдалось :-)
Команды сформированы, задачи ясны — за работу!
Команда “GO”. Тот, кто подготовился чуть больше чем ‘hello world’ — закономерно популярен и величественен :-)
В команде “ERLANG” весело. Они еще не подозревают о всей тяжести последствий их выбора :-)
Периодически пытались вспомнить все то, что было нагенерено в идею на старте и ввиду разницы пониманий, приходилось собирать все “в реальную для реализации конкретную кучку”:
В фоновом режиме общий скайп-чат затягивает на темную сторону силы:
Вечерняя программа.
Футбол в нынешнем сезоне лучше играть, чем смотреть:
Реактивные испытания:
Второй и третий день. Только кодинг, только хардкор: для чего меняем помещение и обустраиваемся с комфортом:
Затылки команды “ERLANG” умны и сосредоточенны:
Вероятно, кодят API для фронта:
Робкая история коммитов “от новичков в жанре”:
Команда “GO” ищет коннект в Redis:
… и найдя, сочиняет романтические японские стихи, в которых каждая строка начинается с волшебного “go”, наделяется ведомым только автору смыслом, посвящая их прекрасным и доступным горутинам :-)
По ходу дела — парочка ноу-хау.
Например, “nosql-paper-database”, версия “flomaster”.
- скорость записи — 4 фломика в час
- скорость чтения — световая
- скорость понимания — нулевая :-)
А теперь всем бояться… ОНО компилируется:
ОНО что-то делает:
При этом Асинхронно и Параллельно!
И достаточно быстро…
Итоги:
- Придумали и сделали сервис (даже слегка работающий), на ЯП-ах, ранее нам неведомых.
- Жалейте те, кого мы звали, но вы не пришли :-)
- Как нибудь повторим.
Автор: mikanoz