будни

Мы с клиентом запустили стартап. Он помогает малым локальным бизнесам — кофейням, барбершопам и другим — зарабатывать по модели, которую применяют Amazon и Яндекс.

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

В новой статье делимся, как у нас получилось успеть всё это за 6 месяцев при том, что требования постоянно менялись (стартап!)

Хотите запустить проект с нами? Пишите в личку @samatg или оставляйте заявку на сайте.

Отдел разработки Медузы ведет неравный бой с эмбедами фейсбука, инстаграма и твитера уже третий год. Постоянно что-то меняется и ломается.

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

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

А потом прочитал вот эту статью «истерия по поводу GDPR» и понял, что для малого и среднего бизнеса юристы по поводу GDPR нафиг не сдались.

Я лично двигаюсь по отличному чеклисту и интерактивному тесту от UK ICO (нет, Британия не выпускает криптовалюту, это Information Commissioner's Office, аналог, как ни странно, Роскомнадзора).

Ну и самое важное — acting in good faith. У меня сильно наследие российских реалий, где нужно соответствовать букве закона, иначе любой регулятор (при желании/заказе) тебя нагнет и 7 шкур снимет. Все, с кем я общаюсь про GDPR повторяют — пойми дух закона, действуй по нему, если не уверен — попроси помощи у своего местного регулятора. Если посмотреть со стороны, «взглядом марсианина» — так и должно всё работать.

Rawg.io ищет второго бэкенд-разработчика. Нас 3 программиста и мы делаем лучший сайт про видеоигры (всего 14 человек в компании).

TL;DR Работа, Python, Django, DRF, микрокоманда, Remote.

Под капотом у нас Python 3.6, Django 2, Django Rest Framework, Postgres, Celery, Docker на бэке и React на фронтенде. У нас есть стандартный CRUD (сейчас около 20 тысяч пользователей в месяц) и нестандартные задачи скрепинга/импорта/мержа игровых данных из XBox Live, PSN и Steam с последующим миксом видео и фото из Youtube, Twitch и Imgur. Редакторы активно используют Django Admin для редактирования базы игр (52 тысячи, будет расти до 200 тысяч).

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

Мы работаем по модели Basecamp, когда в начале 2-4 недельного «цикла» микро-команда — фронт + бэк и дизайнер получают хорошо сформулированную бизнес-задачу с примерными макетами, а дальше мы минимально дергаем команду разработки, чтобы не отвлекать и не мешать. Коммуникация происходит в Basecamp и немного в Slack, все Remote.

Из важного — codebase свежий (первый коммит год назад) и написан одним человеком (Антоном, который сейчас единственный бэкендер), жесткого легаси или костылей там (пока) нет. Мы используем стандартные тузлы, такие как github, docker, ci (есть даже blue green). Рабочее окружение разворачивается парой команд (используется docker). Мы пишем unit-тесты, но не маниакально, а для удобного тестирования и контроля работоспособности.

Мы ищем человека с опытом программирования на Python и Django (опыт работы с DRF и Celery будет большим плюсом), чтобы не терять время на изучение азов. При этом мы готовы рассмотреть как опытных, так и начинающих кандидатов. Нам важно желание приносить пользу пользователям и бизнесу, а не «придумывать красивый код ради кода»

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

Пишите на python@rawg.io или мне в личку.

Руки не доходили, но тут вот дотюнили RSS до фен-шуя. Требование, чтобы eclosure были доступны по HTTP, (S нельзя) — самое классное, которое я встречал в последнее время (это был сарказм)

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

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

Google Chrome начал показывать пометочку «не безопасная страница», если вы заходите на сайт без HTTTPS-шифрования. Я был большим сторонником HTTPS, но чем дальше это всё двигается — тем меньше мне нравится эта история.

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

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

Сегодня Chrome показывает серенькое уведомление, которое никто не замечает (как раньше не замечали зеленый замочек HTTPS). Но что они решат сделать завтра? Покажут большой красный страшный попап или запретят доступ к сайту без HTTPS совсем?

HTTPS решает две проблемы: 1) массовая слежка за тем, какие страницы мы смотрим 2) кража паролей в публичных WiFi сетях.

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

