viatsko

21 декабря 2015, Amsterdam, North Holland

# Понедельник 18 твитов

Всем привет! На этой неделе с вами Валерий Яцко @viatsko. Живу в Амстердаме, работаю в Booking.com

13:30

На этой неделе мы поговорим в основном про поддержку большой базы JavaScript'а, тулзы и поразмышляем о будущем JS-разработки

13:33
@jsunderhood @viatsko скажи а правда что там все почти хуяк-хуяк и в продакшен?

Да, но с оговорками: весь новый код изолируется килл-свитчами, хоть и находится в продакшене twitter.com/dimko1/status/…

13:36
@dimko1 @jsunderhood @viatsko а можно подробней про несколько тим на одну фичу и а-б тестирование потом, это ж правда-правда?

"Несколько тим на одну фичу", например? Про A/B расскажу, если интересно, подробнее twitter.com/DaryaChu/statu…

13:38
@jsunderhood Да вы шутите? Ну ты-то точно уже где-то тут был?

Был в @cssunderhood 2 недели назад, обсуждали UX и верстку :) Теперь переходим к более интимным темам twitter.com/webholt/status…

13:39
@jsunderhood правда, что несколько команд реализовывает одну фичу, потом в прод, там А/B, что лучше по результатам там и остается?

Нет, одна страница = одна команда + есть горизонтальные команды, которые свою тему могут запускать везде twitter.com/DaryaChu/statu…

13:44
@jsunderhood правда что вы вообще не пишете тестов? Только a/b?

Есть автоматические тесты, их пишет отдельная команда, покрываются все критические части сайта twitter.com/freiksenet_ru/…

13:52
@jsunderhood правда что вы вообще не пишете тестов? Только a/b?

У каждого A/B-теста есть выкладка по серверным/js-ошибкам и статистика по браузерам, так что отловить проблему легко twitter.com/freiksenet_ru/…

13:52
@jsunderhood И как это работает вкупе с изменениями постоянными?

Если критические тесты фейлятся на стейджинге с каким-то набором включенных экспериментов - деплой отменяется :) twitter.com/freiksenet_ru/…

13:54
@jsunderhood И как это работает вкупе с изменениями постоянными?

А весь новый код, как уже упоминалось - в килл-свитчах, так что в случае проблем его можно просто отключить twitter.com/freiksenet_ru/…

13:55
@jsunderhood И как это работает вкупе с изменениями постоянными?

Есть развитой мониторинг,показывает минимальные изменения состояния и позволяет за несколько минут находить проблему twitter.com/freiksenet_ru/…

14:02

Туда же относится JS Error Catcher. Если у вас на проекте нет никакого, то минимальный описан тут davidwalsh.name/track-errors-g…

14:04
@jsunderhood @viatsko Привет. Как попал в booking и Амстердам? В чем сфера твоей деятельности?

Захотелось попробовать себя в большом проекте, да и проведение экспериментов нравится :) twitter.com/nemons/status/…

14:19

Эксперименты позволяют доказать, что твоя теория верна и что твоя фича приносит прибыль, это кайф @jsunderhood

14:19

До Букинга 5 лет работал в Студии Лебедева @jsunderhood

14:20

В Букинге работаю над страницей отеля, на Хакатонах и в свободное время пилю IDE на Atom, плагины к другим редакторам @jsunderhood

14:22
@jsunderhood свою ide на базе atom?

Аналогично nuclide.io, только для своей инфраструктуры. Наработки опубликую в ближайшее время в опенсоурс :) twitter.com/nemons/status/…

14:29

Мне как js-разработчику особенно удобно писать дополнения к Atom, там помимо CoffeeScript встроен и Babel @jsunderhood

14:31

# Вторник 19 твитов

@jsunderhood Круто. Столько много русскоговорящих в букинге, уже пяток точно знаю)).

Это да, есть диаграммка откуда кто по странам, в этой статье нашего директора по IT: linkhumans.com/podcast/brenda… twitter.com/ivkinovich/sta…

7:26
@jsunderhood Я думал о вашем хуяк-хуяк и в прод процессе и подумал - для букинга может проще делать так, тк у вас много народа.
7:31
@jsunderhood Вам проще откатывать и массово накатывать, чем тестить. Особенно с учетом вашей манией на конверсию.
7:33

Ну вообще ведется статистика плохих стопов экспериментов команд, но спасает мониторинг от сбоев @freiksenet_ru

7:35

Думаю, что никто не слышал о падении Букинга, что говорит о том, что подход к релизам работает прекрасно :)

7:36

Судя по arstechnica.com/business/2012/…, в Facebook подход к релизам примерно такой же, новые фичи тестируются всеми, авто-тесты только для важного

14:02

