будни

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

Отличная маленькая книжка, если близкие оказались в застенках — «Сказать жизни Да» Виктора Франкла, другие переводы — «Человек в поисках смысла» и «Психолог в концлагере».

На Флибусте есть электронная бесплатно, рекомендую купить бумажную про запас.

Продаю классный VPN для бизнеса за 300 тысяч рублей в год.

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

Работает VPN на Windows, Mac, Linux, телефонах и планшетах Android и iOS, программа устанавливается по ссылке, справится каждый.

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

Ограничение на объем переданных данных — 20 терабайт в месяц. Чтобы использовать весь этот объем, нужно 12 людям непрерывно весь месяц смотреть ютуб в высоком разрешении или 180 людям — по 2 часа каждый день. В общем, это — много, практически неограниченно.

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

Стоит такой сервер 300 тысяч рублей за год, доступ предоставлю в течении пары часов после оплаты. Пишите мне в личку @samatg в телеграме, постараюсь ответить оперативно. Предложение ограничено.

Похвастаюсь, что мы с Федей наконец-то наняли ассистента и поделюсь одной стыдной тайной.

У Феди все задачи для ассистента «нормальные» — делегирует документооборот в «школе сильных программистов» и т. д.

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

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

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

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

Так вот, знайте, если у вас похожая трудность — вы не одни; это может и не нормально, но мы с этим живем и ОК. Такой вот каминг-аут 🙈

Жутко разозлился сегодня на гостя во время интервью для подкаста. Я спросил о деньгах, и от того, что и как ответил гость, меня просто вынесло. В самом начале 2-часового интервью. Конечно, гостю я это прямо не высказал (это всё-таки не психотерапия, да?!) и весь первый час терял время.

Формально я задавал вопросы, гость типа отвечал, слова говорились, но гость не раскрывался, истории не рассказывал.

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

Тут у меня что-то кликнуло, я понял, что дело не в плохости гостя, а в том, что я не принимаю его. Более технически — что-то из того, что он сказал, так сильно срезонировало во мне, мне стало так больно, что я защитился от этого, от него, отгородился.

И произошло чудо. Я слова не сказал (думаю, я изменился в лице), как гость ожил — у него изменилось лицо, он начал говорить с интересом, рассказывать истории. Интервью заработало!

Про чувства может показаться очень абстрактной, даже эзотерической материей, но «работает или не работает интервью» — штука объективная, четко видная.

Выводов у меня куча, но оставлю их при себе, хочу просто поделиться историей. Уж очень она меня впечатлила.

Rawg.io ищет третьего фронтенд-разработчика. Ключевые слова: React, микрокоманды, Remote.

Мы делаем лучший сайт про видеоигры; у нас есть IMDb-часть со страницами игр и социальная часть, где можно собирать коллекции, писать обзоры и подписываться на похожих игроков. В ближайших планах дать возможность редактировать страницы игр обычным игрокам прямо на сайте (сейчас используется внутренняя админка) и прокачать SEO.

Под капотом это респонсив SPA React приложение с SSR. JS потребляет красивое REST API, которое готовится бэкендерами на Python (Django DRF) специально для сайта.

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

Codebase свежий (первый коммит два года назад) и написан хорошими разработчиками, жесткого легаси или костылей там, пока, нет. Github, ci, рабочее окружение разворачивается одной npm-командой. Подключен линтер, в проекте настроен webpack, начали писать тесты, используется связка Redux + Recompose. Верстка: stylus, flexbox, css grids, bem. Дизайнеры и даже продакт раньше верстали, так что понимают ценность переиспользования компонент и естественные ограничения веба.

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

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

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

Помните, телеграм объявлял конкурс на лучший Instant View Templates для тысячи сайтов? Они всё никак не предоставят результаты и не запушат эти шаблоны в продакшен.

Пока что, единственный способ показать свои страницы в Instant View — запостить их по хитрой ссылке t.me/iv?url=...&rhash=.... Именно так мы и хотим сделать для запуска красивой «Вечерней Медузы » в телеграме. На конкурс прислали почти 150 шаблонов, казалось бы — бери и пользуйся хоть сейчас. Проблема в том, что rhash шаблона знает только его создатель.

Уважаемые авторы, подавшие свои шаблоны на конкурс — скиньте мне свой исходный код, пожалуйста. Приславший лучший шаблон до завтрашнего вечера (18:00 по Москве) получит неизменную бутылку рижского бальзама и мега-набор стикеров (физических, не телеграмных).

Проверить свой шаблон можно на тестовом материале: https://meduza.io/brief/2017/07/17/testovaya-vechernyaya-meduza-so-vsemi-vozmozhnymi-vyrazitelnymi-sredstvami