При этом, для Google HTTPS нужен также совсем по другой причине. Провайдеры могут легко вставить свою рекламу на любую не-https страницу. С таким же успехом они могут вырезать рекламу Google с не-защищенных веб-страниц. Недавно они даже начали это делать. С помощью повсеместного введения HTTPS Google устраняет эту опасность раз и навсегда. Money talks. Чувствую, что это теория заговора, надеваю шапочку из фольги.

Насчет журналистской солидарности, в отсутствии которой меня уличают (https://t.me/mediasrachi/736) . Журналисты не при чем (неуиновны).

Налицо или халтура разработки: не протестировали ничего толком, не подготовились к нагрузке; или некомпетентность руководства, когда к разработке приходят с запросом «сколько тебе нужно времени, чтобы это было готово завтра?».

Извините, если выглядело как наезд, это не так. Это была серия постов «смотрите, как не нужно делать».

Запуск больших проектов — сложно и больно, но зато, в теории, есть время подготовиться. Супер-важно, чтобы руководство понимало, что «у меня всё работает» не равно «можно запустить на 100 тысяч пользователей». Ответственность разработки — объяснить важность тестирования. Вот вам бесплатный хороший кейс, на который можно ссылаться.

Давно ничего не писал и чувствую необходимость перед вами объясниться.

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

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

Дорогие коллеги из Медузы подарили мне, на прощание, первую в моей жизни приставку — Nintento Switch. Я почти каждый вечер погружаюсь в мир Зельды — про это я вам обязательно расскажу как-нибудь подробнее.

Но сегодня у меня совсем другой пост: вакансия.

Rawg.io ищет продакт-дизайнера. Мы строим лучший в интернете сайт про видеоигры.

Игрокам мы дадим классные рекомендации новых игр (на основе кроссплатформенных профилей, этого пока ни у кого нет), общение с со-игроками, возможность задать вопрос разработчикам любимой игры. Создателям игр — прямую связь с игроками и супер-точную рекламу новых игр.

На борту уже несколько тысяч игроков, 50 тысяч (!) игр, импорт профилей с 3 главных платформ (Steam, Xbox и PlayStation). Впереди бомбическая лента новостей (на основе того, во что играл ранее), UGC-редактирование базы и вознаграждения за достижения в играх. Самая настоящая внутренняя экономика, где игроки получат криптовалюту и плюшки за свои ачивки.

Вы станете вторым дизайнером в команде (всего у нас сейчас 14 сотрудников). Один дизайнер не вытягивает ни по количеству смыслов, ни по скорости отрисовки (мы любим красоту). Мы ищем не винтик в большой отдел, а профессионала, способного работать в маленькой команде.

Вы будете придумывать поведение и визуальную составляющую продукта вместе с сооснователем проекта Алексеем Горностаевым (ex-CPO kanobu) и реализовывать его в жизнь вместе с классной командой разработки во главе с техдиром Саматом Галимовым (ex-CTO Медузы). Вашим напарником будет Андрей Кулагин.

Мы — remote команда. У нас есть коворкинги в Москве, Вильнюсе и Риге, где порой мы собираемся вместе.

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

Напишите нам на designer@rawg.io. В письме хочется прочитать про вас, ваши последние проекты и ваш вклад в них. Пара мыслей про Rawg также не будут лишними.

P.S. На собеседовании часто слышу «работал в классном проекте, потом деньги закончились и стартап закрылся». Мы уже подняли 4 миллиона долларов и уверены, что соберем планируемые 10 (щепетильно выбирая инвесторов), так что с этой точки зрения мы в безопасности :)

P.P.S. Успешная рекомендация получит классные латвийские конфеты и самую большую бутылку рижского бальзама лично от меня.

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

Каждая игра — отдельное приложение. Они встраиваются внутрь сайта Медузы как iframe. При этом мобильные приложения открывают игры как webview. Получается следующая схема: нативное приложение → webview с сайтом → iframe с игрой.

При начале дрега игра посылает postMessage сообщение сайту, он в свою очередь дергает java через jsBridge. Приложение блокирует скролл для этого webview. На дроп прокидывается обратное событие на разблокирование скролла.

И всё это — для красивых тестов.