Сотрудники Facebook могут поправить, если что-то сильно изменилось с тех пор :)

14:03
@jsunderhood github.com/desandro/class… - понравилась! ))

Я бы поменял has -> contains для соответствия classList, чтоб убрать хелпер в будущем developer.mozilla.org/en-US/docs/Web… twitter.com/gearmobile/sta…

16:14
[Опрос] В чём вы пишете код?
16:18
[Опрос] Если пишете в текстовом редакторе, то в каком?
16:18

Думаю, что проблем с производительностью у Atom не будет, и рассматривать Sublime или что-то еще по этому критерию будет нецелесообразно

18:22

React Native может официально еще на десктоп прийти, ну и вообще с каждым билдом Atom ведет себя все лучше и лучше :)

18:24
@jsunderhood только что перешел на Атом с Саблайма. Самое явное отличие — поиск по Cmd+P в Атоме днище какое-то

Согласен, решается apm install nuclide-quick-open nuclide-fuzzy-filename-provider + установкой watchman twitter.com/pomidore/statu…

18:44

В такой комбинации будет работать значительно лучше, чем в Sublime :) Идея основана на github.com/wincent/comman… @jsunderhood

18:46
@jsunderhood Мне кажется, ни разу в истории не было такого, чтобы с ростом версии софтины её производительность улучшалась.

В плане Atom ты не прав, почитай статью про улучшение их рендера blog.atom.io/2015/06/24/ren… twitter.com/23slider/statu…

18:48

Про мои настройки Atom тут github.com/viatsko/underh…, плюс туда же выложил ссылки за сегодня на статьи про Букинг/Фейсбук

20:24
@jsunderhood Атом для маководов. Пробовал ставить и пользовать его: вся документация и все "продвинутые" настройки поддерживают только Маки.

Например? Пока что не слышал жалоб от Windows-пользователей twitter.com/nanonymoused/s…

20:46

Добавлю, к nuclide-quick-open есть плагин git-grep-provider atom.io/packages/git-g…, ищет по Cmd+T еще и внутри файлов @jsunderhood

20:58

# Среда 31 твит

@jsunderhood @nanonymoused все продвинутое в плагинах. полгода на винде с Atom - полет нормальный.
12:53
@bagadim @jsunderhood @nanonymoused Какой-нибудь минимальный набор есть для frontend? Попробовал на чистом — даже «Go To Def.» не работает.

Минимум комплект тут, уже упомянул github.com/viatsko/underh…. Go To Def нет как такового, постараюсь сегодня дополнить twitter.com/iloldhardly/st…

12:59

О том как Go To Def в Atom'е себе сделать :) @jsunderhood

12:59

.@lifeasecond круто, спасибо, что поделился ;) про hyperclick - не очень функционально вне flow, увы :(

13:04

А кто где хостит личные проекты? Hetzner, Digital Ocean, Linode?

15:22
@jsunderhood DO и Linode, для статики GitHub Pages
15:24
@jsunderhood Digital Ocean + его использую если нужно поиграться с Docker и подобным.
15:36

По поводу Jump To Definition на Atom-atom.io/packages/hyper… работает с js-hyperclick, но чтобы сделать наподобие idea, нужно юзать ctags :(

19:45
@cssunderhood @jsunderhood Чем выше скорость отладки и уровень языка, тем эффективней будет в IDE

К сожалению, проблема в том, что ни одна IDE не может вовремя поддерживать современные фичи языка twitter.com/xmalinov/statu…

19:58

В свое время сам пересел с IntelliJ IDEA на Sublime, а потом на Atom из-за этого @jsunderhood

19:59

В январе со сложным JSX лаги были чудовищными, ни одна оптимизация .vmoptions не давала результата @jsunderhood

19:59

Сюда же стоит добавить достаточно скудный гайд по написанию плагинов, иначе бы все нехватающее уже коммьюнити написало @jsunderhood

20:02

Вот хотя бы из-за таких мелочей было бы круто видеть js-плагин WebStorm'а с возможностью подключать свои подплагины pic.twitter.com/V0CZUjMsSi

20:31

Да, это редкий кейс и можно даже написать (() => { })() вместо него, но думаю, что IDE должна помогать разработчику, а не разработчик IDE

20:32

Ну и - если бы включение ESLint на проект перебивало linter WebStorm с ходу - было бы вообще шик pic.twitter.com/U5fjjqWxm4

20:35

Каждый использует то, что ему нравится. Меня раздражали эти мелочи :( Не исключено, что в будущем еще раз попробую WebStorm

20:37

Кстати для Objective C, C, Java, Python и Ruby использую JetBrain'овские IDE и плачу подписку. Со "стабильными" языками проблем нет.

20:39
@jsunderhood это легко выключается хоткеем, можно пометить «вырубить в этом проекте»

Да, точно, есть Inspections Profiles, тогда остается только мечта про легкую расширяемость js-плагина :) twitter.com/Devgru/status/…

20:41
@jsunderhood и сколько ж ты платишь? всю зарплату поди сливаешь? :D

25 евро в месяц jetbrains.com/store/#section… twitter.com/kotchuprik/sta…

20:44
Какой сейчас нормальный CI? @backendsecret @jsunderhood
Желательно что бы нативно работал с локальным Bitbucket Server (бывший Stash).

Между CI-сервисами нет принципиальной разницы в общих чертах. Есть какие-то еще специфические требования? twitter.com/justusebrain/s…

21:42

Чем, например, Bamboo не устроил? @justusebrain @backendsecret

21:43
@jsunderhood присматриваемся к Vexor. Мб ещё кто-то накидает? У нас весь стек на хостед атлассиан завязан.
22:25

Да, было бы интересно узнать, кто какими CI пользуется :) Кидайте ваши

22:25

Что касается проблемы - я лично с ней не сталкивался. Требуется собирать "последнюю" ветку или все "dev.*" бранчи если точно? @justusebrain

22:26

На JavaScript Air выложили talk о Babel с участием @sebmck javascriptair.com/episodes/2015-… (на английском)

22:37
@jsunderhood Предыдущий был интересный, об истории JS, с Айком

Точно, вот он javascriptair.com/episodes/2015-… twitter.com/roman01la/stat…

22:40
@jsunderhood очевидный дженкинс)
22:47
@jsunderhood Как то приходилось использовать github.com/Strider-CD/str…
23:43

