# Понедельник 85 твитов
Всем привет! На этой неделе с вами буду я, @dzaporozhets :)
13:40Меня зовут Дмитрий. На текущий момент я CTO компании GitLab
13:42Будем общаться на тему open source, remote work и немного о руби :)
13:42@rubyunderhood а почему на Ruby?13:49
GitLab написан на Ruby по 2м причинам: скорость разработки и я тогда работал рубистом :) @dcromster
13:51Благодаря Ruby + Rails я смог набросать первую версию GitLab меньше чем за месяц вне рабочее время
13:52@rubyunderhood а как у вас организована remote work?14:01
Вся команда GitLab работает из дома, Starbucks и тд. @freemanoid321
14:02У нас есть маленький офис в Сан-Франциско для почты и гостей но он обычно пустой
14:03Все общение или асинхронное (issues, emails) или видео звонок в Hangouts
14:04в команде GitLab 35 человек. Географически в основном US, Европа. Но есть из Африки и Южной Америки. @anton_davydov
14:09@rubyunderhood а можешь подробнее про команду рассказать? Сколько, от куда и тд14:10
Инженеры и дизайнеры в основном из Европы. В штатах только Sales и маркетинг
14:14@rubyunderhood а из постссср стран (или русскоговорящих) много инженеров?14:15
Из постссср инженеров не много. Рубист и пару дизайнеров. В основном по причине "так вышло"
14:19Думаю будет больше со временем. Важен разговорный английский тк вся команда общается исключительно на английском
14:19@rubyunderhood как держите команду в "тонусе"? Ежедневные видео-митинги, спринты, репорты? Используете ли pair programming?14:20
Ежедневный митинг на 30 минут но присутствие не обязательно.
14:22Никаких репортов не практикуем. У нас релиз каждый месяц 22го числа. Можно считать это месячный спринт
14:28Pair programming отсутствует по причине: 1) все удаленно 2) каждый работает в удобное ему время
14:30@rubyunderhood если причина "так вышло", значит предпочтение отдаете разработчикам не из постссср?14:31
Предпочтение отдаем разработчикам со знанием английского и вкладом в open source. Откуда ты - не имеет значение.
14:32Насчет "тонуса". Мы не заставляем работать с 9 до 6 в офисе. О эффективности судим по merge requests. Вроде все в тонусе :)
14:37@rubyunderhood а какой английский вам нужен? Явно же не только чтение документации14:37
Английский нужен уровня "позвонил и объяснил в чем проблема"
14:39@rubyunderhood CTO продолжает писать код?14:41
С ростом компании CTO перестает писать код. Пока я стараюсь избежать этого. В этом мне помогает Product Manager. @common_disease
14:45@rubyunderhood почему приоритет у опен сорс котрибуторов? Как это характеризует человека с точки зрения тебя как СТО?14:46
99% кода в GitLab это open source. Разработчик должен писать качественный код и взаимодействовать с комьюнити. Быть вежливым и тд
14:49Поэтому если у вас есть опыт в open source - скорее всего вы нам подходите больше чем closed source разработчики
14:50@rubyunderhood а сейчас бы GitLab на чём написал?14:51
GitLab написал бы все равно на Ruby по причине скорости разработки и доступности библиотек. И open source community у руби отличное :)
14:54@rubyunderhood Что посоветуется новичку, который начал изучать Ruby/RoR, книги/курсы/другое14:55
Новичкам в Ruby советую ходить по собеседованиям и контрибьютить в open source. Есть куча гемов с мелкими багами которые вы можете исправить
14:57@rubyunderhood почему так долго открывается gitlab.com/u/dzaporozhets ? особенно user activity долго грузится15:08
Мы перевели gitlab.com на Azure потому что Amazon выходил дорого. В итоге получили кучу проблем. Но мы стараемся :)
15:10@rubyunderhood а есть ли курс, уходить от ruby? Ну например у гитлаба стали появляться микросервисы на go15:13
У нас два разработчика начали изучать Go. В итоге то что плохо работало на руби они переписали на Go. Но проект в целом остается на Ruby
15:15Приложения внутри компании обычно пишем на Rails. Быстро и работает.
15:17@rubyunderhood а что плохо работало на руби?15:18
Git over HTTP и GitLab Runner (выполняет задачи по CI) переписали на Go. Все остальное пока нормальное работает.
15:19У нас больше проблемы с файловой системой для хранения репозиторием чем с Ruby. Так что руби все еще торт :)
15:21@OhTheAnguish @freemanoid321 @rubyunderhood все в одном часовом поясе? если нет, то как сихронизируетесь?15:23
Работаем в разных часовых поясах. Пересечения в пару часов достаточно для решения срочных задач. Остальное общение асинхронно в GitLab
15:24@rubyunderhood вы пробовали использовать JRuby или Rubinius?15:31
Готовый проект перевести на Rubinius и JRuby довольно не просто. И не всегда
это даст выигрыш по производительности.
@rubyunderhood Сразу спрошу за мотивацию. Что вас двигает вперед, заставляет учиться, делать то, что не особо охото.16:07
Мотивация основана на нуждах человека. Хочешь признания - сделай что-нибудь стоящее. Хочешь большой бицепс - качайся ;)
16:13@rubyunderhood Что думаете о Elixir и Phoenix?16:14
Думаю что рубистам стало скучно а учить Clojure/Erlang было лень. Поэтому появился Elixir :) Лично я предпочитаю Clojure
16:19@rubyunderhood расскажи, почему всё-таки с puma обратно вернулись на unicorn?16:22
Мы пробовали Puma web server пару лет назад но он у нас не пошел
16:26До multithreading нам тогда было далеко. Даже если исправить само приложение всегда найдутся темы которые его не поддерживают
16:27Если добавить сюда memory leak то проще использовать Unicron + worker killer. Puma у нас съедала всю память и умирала
16:29Учитывая факт что GitLab должен работать на 2х гигабайтах ОЗУ - мы решили оставить идею с Puma
16:30К тому же гитлаб активно работает с git, shell, network и тд. Иногда GC просто не освобождал память
16:33@rubyunderhood если бы вы разрулили со своими утечками, то с пумой наверно проще было бы по памяти ужаться.17:00
Разработка должна быть прагматична. Можно долго искать утечки памяти в приложении и 300х гемах. А можно поставить worker-killer и "на потом"
17:05@rubyunderhood А как начать контрибьютить? Для меня здесь будто психолог-кий барьер.Жизнь не сталкивала,сам не знаю с какой стороны взяться17:06
Начать контрибьютить в open source можно с документации. Там всегда есть что добавить или исправить.
17:10Можно найти гем и заглянуть в issues. Предложить помощь в решении какого-либо issue простым комментарием
17:12@rubyunderhood вопрос, который в разных формах всплывал в нескольких предыдущих эфирах: как вы таймаутите это всё?17:14
У GitLab код открытый - можно посмотреть код тут gitlab.com/gitlab-org/git…
17:15Немного о распорядке: понедельник начинается с кофе. Потом тренажерный зал и разбор email. К вечеру удается немного программировать
18:15@rubyunderhood получается, есть "минимальные системные требования", которые надо поддерживать? Как поддерживаете?18:21
GitLab в отличии от SaaS имеет системные требования. Чтобы его могли устанавливать небольшие команды и индивидуально. @killthekitten
18:24Сейчас GitLab нужно 2 core cpu & 2gb ram для нормальной работы небольшой команды
18:25Системные требования учитываются при проектировании нового функционала приложения.
18:35По этой причине мы откладываем использование search server типа Elastic тк это увеличит минимальные требования в разы
18:40Одна из сложностей разработки self-hosted application в том что тебе нужно дать людям простой установщик
18:47RoR устанавливать не просто особенно если есть привязка к руби версии. Поэтому используем github.com/chef/omnibus для создания установщика
18:49Хотели сделать тру debian пакет но у debian требование запаковать каждый gem отдельно. Если у вас 300 гемов это нереально.
18:50О инструментах: iMac + linux laptop. Код пишу в vim. По сути 2 главных приложения - это терминал и браузер.
19:12@rubyunderhood 1 монитор? Какая диагональ? Клавиатура маковская?19:32
iMac 21" с маковской клавиатурой. Скучный набор :)
19:33@rubyunderhood какая модель лэптопа?19:33
ноут - Dell XPS 13 Developer Edition c убунтой на борту
19:34@rubyunderhood а поддерживать две разных БД это требование бизнеса? могли бы дропнуть mysql, и всё на postgresql сделать :D19:34
Enterprise требует поддержки mysql. Поэтому приходится поддерживать и postgres и mysql в GitLab
19:35Только что прочитал твит от @gruz0 о том что "Все рубисты бухают" :) Мой ответ - джин с вермутом
19:54@rubyunderhood @gruz0 джин вообще напиток богов :)20:04
@rubyunderhood а ещё бычтрее с README которое отображается на гитхабе :)20:43
У кого уже Ruby 2.2 крутится в production? Есть ли ощутимый прирост по производительности?
20:44@rubyunderhood но те кто давно не обновлялся хвалят21:18
На сегодня все. Всем спасибо за отличное общение. И не забывайте про life/work balance ;) Увидимся завтра
21:21# Вторник 34 твита
Всем доброе утро. Свое начал с кофе и игры на xbox :)
11:28@rubyunderhood хорошее утро) Во что играешь?11:51
Играю в GTA V @killthekitten
11:52@rubyunderhood @killthekitten а ты точно разработчик?11:54
Да я точно разработчик :) Но работа без отдыха - зло. А начиная утро с отдыха я получаю положительный настрой на пол дня
11:56Пару лет назад я тратил пол часа утром чтобы добраться до офиса. Теперь использую это время для fun. Это из плюсов remote working :)
11:58Давайте немного поговорим о remote working. Это круто но есть пару нюансов
12:23Во-первых большинство времени вы будуте работать из дома иначе Starbucks вас быстро разорит :)
12:25Правило 1: одевайтесь нормально. Не майка и спортивные штаны на фоне ковра а хотя бы джинсы и свежая футболка
12:27Правило 2: старайтесь не кушать за рабочим местом и вообще держать его в чистоте
12:29@rubyunderhood правило 1: начать надо с отдельного помещения, комнаты, больших колонок и кофе (воды) под рукой :)12:31
Если дома не одни - то вам 100% нужно отдельная комната под кабинет
12:32Еще всех рядом прийдется приучить что "вы работаете". Иначе будет "сходи в магазин - ты же все равно дома сидишь"
12:34@rubyunderhood это знакомо. После рабочего дня: "ты же был дома, почему не мог сделать это и то?" :D12:42
Немного о open source. В GitLab открыт не только код приложения но и много документации по работе в компании
14:39Например у нас есть handbook - about.gitlab.com/handbook/ в котором есть почти вся нужная информация для сотрудников компании. Тоже open source
14:40Работаем исходя из принципа все public кроме gitlab.com/gitlab-com/www…
14:47Хочешь чтобы компания возмещала Starbucks - делаешь merge request в Handbook и ждешь пока(если) СxO его примет :)
14:51@rubyunderhood а большой у вас ажиотаж заявок в компанию?15:08
Специально для @anton_davydov cпросил у hiring person много ли людей хотят работать в GitLab. Ответили "A lot" :)
15:10Теперь немного о технологиях в GitLab. Все веб приложения пишем на Rails. Базы данных: postgres и redis. На каждом сервере chef.
15:16О профессионализме рубиста можно судить по соблюдению Ruby style guide. Какой там Rails если не можешь код выровнять.
16:12@rubyunderhood то есть до технического собеедования мало кто добирается? кто у вас вообще занимается этим?19:01
До технического собеседования доходит ~ 25%. Собеседованиями занимаются люди схожей позиции. Рубист для рубиста и тд.
19:03Если человек проходит техническое собеседование - то потом финальный разговор с CEO и человек в тиме
19:04@rubyunderhood у вас много внутренних самописных проектов? то есть команда не только гитлабом занимается?19:04
Помимо самого GitLab есть связанные проекты. Например, менеджер лицензий для Enterprise версий. Тоже рельсовое приложение ;)
19:10@rubyunderhood один человек собеседует? алгоритмы спрашиваете? просите ли писать код сразу на собеседовании? тестовые задания даёте?19:11
Собеседует обычно один человек. Шаришь экран и пишешь код. Обычно это минимально простая задача для самого гитлаба или близкая к нему
19:13@rubyunderhood а у вас все работают только на полную ставку? Есть кто-то, кто работает на part-time?19:47
Пару человек которые совмещает учебу с работой. А так все фул тайм @anton_davydov
19:48@rubyunderhood обучение разработчиков с нуля не планируете в далеком будущем? Понимаю, что сейчас вопрос об этом не стоит, но все-таки.20:15
Обучение разработчиков с нуля это тяжелый труд. На данный момент это кажется очень далеким будущим для нас.
20:17Кстати об обучении. Каждый новый сотрудник присылает merge request со своим именем на Teams page. Даже Sales. Вот они от git в шоке ;)
20:19# Среда 31 твит
@rubyunderhood а расскажите, пожалуйста, о масштабировании рельс. Что почитать, как вообще подходить к решению этой задачи11:29
Масштабируемость: HA proxy, куча серваков c rails приложением и master/slave Postgres. А дальше зависит от специфики приложения.
11:33О хостинге: сначала хостили gitlab.com на одном сервере Amazon. С ростом нагрузки просто увеличивали CPU, memory
15:10Потом перешли на аренду физического сервера. Выходило значительно дешевле а мощность больше.
15:11Но, как оказалось, с физическими серверами намного больше мороки. То проблемы с bios, то блок питания сгорит и тд
15:13Вернулись на Amazon на время. Но когда pricing дошел до 40k$ в месяц опять задумались о физических серверах
15:14Майкрософт предложила бесплатный хостинг в Azure на время. Решили использовать его как переходной вариант. Оказалось не очень удачной идеей
15:17В итоге сейчас думаем брать физические сервера для Rails а на Amazon держать только то что падать не должно (балансировщик, NFS)
15:19Вывод: если нет людей но куча денег (любой стартап в долине) - то Amazon отличный вариант
15:21На gitlab.com сейчас 16TB репозиториев. NFS пока еще справляется но ищем альтернативу
15:51@rubyunderhood15:52
Я не знаю какое сервера вы использовали, мы пользовались HP серверами и не знали с ними проблем.
От проблем в железе никто не застрахован. Вопрос в том: есть ли у вас персонал который обеспечит бесперебойную работу всего этого
15:52Ну и главный момент: сравнение цены инженера занимающегося физическими серверами с ценой хостинга
15:53@rubyunderhood все рассказывают/спрашивают как набирают сотрудников, а как увольняют(ся)? Где-то прибыло, где-то убыло.19:02
Про увольнение никто и не пишет по той причине что писать нечего. Ты или хлопнул дверью или тихо ушел. Процесс везде одинаковый и скучный
19:03Люблю эту веб страничку - ruby.sadi.st/Ruby_Sadist.ht…
19:09Вот список наших CI jobs. Только сегодня добавил flog & flay. В идеале хочется видеть красный CI при плохом коде pic.twitter.com/B9NUGzotey
@rubyunderhood сможете поделиться опытом? twitter.com/jsunderhood/st…19:44
Насчет "свой стартап" могу набросать пару мыслей @nick_jastix
19:47Быть CEO это значит: продавать продукт и нанимать правильных людей. Про разработку можно забыть.
19:50С точки зрения финансов чаще выгоднее работать на Google чем пытаться запустить стартап вне Долины.
19:53Если стартап рассчитан на ИТ клиентов - то большая часть дохода будет из Штатов. Поэтому без присутствия в Долине будет тяжелее.
19:59Стартап подразумевает инвестиции. Для европейского инвестора миллион это много а для Долины обычное дело.
20:01Вообщем путь успеха: 1) переезд в долину 2) социализируемся 3) подаем заявку в инкубатор где вас учат 4) получаете миллион
20:03Но это при условии что ваш продукт кому-то нужен и вы работаете все свободное время. И каждый день у вас то "успех" то "все пропало"
20:05Вообще если все-таки решите начинать стартап то посмотрите эти видео youtube.com/playlist?list=…. Лучшее что могу порекомендовать
20:29Небольшой опрос для себя :) Что вы используете для code hosting?
20:35@rubyunderhood у нас юзают self-hosted GitLab только потому, что компания параноидально не доверяет облакам.21:40
@common_disease @rubyunderhood и правильно делают21:45
Вообще хороший кейс для GitLab это когда у тебя в компании 1к+ девелоперов. github.com уже не вариант а EE стоит кучу денег
21:47Из хорошего что недавно сделали в GitLab - это встроенный CI. Удобно когда тесты и код ревью в одном приложении
22:11# Четверг 56 твитов
@rubyunderhood ceph хвалят0:08
@rubyunderhood как правило, гитлаб выбирают либо из-за большого кол-ва проектов или из-за паранои, те кто не брезгует saas сидят на гитхабах0:17
@rubyunderhood расскажи какое самое тяжелое решение тебе приходилось делать как руководителю0:30
Не могу представить тяжелые решения у CTO небольшой компании. Сложные технические да но не тяжелые. Людей увольнять не приходилось
0:34@rubyunderhood ну вот мне было тяжело уволить в первый (и единственный за 5 лет) раз0:45
@rubyunderhood Ну и как-то я понял что нужно просто взять и выкинуть результат 2х-месячной работы0:46
Релиз каждый месяц не дает возможность зависнуть на каком-нибудь такси надолго. Поэтому не бывает "пол года делал а оказалось ненужным"
0:47Кстати я думаю одна из причин популярности Ruby это стартапы которые на коленке за месяц делали свои проекты на Rails.
0:51В каком-то смысле говнокод на Rails спас ваш Ruby. А теперь вам что-то не нравится :)
0:52@rubyunderhood Расскажите про собеседования. Что могут спрашивать, как лучше готовиться, какие у вас требуют умения?11:21
Перед собеседованием сначала узнайте побольше о компании. Чтобы вы могли ответить на вопрос "Почему вы хотите работать именно у нас?"
11:23Собеседование это не только ответы на технические вопросы. Это и общее впечатление о человеке и то насколько лоялен он будет компании
11:27В странах бывшего СССР есть такое отношение "пофиг где работать лишь бы зарплату побольше выбить и печеньки"
11:32В ответ у работодателей такое же отношение к сотрудникам. Офис с 9 до 6. Больше правил и минимум доверия.
11:34@rubyunderhood потому что на практике выбора то и не было - магазин рядом (уже все свои) или завод рядом, где родился там и пригодился11:40
@rubyunderhood Лояльность компании? Ты еще гимн предложи спеть. Это какой-то пиздец, работодателю ты нужен больше чем он тебе.11:43
Вот так и живем. Работнику безразлично где он работает. Компании безразличны сотрудники.
11:44@rubyunderhood про отчуждение работника от результата труда и связанные с этим проблемы ещё маркс писал так то11:47
Самый яркий пример: "Я не знаю что вы за компания и чем занимаетесь но я тут самый умный и вообще это я вам нужен."
11:55С такими людьми будет тяжело построить компанию. Поэтому мы их стараемся избегать.
11:58Не стоит забывать что мы небольшая продуктовая компания. Если это out source конвейер то им может быть все равно.
11:59@rubyunderhood проблема в том, что и компаний таких достаточно на свете11:59
Верно подметили что плохих компаний не меньше (а может и больше). Все зависит от того где вам удобней работать
12:00@rubyunderhood а почему бы тогда не спросить в ответ "зачем вы хотите, чтобы я работал у вас в компании, раз позвали собеседоваться?"12:01
@rubyunderhood человек пришёл собеседоваться просто потому, что у вас есть вакансия, а ему нужна работа.12:03
@freiksenet_ru @rubyunderhood да кому ты с таким отношением нужен? У меня такие на работу никогда не попадут12:04
Даже если вам просто нужна работа но вы поленились загуглить страничку "о компании" то это скорее минус чем плюс
12:05@rubyunderhood гениальных мудаков ни кто не берет работать. но вы впадаете в другую крайность - быть лояльным уже на собеседовании12:06
Не надо быть лояльным уже на собеседовании. Надо быть осведомленным куда вы собеседуетесь и почему именно сюда. @backendsecret
12:08@backendsecret @rubyunderhood иногда даже ищу потенциальных руководителей в соц сеточках. Если неадекват (по моим меркам) - в (*) компанию12:09
про лояльность.Лучшее интервью было после письма "я ваш пользователь,продукт уродство,но я знаю как сделать лучше" twitter.com/rubyunderhood/…12:14
В тему собеседований. @rubyunderhood @common_disease twitter.com/Leilamrr/statu…12:23
Вообщем собеседование это не только ответ на технические вопросы по учебнику. А попытка понять подходите вы друг другу или нет
12:27Чтобы через пол года не искать нового сотрудника на эту же позицию.
12:28Мне кажется беда в том что работодатели и программисты видят себя по разные стороны баррикад. Хотя должно быть наоборот
12:36.@rubyunderhood @backendsecret Вопрос - сейчас все cloud-ы предоставляют network storage (типа AWS EBS).12:38
.@rubyunderhood @backendsecret Не кажется ли вам, что "скрывать" сеть за диском - плохая идея, и мы все упремся в blogs.oracle.com/jag/resource/F…12:38
Может технически это неверно но удобство того же EBS сложно недооценить. И кстати работал у нас стабильней чем некоторые винты :) @fxposter
12:40@code1n @rubyunderhood @freiksenet_ru если человеку пофиг на компанию и проект то толку с него будет мало.Творец должен любить свое детище12:42
@ptico @code1n @rubyunderhood Ну это *твоя* задача сделать чтобы человеку было не пофиг. Если ты не крутой модный стартап или Фейсбук.12:44
@freiksenet_ru @rubyunderhood @ptico @code1n обоюдная задача – уважать время друг друга и как можно раньше понять, случится ли польза12:49
@backendsecret @code1n @rubyunderhood @freiksenet_ru ну, знаешь ли, я езжу через весь город к автомеханику «творцу» вместо ближайшей СТО12:50
@rubyunderhood согласен.лояльность в такой формулировке уместна. и про подмену ценностей тоже.12:53
@mktoid @rubyunderhood @backendsecret а лояльные действия сотрудника приносят + к баблу компании -> + к баблу сотрудника? Взаимовыгодно же.12:57
Лояльность сотрудника — желание соблюдать установленные правила поведения в фирме, ценности, нормы поведения.
12:59@rubyunderhood jdevelop.livejournal.com/2073624.html jdevelop.livejournal.com/2072231.html jdevelop.livejournal.com/2070165.html jdevelop.livejournal.com/2067575.html нетленки на тему13:05
О методе разработке GitLab: есть список задач на каждый месяц. В большинстве случаев разработчик сам выбирает над какой задачей работать
17:52По выполнении задачи создается merge request на другого разработчика для code review. После review код заливается в master
17:53Сейчас хотим вынести максимум проверок на качество кода в CI. Тк чем больше diff тем менее качественно люди его проверяют :)
17:56Крутая штука houndci.com Мне нравится что работает с diff а не с целым проектом. Актуально если вам достался плохой проект
18:02Вот такой должен быть сайт с документацией у языка clojuredocs.org!
18:39@rubyunderhood тебя на этой неделе не замучили vim/emacs/etc срачем почему-то. Расскажи про свой вим18:45
Работаю в vim из терминала. Пару плагинов для ruby/rails и clojure. nerdtree для списка файлов. Обычно сплит между файлами. Табы редко юзаю
18:49Раньше было куча плагинов и самописной фигни .Теперь vimc всего на 60 строк. И даже пользуюсь стрелочками вместо "hjkl" :)
18:55Тем кто только изучает руби советую посмотреть destroyallsoftware.com/screencasts/ca… Они хоть уже и старые но все равно крутые :)
19:14И надеюсь вы все смотрели destroyallsoftware.com/talks/the-birt… :)
19:15# Суббота 2 твита
Кто-то пробовал уже listen weblog.rubyonrails.org/2015/11/11/sna…?
12:55@backendsecret а мы вот тот, который с gitlab в комплекте осваиваем. Кажется норм и полная интеграция с гитлабом.19:46
# Воскресенье 2 твита
Всем спасибо за эту неделю! Было круто :)
17:08@rubyunderhood да, тебе спасибо, не плохая неделя и отличный у вас продукт!17:47
# Ссылки
gitlab.com
- https://gitlab.com/u/dzaporozhets
- http://gitlab.com/
- https://gitlab.com/gitlab-org/gitlab-ce
- https://gitlab.com/gitlab-com/www-gitlab-com/commit/866cb8a09cb8098b441845c4433ee5da20fbf058
- https://gitlab.com/gitlab-org/gitlab-ce/commit/7bca4cabc220c03a2bfb19a873421a764a3011d6/ci
github.com
- https://github.com/chef/omnibus
- https://github.com/bbatsov/ruby-style-guide
- https://github.com/krainboltgreene/time-lord
- http://github.com/
- https://github.com/estum/russian_inflect
- https://github.com/yaroslav/yandex_inflect/
other
- https://about.gitlab.com/pricing/
- https://about.gitlab.com/jobs/
- https://about.gitlab.com/handbook/
- http://ruby.sadi.st/Ruby_Sadist.html
- https://www.youtube.com/playlist?list=PL5q_lef6zVkaTY_cT1k7qFNF2TidHCe-1
- https://azure.microsoft.com/en-us/status/
- https://blogs.oracle.com/jag/resource/Fallacies.html
- https://ru.wikipedia.org/wiki/%D0%9B%D0%BE%D1%8F%D0%BB%D1%8C%D0%BD%D0%BE%D1%81%D1%82%D1%8C
- http://jdevelop.livejournal.com/2073624.html
- http://jdevelop.livejournal.com/2072231.html
- http://jdevelop.livejournal.com/2070165.html
- http://jdevelop.livejournal.com/2067575.html
- https://houndci.com/
- http://clojuredocs.org/
- https://www.destroyallsoftware.com/screencasts/catalog
- https://www.destroyallsoftware.com/talks/the-birth-and-death-of-javascript
- https://gist.github.com/randx/1678b363fb09b592cd79
- http://weblog.rubyonrails.org/2015/11/11/snappier-development-mode-in-rails-5/