# Понедельник 18 твитов
Всем привет! На этой неделе с вами Валерий Яцко @viatsko. Живу в Амстердаме, работаю в Booking.com
13:30На этой неделе мы поговорим в основном про поддержку большой базы JavaScript'а, тулзы и поразмышляем о будущем JS-разработки
13:33@jsunderhood @viatsko скажи а правда что там все почти хуяк-хуяк и в продакшен?
Да, но с оговорками: весь новый код изолируется килл-свитчами, хоть и находится в продакшене
@jsunderhood @viatsko скажи а правда что там все почти хуяк-хуяк и в продакшен?
13:36
@dimko1 @jsunderhood @viatsko а можно подробней про несколько тим на одну фичу и а-б тестирование потом, это ж правда-правда?
"Несколько тим на одну фичу", например? Про A/B расскажу, если интересно, подробнее
@dimko1 @jsunderhood @viatsko а можно подробней про несколько тим на одну фичу и а-б тестирование потом, это ж правда-правда?
13:38
@jsunderhood Да вы шутите? Ну ты-то точно уже где-то тут был?
Был в @cssunderhood 2 недели назад, обсуждали UX и верстку :) Теперь переходим к более интимным темам
@jsunderhood Да вы шутите? Ну ты-то точно уже где-то тут был?
13:39
@jsunderhood правда, что несколько команд реализовывает одну фичу, потом в прод, там А/B, что лучше по результатам там и остается?
Нет, одна страница = одна команда + есть горизонтальные команды, которые свою тему могут запускать везде
@jsunderhood правда, что несколько команд реализовывает одну фичу, потом в прод, там А/B, что лучше по результатам там и остается?
13:44
@jsunderhood правда что вы вообще не пишете тестов? Только a/b?
Есть автоматические тесты, их пишет отдельная команда, покрываются все критические части сайта
@jsunderhood правда что вы вообще не пишете тестов? Только a/b?
13:52
@jsunderhood правда что вы вообще не пишете тестов? Только a/b?
У каждого A/B-теста есть выкладка по серверным/js-ошибкам и статистика по браузерам, так что отловить проблему легко
@jsunderhood правда что вы вообще не пишете тестов? Только a/b?
13:52
@jsunderhood И как это работает вкупе с изменениями постоянными?
Если критические тесты фейлятся на стейджинге с каким-то набором включенных экспериментов - деплой отменяется :)
@jsunderhood И как это работает вкупе с изменениями постоянными?
13:54
@jsunderhood И как это работает вкупе с изменениями постоянными?
А весь новый код, как уже упоминалось - в килл-свитчах, так что в случае проблем его можно просто отключить
@jsunderhood И как это работает вкупе с изменениями постоянными?
13:55
@jsunderhood И как это работает вкупе с изменениями постоянными?
Есть развитой мониторинг,показывает минимальные изменения состояния и позволяет за несколько минут находить проблему
@jsunderhood И как это работает вкупе с изменениями постоянными?
14:02
Туда же относится JS Error Catcher. Если у вас на проекте нет никакого, то минимальный описан тут davidwalsh.name/track-errors-g…
14:04@jsunderhood @viatsko Привет. Как попал в booking и Амстердам? В чем сфера твоей деятельности?
Захотелось попробовать себя в большом проекте, да и проведение экспериментов нравится :)
@jsunderhood @viatsko Привет. Как попал в booking и Амстердам? В чем сфера твоей деятельности?
14:19
Эксперименты позволяют доказать, что твоя теория верна и что твоя фича приносит прибыль, это кайф @jsunderhood
14:19До Букинга 5 лет работал в Студии Лебедева @jsunderhood
14:20В Букинге работаю над страницей отеля, на Хакатонах и в свободное время пилю IDE на Atom, плагины к другим редакторам @jsunderhood
14:22@jsunderhood свою ide на базе atom?
Аналогично nuclide.io, только для своей инфраструктуры. Наработки опубликую в ближайшее время в опенсоурс :)
@jsunderhood свою ide на базе atom?
14:29
Мне как js-разработчику особенно удобно писать дополнения к Atom, там помимо CoffeeScript встроен и Babel @jsunderhood
14:31# Вторник 19 твитов
@jsunderhood Круто. Столько много русскоговорящих в букинге, уже пяток точно знаю)).
Это да, есть диаграммка откуда кто по странам, в этой статье нашего директора по IT: linkhumans.com/podcast/brenda…
@jsunderhood Круто. Столько много русскоговорящих в букинге, уже пяток точно знаю)).
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…
@jsunderhood github.com/desandro/class… - понравилась! ))
16:14
[Опрос] В чём вы пишете код?16:18
[Опрос] Если пишете в текстовом редакторе, то в каком?16:18
Думаю, что проблем с производительностью у Atom не будет, и рассматривать Sublime или что-то еще по этому критерию будет нецелесообразно
18:22React Native может официально еще на десктоп прийти, ну и вообще с каждым билдом Atom ведет себя все лучше и лучше :)
18:24@jsunderhood только что перешел на Атом с Саблайма. Самое явное отличие — поиск по Cmd+P в Атоме днище какое-то
Согласен, решается apm install nuclide-quick-open nuclide-fuzzy-filename-provider + установкой watchman
@jsunderhood только что перешел на Атом с Саблайма. Самое явное отличие — поиск по Cmd+P в Атоме днище какое-то
18:44
В такой комбинации будет работать значительно лучше, чем в Sublime :) Идея основана на github.com/wincent/comman… @jsunderhood
18:46@jsunderhood Мне кажется, ни разу в истории не было такого, чтобы с ростом версии софтины её производительность улучшалась.
В плане Atom ты не прав, почитай статью про улучшение их рендера blog.atom.io/2015/06/24/ren…
@jsunderhood Мне кажется, ни разу в истории не было такого, чтобы с ростом версии софтины её производительность улучшалась.
18:48
@jsunderhood @pomidore @freiksenet_ru Ещё такое есть github.com/ptmt/react-nat…20:13
Про мои настройки Atom тут github.com/viatsko/underh…, плюс туда же выложил ссылки за сегодня на статьи про Букинг/Фейсбук
20:24@jsunderhood Атом для маководов. Пробовал ставить и пользовать его: вся документация и все "продвинутые" настройки поддерживают только Маки.
Например? Пока что не слышал жалоб от Windows-пользователей
@jsunderhood Атом для маководов. Пробовал ставить и пользовать его: вся документация и все "продвинутые" настройки поддерживают только Маки.
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 нет как такового, постараюсь сегодня дополнить
@bagadim @jsunderhood @nanonymoused Какой-нибудь минимальный набор есть для frontend? Попробовал на чистом — даже «Go To Def.» не работает.
12:59
О том как Go To Def в Atom'е себе сделать :) @jsunderhood
12:59@jsunderhood все что я нашел atom.io/packages/hyper… и atom.io/packages/js-hy… мой набор вот github.com/arturparkhisen…13:04
.@lifeasecond круто, спасибо, что поделился ;) про hyperclick - не очень функционально вне flow, увы :(
13:04А кто где хостит личные проекты? Hetzner, Digital Ocean, Linode?
15:22@jsunderhood DO и Linode, для статики GitHub Pages15: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 не может вовремя поддерживать современные фичи языка
@cssunderhood @jsunderhood Чем выше скорость отладки и уровень языка, тем эффективней будет в IDE
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-плагина :)
@jsunderhood это легко выключается хоткеем, можно пометить «вырубить в этом проекте»
20:41
@jsunderhood и сколько ж ты платишь? всю зарплату поди сливаешь? :D
25 евро в месяц jetbrains.com/store/#section…
@jsunderhood и сколько ж ты платишь? всю зарплату поди сливаешь? :D
20:44
Какой сейчас нормальный CI? @backendsecret @jsunderhood
Желательно что бы нативно работал с локальным Bitbucket Server (бывший Stash).
Между CI-сервисами нет принципиальной разницы в общих чертах. Есть какие-то еще специфические требования?
Какой сейчас нормальный CI? @backendsecret @jsunderhood
21:42
Желательно что бы нативно работал с локальным Bitbucket Server (бывший Stash).
Чем, например, 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-…
@jsunderhood Предыдущий был интересный, об истории JS, с Айком
22:40
@jsunderhood очевидный дженкинс)22:47
@jsunderhood circleci22:47
@jsunderhood Как то приходилось использовать github.com/Strider-CD/str…23:43
# Четверг 12 твитов
@jsunderhood TeamCity и TravisCI для opensource7:58
@jsunderhood Сейчас Codeship, раньше TeamCity и Travis7:58
А как вы ведете разработку? Используете ли Docker, чтоб каждому разработчику дать приближенную к production среду или что-то еще?
8:04@jsunderhood Docker + Ansible скрипты для его провизирования.8:17
@jsunderhood Хотелось бы использовать Ansible и Docker, а пока никак, все очень плохо. Если работает у тебя на твоем локальном ПК, то ок.8:39
@jsunderhood как-то Докер немного не про это. Мы используем Вагрант.
Для большинства вещей тоже использую Vagrant, внутри компании свое решение
@jsunderhood как-то Докер немного не про это. Мы используем Вагрант.
8:57
@justusebrain @backendsecret @jsunderhood jenkins и gitlabCI17:15
И еще одно интересует - если вы недавно проходили интервью по 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 его функциональность дублируем в целях отладки.
Огонь! А какие объемы кода приходится дублировать?
@jsunderhood Бэкэнд на Pure Vanilla C (civetweb), а на express его функциональность дублируем в целях отладки.
19:52
# Суббота 1 твит
@jsunderhood работаем фуллстек. Последний стек scala + nodejs + angular/react.8:34
Сейчас я облизываюсь на clojure + clojurescript.
# Воскресенье 30 твитов
Сегодня я последний день с этим твиттером - задавайте любые вопросы про технологии, переезд, работу, жизнь программиста в Европе
9:04@jsunderhood Если уезжаешь за границу без жены или девушки, там реально найти себе пару?
Реально. Как минимум, потому что переезжает много одиноких русских девушек. Для других - язык учится очень быстро
@jsunderhood Если уезжаешь за границу без жены или девушки, там реально найти себе пару?
9:34
@jsunderhood как питонисту с 1 годом опыта найти работу в европе, с сего начать?9:36
Портфолио полное показать меня нигде на интервью не просили, обычно просят показать небольшой свой код @Oleg___Karpov
9:36Стоит быть готовым к сложным задачам на собеседовании, поможет книга amazon.com/Cracking-Codin… @Oleg___Karpov
9:37Ну и английский должен быть таким, чтобы не приходилось по 5 минут формировать ответ на вопрос @Oleg___Karpov
9:38Ну и понятно, что обычно на собеседовании могут встретиться вопросы, с которыми ты никогда не столкнешься в работе pic.twitter.com/gIRxOy8kcw
9:43Этим любят болеть многие русские компании, которые достают вопросы из собеседований для Senior Software Engineer Google :-) @jsunderhood
9:45@jsunderhood @viatsko какой был опыт работы перед тем как переехал? стек технологий и на каком уровне?
10 лет назад начал что-то делать в веб-разработке, 7 лет опыта работы "на контрактах"
@jsunderhood @viatsko какой был опыт работы перед тем как переехал? стек технологий и на каком уровне?
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
@jsunderhood как в redux решить проблему хранения большого объёма данных в стейте? Хотим IndexedDB, но не знаем как его согласовать с redux
10:06
Если будут вопросы о конкретной реализации - пишите в ПМ в основной Твиттер @viatsko, @StepanKuzmin @jsunderhood
10:08@jsunderhood а с какой страны ЕС стоит начать, чтобы зп хватало на жилье и на жизнь?
С любой, кроме стран с высокой безработицей. На мой взгляд, в Германии лучшее соотношение зп/расходы
@jsunderhood а с какой страны ЕС стоит начать, чтобы зп хватало на жилье и на жизнь?
10:12
@jsunderhood правда ли, что в Москве все катаются как сыр в масле со здешним гибким рабочим графиком, а в Европах и США — рабство с 9 до 18?
В Европе главное прийти до стендапа. Я приезжаю на работу с 8 до 10:30, например, как проснусь
@jsunderhood правда ли, что в Москве все катаются как сыр в масле со здешним гибким рабочим графиком, а в Европах и США — рабство с 9 до 18?
10:14
@jsunderhood @iamstarkov .babelrc - простой рабочий пример файла, подскажите!11:33
@gearmobile @jsunderhood попробуй generator-Babel11: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
- https://github.com/wincent/command-t
- https://github.com/gabrielbull/react-desktop
- https://github.com/ptmt/react-native-desktop
- https://github.com/viatsko/underhood/blob/master/README.md
- https://github.com/viatsko/underhood
- https://github.com/arturparkhisenko/install-dotfiles-etc/blob/master/extensions.md#atom
- https://github.com/Strider-CD/strider
- https://github.com/vhf/free-programming-books
- https://github.com/sindresorhus/awesome
- https://github.com/MaximAbramchuck/awesome-interviews
- https://github.com/oneuijs/You-Dont-Need-jQuery
- https://github.com/AllThingsSmitty/css-protips
- https://github.com/talgautb/frontenders/blob/master/Names.md
- https://github.com/h5bp/Front-end-Developer-Interview-Questions
other
- http://booking.com/
- http://booking.com/
- https://davidwalsh.name/track-errors-google-analytics
- http://linkhumans.com/podcast/brendan-bank-booking
- http://arstechnica.com/business/2012/04/exclusive-a-behind-the-scenes-look-at-facebook-release-engineering/1/
- https://developer.mozilla.org/en-US/docs/Web/API/Element/classList
- http://blog.atom.io/2015/06/24/rendering-improvements.html
- https://atom.io/packages/git-grep-provider
- https://atom.io/packages/hyperclick
- https://atom.io/packages/js-hyperclick
- https://www.jetbrains.com/store/#section=personal
- https://confluence.jetbrains.com/display/TCD9/Working+with+Feature+Branches
- http://javascriptair.com/episodes/2015-12-23/
- http://javascriptair.com/episodes/2015-12-09/
- http://wercker.com/
- http://halt-hammerzeit.blogspot.ru/2015/06/blog-post.html
- https://pbs.twimg.com/tweet_video/CWyFA37WwAArdiO.mp4
- http://habrahabr.ru/post/264993/
- http://www.amazon.com/Cracking-Coding-Interview-6th-Edition/dp/0984782850
- http://rackt.org/redux/docs/advanced/AsyncActions.html
- http://www.helpscout.net/blog/books-on-persuasion/
- http://grnh.se/u7rvj8