# Четверг 12 твитов

@jsunderhood TeamCity и TravisCI для opensource
7:58
@jsunderhood Сейчас Codeship, раньше TeamCity и Travis
7:58

А как вы ведете разработку? Используете ли Docker, чтоб каждому разработчику дать приближенную к production среду или что-то еще?

8:04
@jsunderhood Docker + Ansible скрипты для его провизирования.
8:17
@jsunderhood Хотелось бы использовать Ansible и Docker, а пока никак, все очень плохо. Если работает у тебя на твоем локальном ПК, то ок.
8:39
@jsunderhood как-то Докер немного не про это. Мы используем Вагрант.

Для большинства вещей тоже использую Vagrant, внутри компании свое решение twitter.com/vtambourine/st…

8:57

И еще одно интересует - если вы недавно проходили интервью по js - какой был самый интересный вопрос или задача?

17:16
@jsunderhood про люки офигенный вопрос был, но не скажу, сами догадайтесь
17:26
@OhTheAnguish @jsunderhood почему есть лето и зима?
18:03
@jsunderhood @OhTheAnguish я сказал «не знаю», они удивились, и вроде больше мы с ними не виделись. СПОЙЛЕР, афджвфъ halt-hammerzeit.blogspot.ru/2015/06/blog-p…
18:12

# Пятница 11 твитов

@jsunderhood @roman01la Из недавноего навскидку вспомню только как попросили deferred реализовать и написать частичное применение.
7:21
@jsunderhood вопрос про то, почему промизы выполняется раньше отложенных в setTimeout функций.
7:22
@jsunderhood на собеседовании по js спросили в чем разница между массивом и двусвязным списком. Самому за себя было стыдно что забыл ответ
7:22
@jsunderhood реализация setTimeout в разных браузерах
7:22
@jsunderhood @nanonymoused @OhTheAnguish вот почему есть лето и зима pbs.twimg.com/tweet_video/CW…
7:22
@vtambourine @jsunderhood Если что, ответ habrahabr.ru/post/264993/ , для себя обновил информацию, а то смутно помнил про очереди и почему так
8:34

На мой взгляд это современный вариант, раньше еще жести добавляли старые IE и Opera @Tom910ru @vtambourine

8:35
@cssunderhood @23ydobemos @Yodairish @andrey_sitnik Согласен. Идёшь на конфу рассказывать о React. Думаешь: засмеют. А там у всех джейквери.
10:50

И последний гнусный вопрос, чаще всего nodejs используется как фронт перед каким-то api, работаете ли вы фулл-стек? pic.twitter.com/1llm9FauK6

19:48

Если да, то на чем пишете бек? Тот же nodejs, или терпите что-то еще? Либо находите, что js - вообще не для бекенда?

19:49
@jsunderhood Бэкэнд на Pure Vanilla C (civetweb), а на express его функциональность дублируем в целях отладки.

Огонь! А какие объемы кода приходится дублировать? twitter.com/webholt/status…

19:52

# Суббота 1 твит