Как не уронить свой сервис под нагрузкой, на примере Signal.

Люди массово переходят из вацапа в Signal. Серверы Signal не выдержали и совсем лежали почти 14 часов, а испытывали серьезные трудности больше суток. Не лучшее время, чтобы падать :( Официальный твиттер сигнала при этом хранил молчание, будто это не модный стартап, а какая-то древняя корпорация. Жаль. Надеюсь, позже они опубликуют подробный разбор, что случилось.

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

В одном проекте именно так мы и сделали. Всё было хорошо, пока серверу не стало плохо на пару минут. Если обычно на сервер приходили 100 запросов в минуту (полтора запроса в секунду), то за три минуты скопились 300 запросов и теперь, стоило серверу очухаться, как ему насыпали все 300 запросов в одну секунду. То есть для сервера это выглядело как рост нагрузки в 200 раз и он опять ложился под нагрузкой. Очень неприятная ситуация. Мы сами себя задидосили, своими же собственными мобильными приложениями. 🙈

Есть две компоненты решения этой проблемы:

🛑 Первая: сервер должен уметь ответить «довольно!», и клиенты должны перестать повторять запрос, если получили такой ответ. Интересно, что именно этой функции в Android-клиенте Signal не было и они добавили её во время аварии.

⏱ Вторая, более сложная и интересная, но тоже классическая: exponential backoff (экспоненциальная задержка). Идея очень простая: если сервер не ответил в первый раз — ждем 1 секунду и повторяем запрос. Во второй раз — ждем 2 секунды, в третий — 4, в четвертый — 8. То есть с каждой неуспешной попыткой, даем серверу больше времени прийти в себя. У Signal эта функция реализована, но во время аварии они добавили jitter — небольшую случайную задержку, чтобы клиенты не набегали на серверу толпой, через одинаковые интервалы времени после его падения, а нагрузка была более плавной. Обычно, в этом же коде реализуют ещё паттерн circuit breaker, когда после определённого числа ошибок «выбивает пробки» и запросы прекращаются совсем.

Используйте оба приема и будьте здоровы!

💭 Есть твит и телеграм-пост в популярном канале, в которых утверждается, что причина падения сигнала — в само-дидосе (мол, анекдот). Это маловероятно. Во первых, exponential Backoff в сигнал внедрили больше 2 лет назад и он здорово распределяет нагрузку; во вторых, изменения коснулись только Android клиента. Не верьте советским газетам, читайте первоисточники.

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

Предлагают прислать свою интерпретацию законов, если мы считаем, что это ошибка.

Это, конечно, не ошибка, а просто наплевательское отношение к клиентам. Санкции есть на экспорт товаров двойного назначения (есть список и чатилка в них не входит) и на сотрудничество с лицами, перечисленными в списке (там всякие институты и заводы по разработке и производству оружия, онлайн-школа подготовки ЕГЭ туда не входит).

А ещё я сегодня узнал, что в Mattermost есть целый отдел соответствия экспортным ограничениям. Вот, видимо, 3 месяца анализировали законы и пришли к новым выводам.

Имейте в виду, если пользуетесь облачным Mattermost ну и вообще любым облачным софтом. Делайте регулярные автоматические бэкапы и проверяйте восстановление из бэкапов.

Ищете программиста? Я начинаю с того, что пишу описание вакансии, которое не стыдно показать классным кандидатам. Во время редактуры становится яснее, кто же нужен.

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

Вопросы, на которые я стараюсь ответить в тексте:
- для чего вы ищете человека
- с кем он будет работать
- кто будет пользоваться результатом его труда
- сколько вы хотите платить за работу
- есть ли какие-то особенные условия, о которых стоит знать?

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

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

Новости бизнеса: договорились cделать аудит крупного клиента. Индустрия, о которой я давно мечтаю, и задача интересная — будет о чем рассказать детям потом. Ну и вам похвастаться.

Это корпорация, так что всё согласуется-пересогласуется. На последнем этапе, договор заметил генеральный директор и чуть не завернул буквально формулировкой «что это за Федя и Самат и зачем они нам нужны?!». Пришлось объяснять. Контрагент предлагает переименоваться в ООО «Техэкспертиза». Говорит, так будет меньше проблем.

Завести второе юрлицо, специально для работы с корпоратами? 🤔

P.S. В чате советуют «МосГлавТехЭкспертиза»! 🎩

Какое имя самое солидное?

Техэкспертиза25%
ГлавТехЭкспертиза12%
МосГлавТехЭкспертиза12%
РосГлавТехЭкспертиза51%
4 064 ответов