@jsunderhood работаем фуллстек. Последний стек scala + nodejs + angular/react.
Сейчас я облизываюсь на clojure + clojurescript.
8:34

# Воскресенье 30 твитов

Сегодня я последний день с этим твиттером - задавайте любые вопросы про технологии, переезд, работу, жизнь программиста в Европе

9:04
@jsunderhood Если уезжаешь за границу без жены или девушки, там реально найти себе пару?

Реально. Как минимум, потому что переезжает много одиноких русских девушек. Для других - язык учится очень быстро twitter.com/frontend_surfe…

9:34
@jsunderhood как питонисту с 1 годом опыта найти работу в европе, с сего начать?
9:36

Портфолио полное показать меня нигде на интервью не просили, обычно просят показать небольшой свой код @Oleg___Karpov

9:36

Стоит быть готовым к сложным задачам на собеседовании, поможет книга amazon.com/Cracking-Codin… @Oleg___Karpov

9:37

Ну и английский должен быть таким, чтобы не приходилось по 5 минут формировать ответ на вопрос @Oleg___Karpov

9:38
@jsunderhood любимый сорт

Вообще не употребляю twitter.com/i_told_ya/stat…

9:40

Ну и понятно, что обычно на собеседовании могут встретиться вопросы, с которыми ты никогда не столкнешься в работе pic.twitter.com/gIRxOy8kcw

9:43

Этим любят болеть многие русские компании, которые достают вопросы из собеседований для Senior Software Engineer Google :-) @jsunderhood

9:45
@jsunderhood @viatsko какой был опыт работы перед тем как переехал? стек технологий и на каком уровне?

10 лет назад начал что-то делать в веб-разработке, 7 лет опыта работы "на контрактах" twitter.com/nikitapotashov…

9:52

Последние 2 года во фронтенде работал с AngularJS и ReactJS/Redux, естественно уровень - полное понимание принципа их работы @jsunderhood

9:52
@jsunderhood как в redux решить проблему хранения большого объёма данных в стейте? Хотим IndexedDB, но не знаем как его согласовать с redux

Работа с IndexedDB минимально отличается от async'а REST API. rackt.org/redux/docs/adv…, часть Async Action Creators twitter.com/StepanKuzmin/s…

10:06

Если будут вопросы о конкретной реализации - пишите в ПМ в основной Твиттер @viatsko, @StepanKuzmin @jsunderhood

10:08
@jsunderhood а с какой страны ЕС стоит начать, чтобы зп хватало на жилье и на жизнь?

С любой, кроме стран с высокой безработицей. На мой взгляд, в Германии лучшее соотношение зп/расходы twitter.com/Oleg___Karpov/…

10:12
@jsunderhood правда ли, что в Москве все катаются как сыр в масле со здешним гибким рабочим графиком, а в Европах и США — рабство с 9 до 18?

В Европе главное прийти до стендапа. Я приезжаю на работу с 8 до 10:30, например, как проснусь twitter.com/nanonymoused/s…

10:14
@jsunderhood @iamstarkov .babelrc - простой рабочий пример файла, подскажите!
11:33
@gearmobile @jsunderhood попробуй generator-Babel
11:33

Я уверен, что хороший разработчик должен уметь убеждать в своих идеях других, неплохая подборка по influence (англ.) helpscout.net/blog/books-on-…

19:33

Ну и закончим вечер классными github репозиториями.

19:42

Огромная подборка книжек по программированию на разных языках (в том числе и русском): github.com/vhf/free-progr…

19:43

Подборка awesome-репозиториев с полезными статьями, твиттерами и репозиториями по темам github.com/sindresorhus/a…

19:44

Подборка вопросов на интервью по разным языкам программирования github.com/MaximAbramchuc…

19:53

Сборник рецептов о том, как обойтись без jQuery github.com/oneuijs/You-Do…

19:55

И рецептов по CSS github.com/AllThingsSmitt…

19:58

Также классную работу делает Талгат Успанов, собирая ссылки на русских фронтенд-разработчиков github.com/talgautb/front…

20:18

Ну а теперь настало время совсем прощаться :) Завтра Хакатон, нужно хорошенько выспаться, будем хакать в том числе и @AtomEditor

20:33

Думаем как раз после этого заопенсорсить поддержку git совсем во всех nuclide модулях :)

20:33
@jsunderhood вот еще классная ссылка на эту тему: github.com/h5bp/Front-end…
20:33

Кстати, Букинг (booking.com) всегда ищет хороших Front End разработчиков, с переездом в Амстердам grnh.se/u7rvj8

20:39

На этом все, с вами был @viatsko. Подписывайтесь! Если будете в Амстердаме - пишите, вместе выпьем пива :) И до новых встреч!

20:40

github.com

other