NikitaDyumin

1 февраля 2016, Челябинск, Россия

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

Привет, на этой неделе с вами Никита @NikitaDyumin. Fullstack JavaScript. Челябинск.

10:03

поговорим об изучении\обучении JS, собеседованиях (с обеих сторон), разделении труда на фронтенде

10:06

кроме того, либы и фреймворки в продакшене; кровавый энтерпрайз, легаси; новости JS; FRP как видят его Bacon и Rx, Функциональный JS

10:09

Работаю в международных командах, в разных часовых поясах. Agile. Scrum. Можно и об этом поговорить, если интересно.

10:18
@jsunderhood компания то какая?

Прикладные технологии

@jsunderhood компания то какая?

10:56
@jsunderhood как проводите DSM?

Корпоративный мессенжер или Skype. Язык - английский.

@jsunderhood как проводите DSM?

10:58
@jsunderhood Скайп? А на слаку переехать не думали? @mike1pol

Нужды, вроде нет. Скайп - крайне редко, в основном, Webex, был GoToMeeting, вполне удобно, неплохо интегрируется

@jsunderhood Скайп? А на слаку переехать не думали? @mike1pol

11:08
@jsunderhood тут скорей интересно как проходит согласование времени DSM

Если есть китайцы и европейцы, то выбора практически нет - наш день. Если есть австралийцы, европейцам совсем тяжко.

@jsunderhood тут скорей интересно как проходит согласование времени DSM

11:13
@jsunderhood Расскажи, как тебе удается внедрять FRP в продакшн? Коллеги соглашаются поддерживать функциональный код?

Весьма успешно, в гордом одиночестве. Но есть коллеги, которые разделяют мои симпатии к Bacon.js и Rx.

@jsunderhood Расскажи, как тебе удается внедрять FRP в продакшн? Коллеги соглашаются поддерживать функциональный код?

11:25
@jsunderhood Про собеседования интересно, сейчас сам их прохожу)

Собеседования на JS - нечто особенное. Предлагаю рассказать о своем опыте прохождения. Может, и проведения.

@jsunderhood Про собеседования интересно, сейчас сам их прохожу)

11:27

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

11:31
@jsunderhood Да, особенное. Пришёл на собеседование. Убедились, что у нас с собеседующим нет вопросов друг к другу. Вышел на работу.

Давно? Надолго?

@jsunderhood Да, особенное. Пришёл на собеседование. Убедились, что у нас с собеседующим нет вопросов друг к другу. Вышел на работу.

11:32
@jsunderhood провожу собеседования. Даю задачи на js (на размышление и алгоритмы), говорю об индустрии, классические архитектуры обсуждаем.

можно примеры задач? задачи на бумажечке или за компом? Просишь рассказать что-нибудь о предыдущих зачах? Challanges

@jsunderhood провожу собеседования. Даю задачи на js (на размышление и алгоритмы), говорю об индустрии, классические архитектуры обсуждаем.

12:28
@jsunderhood Я пробовал все, если что у меня есть xgrommx.github.io/rx-book

Спасибо. Полезно. Подобную книгу я бы начал с обозначения проблемы.

@jsunderhood Я пробовал все, если что у меня есть xgrommx.github.io/rx-book

12:38
@jsunderhood Были случаи, когда приходилось кого-то будить для решения срочного вопроса?

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

@jsunderhood Были случаи, когда приходилось кого-то будить для решения срочного вопроса?

14:10

Важно вам, как нанимателю, чтобы у кандидата был блог\публичный репозиторий? Кандидаты, важна публичная активность компании?

14:20
@Bardty ... а потом - у нас вот тут звиздец из джейквери. Переделаешь его вот так как на собеседовании говорили? @jsunderhood

Надо полагать, так бывает. И, я бы сказал, это нормально.

@Bardty ... а потом - у нас вот тут звиздец из джейквери. Переделаешь его вот так как на собеседовании говорили? @jsunderhood

14:25

Сколько собеседований на одну вакансию считаете нормальным? Какие считаете обязательными, какие можно комбинировать? Сколько по времени?

15:13
@jsunderhood А какое решение обычно предлагают?

Ну или так:
var step=(next,clb)=>(s)=>(log(s),next(clb));
foo(step(bar, step(baz, log)));

Печально, но часто делают вроде такого:
setTimeout(foo, 101);
setTimeout(bar, 202);
setTimeout(baz, 303);

@jsunderhood А какое решение обычно предлагают?

Ну или так:
var step=(next,clb)=>(s)=>(log(s),next(clb));
foo(step(bar, step(baz, log)));

15:49
@jsunderhood @vladimore это нужно делать для того, что бы показать заинтересованность или точно знать, куда идёшь?

Важно понимать, что собеседования - двунаправленный процесс - ты узнаешь о компании, она о тебе

@jsunderhood @vladimore это нужно делать для того, что бы показать заинтересованность или точно знать, куда идёшь?

15:52
@jsunderhood предварительное по скайпу минут 30, после тестовое задание 1 день и уже потом в офисе (обычно в районе часа)

Какого рода задания на дом?

@jsunderhood предварительное по скайпу минут 30, после тестовое задание 1 день и уже потом в офисе (обычно в районе часа)

15:53
@mista_k @jsunderhood Код немного упоротый, но общая мысль такая: Если A и B уже пришли, их можно показать, не дожидаясь C

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

@mista_k @jsunderhood Код немного упоротый, но общая мысль такая: Если A и B уже пришли, их можно показать, не дожидаясь C

17:35
@jsunderhood 3, hr - отсев не адекватов, техническое, программ менеджер - деньги

Как на счет тимлида или команды, чтобы определить сможете ли вместе работать? Характер, способность общаться и т.п.

@jsunderhood 3, hr - отсев не адекватов, техническое, программ менеджер - деньги

18:35
@jsunderhood это ещё не самый плохой вариант. Хуже, когда спрашивают про библиотеки и фреймворки

Назовите методы обхода массива из underscore? Назовите не менее 8 популярных либ, реализующих наследование? :D

@jsunderhood это ещё не самый плохой вариант. Хуже, когда спрашивают про библиотеки и фреймворки

18:45
@jsunderhood а когда необходимы алгоритмы в фронтенде?

Алгоритмическое мышление. Бывает, пока про замыкания спрашивают, упускают, что человек не может массив развернуть.

@jsunderhood а когда необходимы алгоритмы в фронтенде?

18:49
@NikitaDyumin @jsunderhood не забудь попрощаться с читателями. архив за неделю jsunderhood.ru/NikitaDyumin/

Теперь уже точно конец недели. Спасибо еще раз. Всё былое тут: jsunderhood.ru/NikitaDyumin/

@NikitaDyumin @jsunderhood не забудь попрощаться с читателями. архив за неделю jsunderhood.ru/NikitaDyumin/

3:19

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

Но ведь вопрос был в том, чтобы знать какие-то либы, кроме языка, в es6 тоже не все есть
@hey_daniil @_elergy_

5:06
@jsunderhood на 100+ Спрашиваем основы - события, dom, xhr, cors. Стандартный набор из learn.js.ru. Результаты печальные.

т.е. все-таки знание JS и веба, не навыки программировать или способность рассуждать?

@jsunderhood на 100+ Спрашиваем основы - события, dom, xhr, cors. Стандартный набор из learn.js.ru. Результаты печальные.

5:08

книги.. это мне нравится. Часто отвечают?
@krasivieglaza

5:09
@jsunderhood, все так спрашивают про замыкания, будто в этом весь яваскрипт и разработка в целом.

Не зная о замыканиях, долго бы думали над таким?
jsfiddle.net/et1jgpfy/

Hint: попереключайте Babel<>JS

@jsunderhood, все так спрашивают про замыкания, будто в этом весь яваскрипт и разработка в целом.

5:17
@_elergy_ @jsunderhood инвесторы захотят забрать назад свои деньги как только узнают что там юзают var

только const, только хардкор?

@_elergy_ @jsunderhood инвесторы захотят забрать назад свои деньги как только узнают что там юзают var

5:17
@jsunderhood мне,как нанимателю,важно,чтобы работник решал поставленные задачи.И личные репы роли не играют

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

@jsunderhood мне,как нанимателю,важно,чтобы работник решал поставленные задачи.И личные репы роли не играют

5:18
@jsunderhood я часто провожу собеседования. Вопросы задаются просто как способ узнать как человек мыслит. На них нет правильных ответов.

Звучит отлично. Но как кандидат я бы напугался: что если, я мыслю *неправильно*?

@jsunderhood я часто провожу собеседования. Вопросы задаются просто как способ узнать как человек мыслит. На них нет правильных ответов.

5:20
@mr_mig_by @jsunderhood не знаю как у вас там, но если я дам наш нормальный таск, то за результатом можно через пару недель приходить.

Пример нормального таска?

@mr_mig_by @jsunderhood не знаю как у вас там, но если я дам наш нормальный таск, то за результатом можно через пару недель приходить.

5:21
@NikitaDyumin @iamstarkov @jsunderhood а они разве должны быть лучше?

нет, конечно, просто в моем случае, был отбор агенством, были сеньорные cv, 10+ лет стажа в мега проектах

@NikitaDyumin @iamstarkov @jsunderhood а они разве должны быть лучше?

5:29
@Bardty @jsunderhood не нужно выдумывать что-то с потолка, когда в нашей работе и так хватает проблем и можно спросить про их решения

dilbert.com/strip/2015-08-…

@Bardty @jsunderhood не нужно выдумывать что-то с потолка, когда в нашей работе и так хватает проблем и можно спросить про их решения

5:33
@jsunderhood у нас была идея давать тестовое задание с gh на закрытие определенного issue либы которую мы используем

Сурово.

@jsunderhood у нас была идея давать тестовое задание с gh на закрытие определенного issue либы которую мы используем

6:11

Чужими руками причинять добро опенсорсу?
@_sashashakun @mike1pol

6:17

Если либы небольшие, а проблема понятна - из разряда "просто пойти и сделать".
@mike1pol @_sashashakun

6:26
@alex_ivantsov @jsunderhood никто не нанимает людей для решения конкретных проблем. Нанимают, чтобы решать такущие _и_ будущие.
6:31

1 из 5 уже неплохо. Что читают?
@krasivieglaza

6:50

Да, получается, надо знать об этом. Знать всем. Или отключить TCO в опциях.
babeljs.io/repl/#?experim…
@evgeniy_moroz

8:16
@jsunderhood Ну если что-то из этого то круто. pic.twitter.com/fS3IKMmvQh

как на счет ozon.ru/context/detail…

@jsunderhood Ну если что-то из этого то круто. pic.twitter.com/fS3IKMmvQh

8:54

к тимлиду - хорошо, если есть к кому подойти. Ну, и со временем, хотелось бы стать таким, к которому подходят, ведь так?
@kinday

9:04

понял сам - пойми другим?
@kinday @KilgortTrout

9:26
Вторая встреча FrontendFellows пройдёт в Ижевске 26 февраля. frontendfellows.timepad.ru/event/284976/ – регистрируйтесь. Есть слоты для докладов!
9:48
Третья встреча FrontendFellows пройдёт в Челябинске 25 марта. frontendfellows.timepad.ru/event/284979/ – регистрируйтесь. Есть слоты для докладов!
9:48
@jsunderhood можешь еще накидать задачек для собеседования, буду решать, понял, что ни черта не знаю промисы)

Попробуем:
jsfiddle.net/80f80tjq/

@jsunderhood можешь еще накидать задачек для собеседования, буду решать, понял, что ни черта не знаю промисы)

10:00

Раз уж постепенно переходим к изучению\обучению:
Когда и как вы поняли, что знаете JavaScript? :D

10:05

Интересный список. Рекомендую, сам спрашиваю такие\подобные вещи.
@krasivieglaza

10:28

Зря смеетесь, бывает и так.
@POS_troi

10:32

ES6\2015 изучили\используете в продакшене и почему нет?

10:36

На взгляд, JS удобен тем, что фундаментальных вещей не так много, остального можно избегать (изучать по мере надобности)
@sergey_panay

10:41

нет\подсознательно, возможно
@Semenov

10:49

ES6 кратко
github.com/DrkSephy/es6-c…
ES6 полно
exploringjs.com/es6/

11:11

Спасибо, было сегодня, но не в контексте ES6.Да, есть там и такая часть.
@yamalight

11:17
@jsunderhood зачем мне знать алгоритмы, когда есть книжка под боком?

Чтобы время не тратить, например. Соответственно стоит знать то, что используешь часто, за остальным в книжку.

@jsunderhood зачем мне знать алгоритмы, когда есть книжка под боком?

11:36
@jsunderhood примерно когда научился _понимать_ чужой код
11:38
@jsunderhood когда перестану залезать на StackO или гуглить. Никогда. Impossible.
11:43
@jsunderhood ой, мне бы просто программирование выучить, не говоря уже про JavaScript!

выучить программирование? есть курсы? я бы записался

@jsunderhood ой, мне бы просто программирование выучить, не говоря уже про JavaScript!

11:46
@krasivieglaza @jsunderhood База в голове по языку, привычка лезь в код на github — SO не нужен. Может оверхед большой, но долгосрочно плюс
11:50
@jsunderhood а я и не знаю. Когда покажется, что знаю - пора из профессии.

JS заботится о нас, JS этого не допустит, новые стандарты не перестанут появляться.

@jsunderhood а я и не знаю. Когда покажется, что знаю - пора из профессии.

12:10
@jsunderhood не все возможности, но используем. Деструктуризация - очень мощная вещь. А вот про :: пока есть сомнения.

К слову, "Ваше любимое нововведение в ES2015?"

@jsunderhood не все возможности, но используем. Деструктуризация - очень мощная вещь. А вот про :: пока есть сомнения.

12:16
@jsunderhood Arrow Functions, Spread Operator, Destructuring Assignment.

О, аналогично, но в обратном порядке

@jsunderhood Arrow Functions, Spread Operator, Destructuring Assignment.

12:18
@jsunderhood =>, деструктуризация и rest, spread и default аргументы функцый

Зачем нужны дефолты?

@jsunderhood =>, деструктуризация и rest, spread и default аргументы функцый

12:19
@jsunderhood оооооч странный вопрос

Если есть аргументы, их кто-то должен передать мне, почему я должен сам решать что-то, если их нет?

@jsunderhood оооооч странный вопрос

12:23
@jsunderhood чтобы не делать var string = inputString || '';

это тоже решение, но не проблема. Проблема - пустой inputString. Не троллинг, так.. Провокация.

@jsunderhood чтобы не делать var string = inputString || '';

12:26
@jsunderhood в js нет overloading, поэтому, либо тебе придется писать a('smth','','','') или использовать default arguments.

что плохого? зато я явно задаю значения и, кстати, стало быть, типы

@jsunderhood в js нет overloading, поэтому, либо тебе придется писать a('smth','','','') или использовать default arguments.

12:35
@jsunderhood типы можно описать в документации (это, кстати, поможет IDE), ну или в тестах. А в реальном коде приятнее видеть a('smth') ;)

мифическая документация, всемогущие IDE, а как же самодостаточный код? Понятный, приятный, простой.

@jsunderhood типы можно описать в документации (это, кстати, поможет IDE), ну или в тестах. А в реальном коде приятнее видеть a('smth') ;)

12:39
@jsunderhood самодостаточный код без тестов и доков? ну посмотрим, как ты будешь поддерживать его спустя пару лет и десятков девелоперов;)
12:44
@jsunderhood О TypeScript с function x(y: string, z = "default") стоит заикнуться
;) Но с другой стороны я не хочу весь TypeScript в ES
12:48
@AntonShevchuk @jsunderhood курсы Ильи всё же про джаваскрипт, а не про то, как деливерить и создавать ценность.
14:11
@jsunderhood Как собеседуем и нанимаем - bit.ly/20DYa6j

Эх, я же писал, что важно именно "алгоритмическое мышление", что пока мы JS проверяем, люди яйца пожарить не могут

@jsunderhood Как собеседуем и нанимаем - bit.ly/20DYa6j

14:16
@jsunderhood я провоцирую, но на деле за 25 летную карьеру знание алгоритмов мне не пригодилось. Про собеседования - bit.ly/1nKsa2w

Я же не говорил про хоть сколько-нибудь сложные алгоритмы. Яичница.

@jsunderhood я провоцирую, но на деле за 25 летную карьеру знание алгоритмов мне не пригодилось. Про собеседования - bit.ly/1nKsa2w

14:18
@mr_mig_by @AntonShevchuk @jsunderhood А меня вот Бюро Горбунова научило деливерингу, решению задач в мире клиента и всему такому
14:19
@jsunderhood что думаешь про промисы?

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

@jsunderhood что думаешь про промисы?

14:25
@jsunderhood @mista_k уже видел пулл-реквест на внедрение промисов в ядро? github.com/nodejs/node/pu…

Драма. Промисы классные, но не панацея. Хотя меня лично такое API не смущает.

@jsunderhood @mista_k уже видел пулл-реквест на внедрение промисов в ядро? github.com/nodejs/node/pu…

14:32
@jsunderhood там пока не решили какое API выбрать, как я понял

я имел в виду сразу отдавать промисы, без префиксов\постфиксов

@jsunderhood там пока не решили какое API выбрать, как я понял

14:39

Обожаю как люди называют либы. Обожаю потом гуглить. Кто знает CDN для github.com/cujojs/most ?

15:05
@jsunderhood есть же крутая npmcdn.com для (почти) любых либ
15:13
@jsunderhood Може глянуть как я с Most+React+Ramda извращаюсь :D jsbin.com/musonu/6/edit?…

Я хотел поговорить об этом всем завтра, но да, давайте уже смотреть!

@jsunderhood Може глянуть как я с Most+React+Ramda извращаюсь :D jsbin.com/musonu/6/edit?…

15:21
@Semenov @jsunderhood он с винды пишет, я слышал там слэши в другую сторону.

мне кажется, или все фронтендеры (кроме меня, конечно) на маках?

@Semenov @jsunderhood он с винды пишет, я слышал там слэши в другую сторону.

15:28
@jsunderhood некоторые юзают винду на маках :)

всегда было интересно, зачем?

@jsunderhood некоторые юзают винду на маках :)

15:34
@jsunderhood .Net и тестить верстку под ИЕ

а цена на эппловское железо такая же?

@jsunderhood .Net и тестить верстку под ИЕ

15:38
@jsunderhood с удовольствием сижу на Win10. Никаких проблем не имею.

Рабочий win8, дома win10. VMки на никсах, Под ios дебажим на рабочих маках. Пока не свихнулись. Пока.

@jsunderhood с удовольствием сижу на Win10. Никаких проблем не имею.

16:00
@jsunderhood Я очень много потратил времени на функциональное и реактивное программирование) сейчас haskell

Потратил. Звучит трагично. Смотрел edx.org/course/introdu… ? Эрик крут, я считаю.

@jsunderhood Я очень много потратил времени на функциональное и реактивное программирование) сейчас haskell

16:01
@denswor @jsunderhood тестить под IE лучше на стеке виртуалок

Я тестирование не заявлял, но можем тоже побеседовать. Использовал Nightwatch на Browserstack. Вопросы? Ответы?

@denswor @jsunderhood тестить под IE лучше на стеке виртуалок

16:04
@jsunderhood стационарник и вин10

Винда вообще прогрессирует. Лет 15 назад пришлось бы переставлять чуть что. Сейчас иногда достаточно перегрузить.

@jsunderhood стационарник и вин10

16:09
What is the world coming to? Emacs keystrokes are wired into the base of my spine! twitter.com/bodil/status/6…

Раз уж говорим о рабочих местах. Редакторы? emacs? Кто-нибудь?

What is the world coming to? Emacs keystrokes are wired into the base of my spine! twitter.com/bodil/status/6…

16:12
@jsunderhood это факт, чем дальше, тем больше она мне нравится и даже вин8 меня не разочаровал в своё время
16:21
@jsunderhood coffee лучше

какие конкретно плюсы в продакшене? сегодня в 2016 году?

@jsunderhood coffee лучше

16:42
@jsunderhood Пробывали сравнивать Nightwatch с "типа" официальным набором биндингов под Selenium - webdriver.io?

пробовали. я только помогал QA, решили, что с оберточкой удобнее

@jsunderhood Пробывали сравнивать Nightwatch с "типа" официальным набором биндингов под Selenium - webdriver.io?

16:50
@jsunderhood Много e2e тестов писали? Для SPA писали? Был доволен стабильностью исполнения тестов и результатами?

Много. Для spa. Стабильность, бывает, подводит. Фокусы всякие. На голом селениуме лучше не было (была Java+WedD)

@jsunderhood Много e2e тестов писали? Для SPA писали? Был доволен стабильностью исполнения тестов и результатами?

16:55
@jsunderhood убунту

редактор\IDE?

@jsunderhood убунту

17:18
@jsunderhood @Bardty @Semenov юниксы наше все)
17:18
@jsunderhood пользуюсь вот этим списков - github.com/h5bp/Front-end…
17:46
@Bardty @Tom910ru
одна из моих задач:
jsfiddle.net/008szL5r/

Хм. Как на счет jsfiddle.net/zot6yLua/ ?

@Bardty @Tom910ru
одна из моих задач:
jsfiddle.net/008szL5r/

17:50
@jsunderhood emacs после 5 лет вима

почему не IDE? навигация по проекту, статический анализ кода, всякие вьюхи с дифами, конфиги для запусков?

@jsunderhood emacs после 5 лет вима

18:09
@jsunderhood навигация ерунда, стат анализ к иде не имеет отношения, и что такое конфиги для запусков?

стат анализ с результатами построчно. конфиги всякие - удобные менюшечки

@jsunderhood навигация ерунда, стат анализ к иде не имеет отношения, и что такое конфиги для запусков?

18:31
@jsunderhood ну и софт который старше тебя, Бесплатный, и до сих пор популярен достоин хотябы знакомства с ним

Кроме того, есть языки, под которые просто нет альтернативы. я emacs использую на никсовых vmках, где нет иксов

@jsunderhood ну и софт который старше тебя, Бесплатный, и до сих пор популярен достоин хотябы знакомства с ним

18:34
My top JS interview question: "do you think using a type checker would significantly affect the amount of bugs in your code?"
19:05

# Среда 66 твитов

На заметку: начать понимать, что обсуждают те замечательные люди тут, в @jsunderhood и @cssunderhood. И сделать уже хоть что-то стоящее.
4:14
@jsunderhood тут имхо больше вим подходит

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

@jsunderhood тут имхо больше вим подходит

4:16
@jsunderhood es6 и coffee - сейчас сахар, в кофе сахара больше; в Бабеле не работает часть фич из es6, надо искать полифилы на них

К вопросу о любимых вещах ES6, каких фич, которые вам нравятся, не хватает в бабеле?

@jsunderhood es6 и coffee - сейчас сахар, в кофе сахара больше; в Бабеле не работает часть фич из es6, надо искать полифилы на них

4:19
@jsunderhood @krasivieglaza Для какого уровня предназначены эти вопросы? Какого уровня человек, если он отвечает на 50%? На 75%? На 90%?

Отвечает на 90% - знает JS и Web, умеет кодить (там есть задачки). Проектирование там не отражено совсем.

@jsunderhood @krasivieglaza Для какого уровня предназначены эти вопросы? Какого уровня человек, если он отвечает на 50%? На 75%? На 90%?

4:29
@jsunderhood Coffee грязная поделка, лучше уж суперсеты типа typescript ибо я хочу реюзать мой старый js, а в coffee так сделать нельзя
4:36
@fliptheweb @jsunderhood Хватит с меня этих интерпретаторов ES Next самодостаточен. Я пережил хайп кофе и не поддался на его тренд
5:24
@fliptheweb @jsunderhood А что искажать? Coffeescript не нужен и все =) также как и Ruby

Говорят, кофе был нужен когда JS был слаб и молод. Руби делали, чтобы людям нравилось на нем писать. Людям нравится.

@fliptheweb @jsunderhood А что искажать? Coffeescript не нужен и все =) также как и Ruby

6:26
@iamstarkov @jsunderhood а, нашёл что там есть промисы из es6, только в доках почему-то об этом ни слова

Потому, что это часть языка, а не ноды. В нодах 4,5 проблем не будет. В старых нодах можно Q, vow, jQuery :D и т.п.

@iamstarkov @jsunderhood а, нашёл что там есть промисы из es6, только в доках почему-то об этом ни слова

6:33
@jsunderhood по крайней мере у нас это так. JS не имел классов, а их умели использовать. ввели кофе, решили проблемы.
6:54
Попробуем:
jsfiddle.net/80f80tjq/ twitter.com/METALLFACE/sta…

Ну, что же вы? я уже даже сам решил.

Попробуем:
jsfiddle.net/80f80tjq/ twitter.com/METALLFACE/sta…

6:58
@jsunderhood @krasivieglaza Апну. С процентами, пожалуй, слишком, но для какого уровня вообще эти вопросы?

Уровень каждая компания сама определяет. По мне, надо смотреть еще на умение рассуждать, принимать решения.

@jsunderhood @krasivieglaza Апну. С процентами, пожалуй, слишком, но для какого уровня вообще эти вопросы?

7:51
@RusAlexander @jsunderhood OOP дно в js - js должен быть функциональным с композициями и каррингом

Кто-то вообще рад этим вашим классам в ES6? Карринг из коробки был бы весьма приятен.

@RusAlexander @jsunderhood OOP дно в js - js должен быть функциональным с композициями и каррингом

7:54
@xgrommx @RusAlexander @jsunderhood Не надо юзать карринг, юзайте стрелки.

А как они противопоставляются? вот карринг со стрелками: const add = x => y => x + y;

@xgrommx @RusAlexander @jsunderhood Не надо юзать карринг, юзайте стрелки.

8:00
@jsunderhood рады все, особенно менеджеры, можно нанять персонал для простых вещей, которому даже неизвестно прототипное наследование

Классы и прототипы подразумевают ООП. Научиться ООП куда сложнее, чем просто понять как работают прототипы. Нет?

@jsunderhood рады все, особенно менеджеры, можно нанять персонал для простых вещей, которому даже неизвестно прототипное наследование

8:02
@jsunderhood Скажите, вы когда:нибудь употребляли Хаскелль? :)

внутривенно. А если серьезно, особенно интересен опыт для web'а.

@jsunderhood Скажите, вы когда:нибудь употребляли Хаскелль? :)

8:04
@subzey @jsunderhood есть elm для любителей монад и аппликативов - purescript все это компилится в js

ну, либо что-то вроде github.com/ghcjs/ghcjs

@subzey @jsunderhood есть elm для любителей монад и аппликативов - purescript все это компилится в js

8:12
@jsunderhood при чем тут лямбды к каррингу? Карринг это разбивание ф-ции от n аргументов на n на ф-ций от 1 аргумента и результат есть ф-ция

Я так и разбил. Руками. А говорил, что было бы интересно, если бы JS умел это делать сам (как ML, Haskell).

@jsunderhood при чем тут лямбды к каррингу? Карринг это разбивание ф-ции от n аргументов на n на ф-ций от 1 аргумента и результат есть ф-ция

8:17
@jsunderhood @xgrommx @RusAlexander мне нравится разве что гораздо проще и читабельнее екстендить к примеру веб или реакт -компоненты
8:18
@jsunderhood У elm'а больше упор на реактивность там Signals из коробки по умолчанию

Из всех "реактивных" инструментов\либ во фронтенде, какую (бы) выбрали и почему?

@jsunderhood У elm'а больше упор на реактивность там Signals из коробки по умолчанию

8:20

Кстати, сегодняшняя тема #frp #rxjs #baconjs #mostjs
Делимся мнениями, вопросами, success story

8:27
@jsunderhood @freiksenet_ru @xgrommx @RusAlexander но это не картирование, я не смогу вызвать функцию сразу со всеми аргументами

Можешь, конечно: add(1)(2) :D
Скобки - ограничение моей реализации. Та же Rambda позволит передать все за раз.

@jsunderhood @freiksenet_ru @xgrommx @RusAlexander но это не картирование, я не смогу вызвать функцию сразу со всеми аргументами

8:35
@jsunderhood @freiksenet_ru @xgrommx @RusAlexander все ещё вызываешь её дважды, ну да ладно

Нет, я вызываю ее один раз, она возвращает мне функцию, вызвав которую я получу свое вычисление. Все по ГОСТу.

@jsunderhood @freiksenet_ru @xgrommx @RusAlexander все ещё вызываешь её дважды, ну да ладно

8:39
@jsunderhood ramda

Верно, спасибо.
ramdajs.com/0.19.1/index.h…

@jsunderhood ramda

8:40
@jsunderhood Что значит «реактивный»? Тот, который работает с данными как с потоками?

кратко:
вроде того
полно:
gist.github.com/staltz/868e7e9…

@jsunderhood Что значит «реактивный»? Тот, который работает с данными как с потоками?

8:57
@xgrommx @iamstarkov @jsunderhood @freiksenet_ru @RusAlexander Именно что каррирование — это превращение в набор функций с одним аргументом.
9:00
@webholt @iamstarkov @jsunderhood @freiksenet_ru @RusAlexander вызов ф-ции будет функция пока их длина не будет равна колличеству аргументов
9:00
@xgrommx @iamstarkov @jsunderhood @freiksenet_ru @RusAlexander То есть мы каррируем функцию именно для того, чтобы частично её применить.
9:01
@webholt @iamstarkov @jsunderhood @freiksenet_ru @RusAlexander нет это не основная цель аргументы располагаются по степени мутабельности #1
9:01
@webholt @iamstarkov @jsunderhood @freiksenet_ru @RusAlexander что дает реюзать ф-цию и писать в point-free стиле #2
9:01
@webholt @iamstarkov @jsunderhood @freiksenet_ru @RusAlexander сравни compose(map(fn), filter(p))([1,2,3]) vs map(fn, filter(p, [1,2,3]))
9:01
@xgrommx @iamstarkov @jsunderhood @freiksenet_ru @RusAlexander Сейчас меня загрызут, но чаще мне ООП-мешанина для этой задачи по душе.
9:01
@jsunderhood @xgrommx @RusAlexander Ну зачем? Сделай замыкание, тот же partial application. Не надо городить неочевидное и нечитаемое говно.

Замыкание само по себе никуда не передашь, в отличие от аргументов. Приходится городить ёлочки и пирамидки.

@jsunderhood @xgrommx @RusAlexander Ну зачем? Сделай замыкание, тот же partial application. Не надо городить неочевидное и нечитаемое говно.

9:08
Замыкание само по себе никуда не передашь, в отличие от аргументов. Приходится городить ёлочки и пирамидки. twitter.com/freiksenet_ru/…

Стало быть, замыкание не используешь повторно вне текущего контекста.

Замыкание само по себе никуда не передашь, в отличие от аргументов. Приходится городить ёлочки и пирамидки. twitter.com/freiksenet_ru/…

9:10
@freiksenet_ru @jsunderhood @xgrommx @RusAlexander Ramda.curry((x, y) => x+y)); делайте каррирование очевидным

Представим, что в JS можно было бы
`const add = (x, y) => x +y;`
вызвать и так `add(1,2);`, и так `add(1)(2);`

@freiksenet_ru @jsunderhood @xgrommx @RusAlexander Ramda.curry((x, y) => x+y)); делайте каррирование очевидным

9:13
@jsunderhood монады спасут

само собой

@jsunderhood монады спасут

9:13
@jsunderhood Запилил я как-то подборку по функциональщине github.com/xgrommx/awesom…
9:38
@jsunderhood Кстати про экосистему Elm и Purescript github.com/xgrommx/puresc… и github.com/xgrommx/elm-ec… обновления почти каждый день
11:03

Итак, к проблеме jsfiddle.net/80f80tjq/
У нас есть два простых эмиттера событий, но события тяжело согласовывать и синхронизировать

11:06

Совокупность событий одного эмиттера можно представить как поток, такой поток можно преобразовывать, объединять с другими.

11:10

Тогда, в решении создадим по потоку для каждого эмиттера и укажем, что хотим объединять их суммируя попарно (zip): jsfiddle.net/o8Lbyzp3/

11:12

Нас не интересуют конкретные данные, нас не интересует время. Нас интересует только соотношение потоков: как из данных получить новые данные

11:15
@jsunderhood Все можно представить как поток, даже Array = Stream + Time(0)
11:19

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

11:20
@jsunderhood Rx?
Rx = Observable + Linq + Schedulers
Observable = Collection + Time
У коллекций во времени границы только время их жизни
11:21

Исходное состояние получаем из источников: событий DOM, таймера, констант: Bacon.fromEvent(document.body, "click"); Bacon.constant(42); ..

11:25

результирующие состояние применяем к внешнему миру: Bacon.constant(42).onValue(log); или .subscribe в #rxjs или .observe #mostjs

11:28
@jsunderhood Observables это вывернутые итераторы, если вы понимаете их и знаете lodash + push коллекции, то в этом нет ничего сложного
11:29
@jsunderhood Самая важная фишка что Promise и Observable есть push коллекции, но промисы нельзя отменить и это бывает накладно без dispose
11:31

Зачем это все? Императивно, мы изменяем данные, реагируем на события сохраняем состояния, делаем бесконечные проверки, дебажим.

11:41

Декларативно, при помощи потоков мы можем описать конечный автомат, который укажет состояние в каждый момент времени.

11:43
@lisovskyvlad @freiksenet_ru @fliptheweb @jsunderhood Ждите я тоже скоро буду тут вести неделю, поговорим о много - тулзы, frp и прочее
12:10

что же #frp совсем никому не интересно, не понятно?

16:09
@mygunishot @jsunderhood подробное повествование со слайдами в студию! ;)
16:11
@jsunderhood изначальное значение (Conal Elliott, 1997) интересно и не совсем понятно, а js либы для работы со стримами в целом понятны
16:20
@jsunderhood кстати, в плане api мне нравится github.com/paldepind/flyd
16:22
@jsunderhood с angular2 скоро станет всем интересно и понятно. Там же rxjs из коробки
16:39

Все же о Бэконе. Создадим стрим, который порождает модель. Назначим рендеринг сайд эффектом:
jsfiddle.net/hmufrf35/2/

17:09

Пару кнопок, клики- стримы значений (+1\-1), объединим их в один, модель - редьюс этих значений с помощью суммы. jsfiddle.net/kc25xo3y/2/

17:35
@denswor @jsunderhood наш .net-программист с подробностями - @qwellini1
18:24
@jsunderhood не по теме js, но мне нравится как ребята с гитхаба rx переделали в reactive cocoa.
19:09
@gavrix @jsunderhood в частности, выделение сигналов с subscription side effects в отдельные апи - сигнал продюсеров.
19:09
@gavrix @jsunderhood no hot/cold signal confusion anymore
19:09
@denswor @mygunishot @jsunderhood
а еще они web сервер запилили на libuv как на ноде
19:10

# Четверг 93 твита

@jsunderhood Задача: есть пользователь и у него есть рост, рост может меняться. У пользователя есть друзья - пользователи.
5:04
@jsunderhood Как поддерживать актуальной информацию является ли пользователь самым высокими среди друзей друзей?
5:04
@jsunderhood чистого frp в js нет это скорее reactive composition

Я давно стесняюсь эти три буквы произносить. Очень уж многое называют ими. Conal Elliott негодует.

@jsunderhood чистого frp в js нет это скорее reactive composition

5:05
@YodaPunk @jsunderhood после 18-20 рост почти не меняется. А если меньше, то спрашивать раз в Х времени.

Положим, по условиям меняется. Про опрос: мне кажется, имеется в виду, что момент изменения роста известен, нет?

@YodaPunk @jsunderhood после 18-20 рост почти не меняется. А если меньше, то спрашивать раз в Х времени.

5:13

Сегодня предлагаю обсудить фреймворки и либы в продакшене.

7:29

Рассказывайте, как использовали либы, у которых еще не было релиза и никто не пострадал.

7:29

Рассказывайте, как злые менеджеры\юристы\тимлиды не дают вам использовать любимые инструменты.

7:29

Рассказывайте, как пришли в проект, а там 100 лет назад, кто-то выбрал либу, которая забагована и не развивается, а вы страдаете.

7:30
@jsunderhood Это типа сами написали либу, сами опубликовали, сами использовали.

нет, это типа вы нашли серебряную пулю, а у нее поменялся API :) ну, или создатель утратил интерес к ней.

@jsunderhood Это типа сами написали либу, сами опубликовали, сами использовали.

7:31

Иными словами, делимся опытом. Как решаете добавлять ли либу для чего-либо? Как решаете какую либу использовать?

7:33
@jsunderhood интересно послушать, как юристы кому-то не дали использовать какой-то инструмент)

Ну, не все лицензии всем продуктам подходят, например.

@jsunderhood интересно послушать, как юристы кому-то не дали использовать какой-то инструмент)

7:39
@jsunderhood как-то я взял jquery думая, что мы делаем простой сайтец с парой форм, но в итоге всё зашло слишком далеко
7:39
@jsunderhood в огромном SPA-проекте не используем вообще внешние зависимости. Новички первые три месяца охреневают, а потом норм.

Но ведь всякие Реакты и Ангуляры как раз и нужны, чтобы легче было поддерживать огромные SPA. Или нет?

@jsunderhood в огромном SPA-проекте не используем вообще внешние зависимости. Новички первые три месяца охреневают, а потом норм.

7:42
@jsunderhood Условия заметного аскетизма диктуют необходимость очень аргументированно обосновывать необходимость той или иной либы.

Ну, вот это самое интересное: доводы, причины и подводы.

@jsunderhood Условия заметного аскетизма диктуют необходимость очень аргументированно обосновывать необходимость той или иной либы.

7:43
@jsunderhood Доводы для чего? Для использования или для отказа?

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

@jsunderhood Доводы для чего? Для использования или для отказа?

7:44
@jsunderhood начал фигачить на redux до официального релиза. Сейчас - новый react-intl v2 beta. Полет нормальный.
7:47
@jsunderhood давай, расскажи про свою боль ;)

Ближе к вечеру. С мыслями надо собраться.

@jsunderhood давай, расскажи про свою боль ;)

7:47
@jsunderhood идея в том, что ангуляр бросит это дело и перейдёт на ангуляр2 (например), а мы сами можем развивать свой фреймворк как хотим
7:48
@jsunderhood не писать код для всех случаев, которых у нас не будет и не вводить абстракции, которые нам не нужны
7:48
@jsunderhood Оно должно быть действительно полезно. Всем.

Не очень конкретно звучит. "Ангуляр полезный?" - "Да, давайте использовать".

@jsunderhood Оно должно быть действительно полезно. Всем.

7:50
@jsunderhood А вот с тем, что будет входить в результат сборки, уже сложнее. Жесткие ограничения на размер. Ничего лишнего.
7:50

Статьи по теме, если кто-то пропустил:
habrahabr.ru/company/pvs-st…
habrahabr.ru/post/275485/

7:51
@jsunderhood Вполне корректно. Выбор ангуляра происходил до меня, но, вероятно, как-то так и выглядел :D

И каково теперь? С оптимизмом смотрите в будущее? Действительно много преимуществ по сравнению с vanillaJS?

@jsunderhood Вполне корректно. Выбор ангуляра происходил до меня, но, вероятно, как-то так и выглядел :D

7:52
@jsunderhood полностью согласен с @kojoru Хотя сейчас мы для View стали использовать React в некоторых местах

Для чего реакт? виртуальный дом? другие реализации смотрели?

@jsunderhood полностью согласен с @kojoru Хотя сейчас мы для View стали использовать React в некоторых местах

7:54
@kojoru @jsunderhood а потом им и деваться некуда ¯\_(ツ)_/¯ ловко. Какие фреймворки вы использовали? Ну... bicycle-corp-strap-2.

Кстати, бывает, корпоративным клиентам важно, чтобы либы, которые вы использовали было легко нагуглить.

@kojoru @jsunderhood а потом им и деваться некуда ¯\_(ツ)_/¯ ловко. Какие фреймворки вы использовали? Ну... bicycle-corp-strap-2.

7:55
@jsunderhood Речь про либу, а не про чистый JS? (Неудачное название у неё). Не стану сравнивать тёплое с мягким.

vanilla-js.com

@jsunderhood Речь про либу, а не про чистый JS? (Неудачное название у неё). Не стану сравнивать тёплое с мягким.

7:57
@jsunderhood Хм. Вот сейчас я внимательно вгляделся и понял, в чем подвох. И название вполне уместное :D
7:59
@hellbeast92 @jsunderhood Плюс легаси. У фреймворков редко есть хорошая история как безболезненно переводить туда большие проекты
8:00
@jsunderhood Не, на ванильном js далеко не уехали бы.

А вот @kojoru едет. Думается, он не единственный.

@jsunderhood Не, на ванильном js далеко не уехали бы.

8:01
@jsunderhood @kojoru Не сомневаюсь. Кто мы такие, если не пишем свои велосипеды?
8:08
@jsunderhood на самом деле причина проста - jsx. Оказалось что удобно. Саппорт очень быстро это всё освоил и доделывает для клиентов.
8:09
@kojoru @jsunderhood А как вы привлекаете новых разработчиков? У меня прилично знакомых, для которых факт работы над чем-то самописным...

Мы привлекаем тех, кто готов работать с кодом, с продуктом, а не с тем фреймворком, который изучил :D

@kojoru @jsunderhood А как вы привлекаете новых разработчиков? У меня прилично знакомых, для которых факт работы над чем-то самописным...

8:11
@iamakulov_ @jsunderhood с другой стороны я помню, как на прошлой работе мы с гордостью писали что у нас Angular. Теперь бы все смеялись
8:11
@jsunderhood Лайк. Но разработчики стремятся ещё и за опытом и классными фишками. С Реактом их будет больше, чем с самописным фреймворком.
8:16
@webholt @jsunderhood "о, смотрите, появился новый фраемворк! давайте его использовать!"

"Он решит все проблемы на земле"

@webholt @jsunderhood "о, смотрите, появился новый фраемворк! давайте его использовать!"

9:41
@_sashashakun @jsunderhood было такое в практике лет 13назад.Библиотеки генерации диаграмм и XLS были зарублены юристами.А альтернативы хуже
9:41
@kojoru @jsunderhood вы очень сильно подрываете командную работу этим. С самопалом удобно работать только его автору.

Неплохой аргумент. Наверно. А API third-party всегда удобны и всем понятны?

@kojoru @jsunderhood вы очень сильно подрываете командную работу этим. С самопалом удобно работать только его автору.

9:44
@_sashashakun @jsunderhood могу соврать,кажется для XLS надо было свой продукт вывести в опенсаурс,а фин.корпорации это не надо
9:46
@jsunderhood через 2-3 года ты вроде и следил, и разобраться можешь, боролся за перенесение фич в этот фреймворк, но опыт крут только внутри

Опыт разработки переносим. А если вы не штампуете однотипные сайтики, то специфика у работы\продукта будет всегда.

@jsunderhood через 2-3 года ты вроде и следил, и разобраться можешь, боролся за перенесение фич в этот фреймворк, но опыт крут только внутри

9:50
@jsunderhood По крайней мере вся команда в равном положении. Кривизну API обычно компенсирует документация и best-practices

Почему вся команда не может контрибьютить в этот (свой) фреймворк?

@jsunderhood По крайней мере вся команда в равном положении. Кривизну API обычно компенсирует документация и best-practices

9:51
@jsunderhood кстати, не стоит забывать, что в своё время фейсбук не просто использовал свой велосипед (фу!), но и вьюхи пихал в js (ФУУУУ!)
9:52
@iamakulov_ @jsunderhood уверен, что таким ребятам в любом случае интереснее будет в маленьких новых проектах, а не в ползучем легаси.

А не любой ли успешный проект превращается в легаси? На всех задорных стартапов не хватит.

@iamakulov_ @jsunderhood уверен, что таким ребятам в любом случае интереснее будет в маленьких новых проектах, а не в ползучем легаси.

9:55
@jsunderhood Самопал имеет право на жизнь при условии, что он open-source first. Какой интерес конрибьютить в поделку-однодневку?

Вот тут надо сказать, что бывают проекты, которые делают Х и надо написать к У. А бывают, которые пишут годами.

@jsunderhood Самопал имеет право на жизнь при условии, что он open-source first. Какой интерес конрибьютить в поделку-однодневку?

9:58
@jsunderhood с текущим темпом развития индустрии, любой проект через 2 недели разработки - уже легаси.

Использующий безнадежно устаревшие технологии\подходы\либы\фреймворки. Правда, все тот же JavaScript

@jsunderhood с текущим темпом развития индустрии, любой проект через 2 недели разработки - уже легаси.

10:01
@jsunderhood только зафиксировал версии зависимостей - все, в дом престарелых пристраивают(

Я бы всегда фиксировал. API меняется.

@jsunderhood только зафиксировал версии зависимостей - все, в дом престарелых пристраивают(

10:04
@jsunderhood, если речь идет об OS, пускай даже с контрибьюторами внутри компании, тогда все хорошо. Fb реакт не в закромах под NDA делал же

Ну, так и не для себя же. А потому, что нас любит.

@jsunderhood, если речь идет об OS, пускай даже с контрибьюторами внутри компании, тогда все хорошо. Fb реакт не в закромах под NDA делал же

10:08
@jsunderhood Тем более, у этого мега-поделия не будет главного преимущества - минимализма. Нафига все это надо было тогда?

Почему нет минимализма? Как раз пишется под себя, под свои задачи. Уже говорили тут, что нет лишних мега абстракций.

@jsunderhood Тем более, у этого мега-поделия не будет главного преимущества - минимализма. Нафига все это надо было тогда?

10:10
@jsunderhood А у вас, кстати, свои технологии или популярные рыночные?

У нас много web проектов. Есть всякое. Есть свои, есть с BB, есть Angular и, вроде, React. А есть Qooxdoo, конечно.

@jsunderhood А у вас, кстати, свои технологии или популярные рыночные?

10:11
@iloldhardly @jsunderhood реакт делали именно в закромах под NDA. Опен-сорсили его позже, после переделки для инстаграм-команды.
10:13
@Bardty @jsunderhood темп развития тут не причём, любой написанной код это легаси. Таково свойство кода.
10:14

А еще, стоит различать библиотеки и фреймворки. От первых (теоретически) избавиться проще.

10:15
@jsunderhood за много лет задач будет много, будет много абстракций и легаси. и ненависти всех-не-авторов.

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

@jsunderhood за много лет задач будет много, будет много абстракций и легаси. и ненависти всех-не-авторов.

10:18
@kojoru @iloldhardly @jsunderhood Расскажите, как сделать самописный фреймворк, который будут любить, а не ненавидеть?

Во-первых, ненавидеть будут всегда. Во-вторых, надо спросить авторов фреймворков, которые тебе нравятся :)

@kojoru @iloldhardly @jsunderhood Расскажите, как сделать самописный фреймворк, который будут любить, а не ненавидеть?

10:25
@jsunderhood Еще раз, это верно (да и то сомнительно) только для авторов, другие будут проклинать этот огромный кривой велосипед.

Решительно не понимаю, кто другие?

@jsunderhood Еще раз, это верно (да и то сомнительно) только для авторов, другие будут проклинать этот огромный кривой велосипед.

10:27
@jsunderhood всегда есть автор/вдохновитель и так далее и все остальные, включая новых сотрудников.

Новые\другие всегда будут приходить и ненавидеть и хотеть все переписать на Ангуляре\Реакте\Что-там-модно-сейчас

@jsunderhood всегда есть автор/вдохновитель и так далее и все остальные, включая новых сотрудников.

10:31
@jsunderhood кстати с точки зрения соискателя я бы в контору с велосипедами не пошел был. какая перспектива вникать в это?

Опыт. Названия не важны. API не важны. Важны принципы. Важны: MVC, Observer, Two-way data binding, virtual DOM, etc.

@jsunderhood кстати с точки зрения соискателя я бы в контору с велосипедами не пошел был. какая перспектива вникать в это?

10:34
@kojoru @iloldhardly @jsunderhood В моём опыте был долгосрочный проект с самописным фреймворком. Половина команды его сильно не любила.

В моем опыте был проект на неподходящем фреймворке, который все ненавидели. Кололись, плакали, но жрали.

@kojoru @iloldhardly @jsunderhood В моём опыте был долгосрочный проект с самописным фреймворком. Половина команды его сильно не любила.

10:40
@jsunderhood А как понять, что в команде крутые чуваки, которые знают и применяют эти принципы и при необходимости смогут научить?

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

@jsunderhood А как понять, что в команде крутые чуваки, которые знают и применяют эти принципы и при необходимости смогут научить?

10:44
@jsunderhood его ненавидели потому что он не подходил или потому что он сам по себе был плох?

Никто не знает. По назначению его не применяли :) Хотя, @lqip32 вы же применили? почему переписываете все теперь? :)

@jsunderhood его ненавидели потому что он не подходил или потому что он сам по себе был плох?

10:47
@jsunderhood А на что стоит ориентироваться? Посоветуй какие-то маркеры, пожалуйста. У меня небольшой опыт собеседований.

Дело личное. Цель собеседования - понять подходишь ли ты команде под задачу и подходят ли команда, условия тебе.

@jsunderhood А на что стоит ориентироваться? Посоветуй какие-то маркеры, пожалуйста. У меня небольшой опыт собеседований.

10:51
@iamakulov_ @jsunderhood спроси о том, что вдохновляет в их работе, о масштабировании, о планах на будущее

Спроси, как(чьи) идеи оцениваются и попадают в продукт. Спроси о балансе время на новые фичи\ на исправление багов.

@iamakulov_ @jsunderhood спроси о том, что вдохновляет в их работе, о масштабировании, о планах на будущее

10:53
@iamakulov_ @jsunderhood спроси о том, что вдохновляет в их работе, о масштабировании, о планах на будущее
10:54
@jsunderhood А на что стоит ориентироваться? Посоветуй какие-то маркеры, пожалуйста. У меня небольшой опыт собеседований.

Используют ли они OSS фреймворки\либы и как выбирали, есть ли недовольные :) Обращай внимание на авторитарность.

@jsunderhood А на что стоит ориентироваться? Посоветуй какие-то маркеры, пожалуйста. У меня небольшой опыт собеседований.

10:58
@jsunderhood из-за того, что перед нами стоят новые задачи, которые сложно сделать с использованием старого фреймворка.
11:06
@jsunderhood А авторитарность при чём?

Опасно же. Человек не приемлет других мнений, а вдруг он чего-то не знает или не прав. А ты учишься :)

@jsunderhood А авторитарность при чём?

11:11

Кто-то уже запустил Cycle.js в продакшен?

11:18
@Bardty @jsunderhood Ну какие темпы развития? MVC был описан в 1979. 90% проектов - это роуты, контролеры, шаблоны ...

Описан в академических кругах? Адаптация не быстра. И потом, после MVC появлялись MVP, MVVM, MVI, наконец.

@Bardty @jsunderhood Ну какие темпы развития? MVC был описан в 1979. 90% проектов - это роуты, контролеры, шаблоны ...

11:27
@krasivieglaza @jsunderhood тем не менее, требования к функциональности и сложности приложений растут. Появляются новые инструменты.
11:36
@krasivieglaza @jsunderhood речь не про классичские архитектуры, а про борьбу со сложностью в конкретных аспектах.
11:36
@Bardty @jsunderhood Когда начинаешь понимать их основные принципы и устройство, то совершенно не важно, какой фреймворк используешь
11:53
@krasivieglaza @jsunderhood согласен абсолютно. В изначальном твите была ирония. Но у инструментов есть свои преимущества и недостатки.
11:53
@Bardty @jsunderhood "Все хорошие специалисты намного менее ревностно относятся к выбору фреймворков, чем начинающие." Отл. слова @mourner.

Бывает, на собеседованиях спрашивают, как выбирать и даже какой выбрать из {X, Y, Z}. И даже бывает правильный ответ

@Bardty @jsunderhood "Все хорошие специалисты намного менее ревностно относятся к выбору фреймворков, чем начинающие." Отл. слова @mourner.

11:59
@jsunderhood Как поддерживать актуальной информацию является ли пользователь самым высокими среди друзей друзей?

Интересная же задача. Никого не зацепило?

@jsunderhood Как поддерживать актуальной информацию является ли пользователь самым высокими среди друзей друзей?

12:06
@jsunderhood самый норм у Elm - MVU
12:16
@ymatuhin @jsunderhood давайте не рост, а вес? Любое меняющееся свойство

Деньги, я предлагаю деньги. Жизненно.

@ymatuhin @jsunderhood давайте не рост, а вес? Любое меняющееся свойство

12:17
@jsunderhood Elm => View = Update(Action, Model) ~ Update(Model')

Ёмко, но надо немного разбираться о чем речь.

@jsunderhood Elm => View = Update(Action, Model) ~ Update(Model')

12:22
@jsunderhood У злого Штальца есть это) staltz.com/unidirectional…
12:27
@jsunderhood Если грубо - то вот

How I understand the reactive Flux pic.twitter.com/qTG1UjBbcf

12:28
@xgrommx @jsunderhood Elm очень крутой, можно запрограммировать своего марио! elm-lang.org/examples/mario

не то что на других языках

@xgrommx @jsunderhood Elm очень крутой, можно запрограммировать своего марио! elm-lang.org/examples/mario

12:29
@lisovskyvlad @jsunderhood На Rx тоже) дело времени github.com/Reactive-Exten…
12:29
@jsunderhood тут вопрос про TCO. И похоже babel не верно ее делает (здесь не применимо), иначе старый код ломается, чего быть не должно

Именно, о том и речь была, что надо знать о ТСО и что замыканиях, чтобы понять почему результат неожиданный.

@jsunderhood тут вопрос про TCO. И похоже babel не верно ее делает (здесь не применимо), иначе старый код ломается, чего быть не должно

12:36
@jsunderhood оаз уж про Elm заговорили, то там сила в комбинации ФП со строгой типизацией и компилятором.

Строгая типизация - панацея?

@jsunderhood оаз уж про Elm заговорили, то там сила в комбинации ФП со строгой типизацией и компилятором.

12:37
@jsunderhood ничто не панацея. Но помощь разработчику - да. За счет явности и предсказуемости.

channel9.msdn.com/Series/Beckman…

@jsunderhood ничто не панацея. Но помощь разработчику - да. За счет явности и предсказуемости.

12:47
@jsunderhood Первое видео тут xgrommx.github.io/rx-book/conten… - самое лучшее для понимания реактивности

Brian Beckman, Erik Meijer - вообще рекомендую: просто и понятно о сложном.

@jsunderhood Первое видео тут xgrommx.github.io/rx-book/conten… - самое лучшее для понимания реактивности

13:00
@jsunderhood все же это больше похоже на ошибку. TCO по идее не должна влиять на логику кода, это внутренняя оптимизация...

Это и есть ошибка. Вопрос был в том, как понять откуда ноги растут - пойти и отключить TCO в бабеле.

@jsunderhood все же это больше похоже на ошибку. TCO по идее не должна влиять на логику кода, это внутренняя оптимизация...

13:34
@jsunderhood нет, но что если я скажу тебе, что в runtime не бывает ошибок принциально?

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

@jsunderhood нет, но что если я скажу тебе, что в runtime не бывает ошибок принциально?

13:39
@jsunderhood Ни единой "TypeError: 'undefined' is not a function". Можно сконцентрироваться на логике. Ладно, в типах я сам не шарю.

repl.it/Bjkf
концентрироваться надо на проверках на null, а не на логике :D

@jsunderhood Ни единой "TypeError: 'undefined' is not a function". Можно сконцентрироваться на логике. Ладно, в типах я сам не шарю.

13:51

К вопросу о статической типизации, в JavaScript нам просто нужен вывод типов, конечно: ru.wikipedia.org/wiki/%D0%92%D1…

13:59
@jsunderhood Flow, Typescript?

Теперь можно и Flow, ocamlpro.com/pub/ocpwin/flo…

@jsunderhood Flow, Typescript?

14:06
@jsunderhood или Maybe монада)
14:06
@xgrommx @jsunderhood maybe монада, а maybe и не монада…

Монада Шрёдингера.

15:03
Пацаны, добавьте знаний, а?

github.com/mr-mig/going-t…

@backendsecret
@jsunderhood

Набегаем! Заодно тут делимся фантазиями на тему.

Пацаны, добавьте знаний, а?

github.com/mr-mig/going-t…

@backendsecret
@jsunderhood

17:04

# Пятница 51 твит

В ленту @jsunderhood и @backendsecret ;)

Вот я прямо идеальное описание bash.im/quote/437818

3:13

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

5:50

Есть ли у вас выделенные аналитики, дизайнеры, UX, верстальщики.

5:50

Пишете ли e2e тесты? Сами? есть ли QA\QC - внутри команды или отдельная группа?

5:50

Работал в команде с PO, BA, UX, дизайнером. Довольно удобно, каждый занимается своим делом, но приходится много согласовывать усилия.

5:55

В плане тестов писал сам, писали QA внутри команды и была отдельная команда (разные проекты). Понравился второй вариант.

6:01
@jsunderhood за много лет видел лишь одного QA, который писал тесты (на api). Остальные - тупо кликеры...

Бывает, разделяют QA и QA Automation должности. Не доводилось сталкиваться?

@jsunderhood за много лет видел лишь одного QA, который писал тесты (на api). Остальные - тупо кликеры...

6:03
@jsunderhood Как поддерживать актуальной информацию является ли пользователь самым высокими среди друзей друзей?

вот такой набросок решения:
jsfiddle.net/5ow0rc4t/

@jsunderhood Как поддерживать актуальной информацию является ли пользователь самым высокими среди друзей друзей?

6:10
@jsunderhood У нас, кстати, два QA и два QA Automation

Привязаны к одному продукту? Как успехи? Что используете для e2e?

@jsunderhood У нас, кстати, два QA и два QA Automation

6:18

Сегодня в рубрике "Задача дня": make this work:
const result = plus(one(), 10, mult(two(), three(), 5));
log(result); // 41

6:31
@jsunderhood а чего здесь сложного?

Ничего, пятница же :)

@jsunderhood а чего здесь сложного?

6:54
@jsunderhood А решения в лоб ждём или каких-нибудь хитростей?) :: jsfiddle.net/aeu665tz/

Мило, в reduce можно же без инита? А так:
const result = plus(one(), 10, v('a'), plus(two()), three())({
a: 1
});

@jsunderhood А решения в лоб ждём или каких-нибудь хитростей?) :: jsfiddle.net/aeu665tz/

6:58
@jsunderhood давай разберемся – const только "для констант" или правильный способ объявлять переменные?

Правильный способ? В каком смысле? const - просто гарантия того, что присваивание значения произойдет один раз.

@jsunderhood давай разберемся – const только "для констант" или правильный способ объявлять переменные?

8:28
@jsunderhood как-то не красиво) Immutable.js был бы лучше тут

ждем твое решение :)

@jsunderhood как-то не красиво) Immutable.js был бы лучше тут

8:31
@jsunderhood, ввязываюсь только ради подвоха: codepen.io/kinday/pen/bEm…
8:32
@webholt @jsunderhood log = () => 41

но ведь это magic number. Надо эксплицировать:
const THE_CORRECT_ANSWER = 41;
const log = () => THE_CORRECT_ANSWER;

@webholt @jsunderhood log = () => 41

8:36
@jsunderhood на практике по должностям не делили, скорее по обязательствам. QAA писал тесты на селениуме, безуспешно

Почему безуспешно? Не стабильно? На голом селениуме?

@jsunderhood на практике по должностям не делили, скорее по обязательствам. QAA писал тесты на селениуме, безуспешно

8:40
@jsunderhood +1 за вариант 2. но такое только у "взрослых" команд есть. лучше тестов, чем от хороших программистов, не видел.
8:41
The right way process JavaScript exception. pic.twitter.com/sMXqHICudI
9:19
@jsunderhood тесты проходили медленно, дорого их было поддерживать при развитии UI. дешевле автотестировать бизнес-логику, а UI - вручную.
9:20
@jsunderhood Правильный именно в этом смысле – гарантии однократного присваивания.

Тогда правильный. С примитивными типами все хорошо. С объектами: Object.freeze(), Immutable.js, ...

@jsunderhood Правильный именно в этом смысле – гарантии однократного присваивания.

10:01
@RinatGilmanov @jsunderhood ручное тестирование UI - это всегда отмазка не писать тесты.Что типа всё так быстро меняется что не успеть!Имхо.
10:02
@vlkosinov @jsunderhood забыл вообще когда последний раз писал let. наверное в for of только. какие есть ещё кейсы, зачем переопределять?

В циклах, если не использовать forEach, map, reduce и рекурсию.
В замыканиях (когда инициализация асинхронна).

@vlkosinov @jsunderhood забыл вообще когда последний раз писал let. наверное в for of только. какие есть ещё кейсы, зачем переопределять?

10:05
@taujavarob @jsunderhood согласен. но в моих проектах UI не нёс бизнес-логики, и ручного тестирования хватало для отлова UX-багов
10:06
@jsunderhood Object.freeze изрядно тормозит)

Тормозит. Можно просто не менять :) JS итак держится на конвенциях: что можно, что хорошо, а что плохо. Ну, и либы.

@jsunderhood Object.freeze изрядно тормозит)

10:14
@milk_is_my_life @vlkosinov @jsunderhood если не путаю, то в for of тоже работает const. Потому что на каждой итерации инициализируется.

for (const i = 0; i < 10; i++) {
console.log(i);
}

тоже можно выполнить :) выполняться долго будет, правда

@milk_is_my_life @vlkosinov @jsunderhood если не путаю, то в for of тоже работает const. Потому что на каждой итерации инициализируется.

10:21
@RinatGilmanov @jsunderhood про подход - сначала тесты потом код не вспоминали. - типа дорого и долго. 👻

Может, и не дорого: надо сдать быстро и забыть - дорого. Если постоянно (годами) пишете один продукт - окупится.

@RinatGilmanov @jsunderhood про подход - сначала тесты потом код не вспоминали. - типа дорого и долго. 👻

10:24
@RinatGilmanov @jsunderhood тесты идеально чтобы писал не тот кто пишет тестируемых код - и писал бы раньше чем код напишется! Имхо. 👻

"Я тебе тут тесты написал - сиди проектируй как хочешь, но вот твои классы, методы, сигнатуры"

@RinatGilmanov @jsunderhood тесты идеально чтобы писал не тот кто пишет тестируемых код - и писал бы раньше чем код напишется! Имхо. 👻

10:37
@milk_is_my_life @jsunderhood а зачем let в 'for of'? pic.twitter.com/bueqr8o0l1

[1,2,3].map(x => () => x)

@milk_is_my_life @jsunderhood а зачем let в 'for of'? pic.twitter.com/bueqr8o0l1

10:40
@jsunderhood @RinatGilmanov "и чтоб к пятнице всё тесты проходили!" 👻 идеал. 👍🏻
11:22
@jsunderhood к слову о let/const. Привычный нам пример с setTimeout в цикле в случае с let может удивить. pic.twitter.com/fduSGABuNi

Кстати, хорошее решение этой "классической" задачи.

@jsunderhood к слову о let/const. Привычный нам пример с setTimeout в цикле в случае с let может удивить. pic.twitter.com/fduSGABuNi

11:23
@milk_is_my_life @jsunderhood продублирую – exploringjs.com/es6/ch_variabl…

let и const в циклах

@milk_is_my_life @jsunderhood продублирую – exploringjs.com/es6/ch_variabl…

11:25
@jsunderhood @RinatGilmanov но проблема:билд падать не должен. Как сделать если тесты писать перед кодом? - в комите они(тест и код)вместе!👻

ветки?

@jsunderhood @RinatGilmanov но проблема:билд падать не должен. Как сделать если тесты писать перед кодом? - в комите они(тест и код)вместе!👻

11:27
@RinatGilmanov @jsunderhood архитекторы точно есть.👻 они пишут интерфейсы.Кодер пишет тест и код для него.И делает комит этого малого куска.
11:28
@RinatGilmanov @jsunderhood нет конечно. Тесты пишутся только и только для тестирования имплементации интерфейсов. 👻

@taujavarob @jsunderhood в тестах использовать моки для ещё не реализованных методов/классов?

11:32
@jsunderhood выделенные роли ускоряют разработку, но каждый спец должен хотя бы немного вникать в смежные области и доделывать по необходим.
11:34
@Timrael @jsunderhood выделенные поли ускоряют разработку, но портят людей. Шаг влево, шаг вправо - работа встала. “Это не моя проблема”.

Тоже бывает. Надо вникать и помогать в смежных ролях.

@Timrael @jsunderhood выделенные поли ускоряют разработку, но портят людей. Шаг влево, шаг вправо - работа встала. “Это не моя проблема”.

11:39

Подвох к утренней задаче
const result = plus(one(), 10, v('foo'), mult(two(), three(), 5));
log(result({ foo:1 })); // 42
Добавим переменные

12:13

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

12:13
@jsunderhood, а есть пример идеального решения в вакууме?

Наверно, не идеальное, но авторское:
gist.github.com/nikitadyumin/6…

@jsunderhood, а есть пример идеального решения в вакууме?

15:33
@jsunderhood Правки оказались довольно большими, но если не заморачиваться с valueOf, то их немного es6fiddle.net/ik9pn1oq/

А вот хороший разработчик сохранил обратную совместимость:

@jsunderhood Правки оказались довольно большими, но если не заморачиваться с valueOf, то их немного es6fiddle.net/ik9pn1oq/

15:37
@jsunderhood там вот это: learn.javascript.ru/let-const

let-const на русском:

@jsunderhood там вот это: learn.javascript.ru/let-const

15:42

Пятница, вечереет. Время решающего коммита, дамы и господа. И пусть продакшен содрогнется!

16:19
@jsunderhood как вы угадали то? 👻

Опыт подсказывает: важные коммиты всегда приходятся на пятницу, самые важные - на пятницу перед отпуском.

@jsunderhood как вы угадали то? 👻

17:42
@jsunderhood @taujavarob релизиться перед отпуском грешновато

простые истины с @jsunderhood

@jsunderhood @taujavarob релизиться перед отпуском грешновато

18:05
@jsunderhood Первое правило клуба анонимных разработчиков: не деплоить в пятницу!
18:06
@pgrekovich @jsunderhood и самый простой способ его соблюсти: задеплоить в 0:01 в субботу

суббота не для работы

@pgrekovich @jsunderhood и самый простой способ его соблюсти: задеплоить в 0:01 в субботу

18:15
@pgrekovich @jsunderhood в Казани есть конторы, где это обязательное правило "деплой в пятницу не по фен-шую" )))

жаль, что только там...

@pgrekovich @jsunderhood в Казани есть конторы, где это обязательное правило "деплой в пятницу не по фен-шую" )))

18:38
@jsunderhood неплохой слона для VPN: «суббота не для работы, только если у вас нет VPN! VPN - и работа с вами и дома!»
19:03

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

@jsunderhood ну вроде как основатели из США, так что может еще где в России филиалы есть)

А, понятно, почему не дают деплоить в (нашу) пятницу. Им потом разбираться весь день в свою.

@jsunderhood ну вроде как основатели из США, так что может еще где в России филиалы есть)

6:22
@jsunderhood наверное) но нам это подали как "деплой в пятницу грозит испорченным уикэндом"

Звучит логично

@jsunderhood наверное) но нам это подали как "деплой в пятницу грозит испорченным уикэндом"

7:14

Интерактивные и наглядные описания операций над #rxjs Observables.

rxmarbles.com

12:05
Кому скучно, можете потроллить: top.fse.guru/how-to-pick-a-…

@jsunderhood @cssunderhood

How To Pick a Frontend Web Framework

Кому скучно, можете потроллить: top.fse.guru/how-to-pick-a-…

@jsunderhood @cssunderhood

12:20

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

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

14:05

Напомню, на этой неделе с вами был @NikitaDyumin "Прикладные технологии" Челябинск.

14:12

Екатеринбург, Челябинск, Пермь, Ижевск, Астана, Ростов, все, кто рядом, обратите внимание на региональное сообщество @frontendfellows

14:15
@jsunderhood Хочешь рассказать о чём-нибудь на @frontendfellows в Челябинске?

Можно. Я бы еще поговорил о bacon\rx\most - это по делу. Либо за жизнь: легаси, фреймворки, обучение, собеседования.

@jsunderhood Хочешь рассказать о чём-нибудь на @frontendfellows в Челябинске?

14:58
@jsunderhood И как понять то, что происходит здесь? pic.twitter.com/fY3TNaZiEJ

console.log(0.5) возвращает undefined, что само собой не функция, но ты вызываешь это с результатом (function(){}())

@jsunderhood И как понять то, что происходит здесь? pic.twitter.com/fY3TNaZiEJ

15:10

Вот вам и совет напоследок: "всегда ставьте точку с запятой"

15:15
@jsunderhood Мне не нравится совет. «Всегда ставьте точку с запятой, если не знаете, как работает коррекция ошибок относительно неё».

Тогда вам еще пара советов не понравится: "не используйте ==" и "не используйте with"

@jsunderhood Мне не нравится совет. «Всегда ставьте точку с запятой, если не знаете, как работает коррекция ошибок относительно неё».

15:20

А в этой ситуации "use strict" ничего не меняет. Вера в него преувеличена. twitter.com/webholt/status…

15:22
@jsunderhood Про with нравится. Про «==» замечание аналогичное.

Если намучиться и понять with, можно потом ходить и говорить, что там тоже все тривиально. Ну, до очередного WTF

@jsunderhood Про with нравится. Про «==» замечание аналогичное.

15:26
@jsunderhood никогда не ставлю
15:27
@jsunderhood Всегда ставлю.
15:27
@jsunderhood Хотел сказать про пользование линтерами, но не в ту степь понесло.

Линтеры - хорошо. Но, в основном, полагайтесь на себя: пишите простой, понятный и , стало быть, надежный код.

@jsunderhood Хотел сказать про пользование линтерами, но не в ту степь понесло.

15:30

Чтобы понять JavaScript, надо думать как JavaScript.

15:38
@jsunderhood прорекламируйте что-ли JavaScript Паттерны Стояна Стефанова или хотя-бы так: shichuan.github.io/javascript-pat…

Рекламирую

@jsunderhood прорекламируйте что-ли JavaScript Паттерны Стояна Стефанова или хотя-бы так: shichuan.github.io/javascript-pat…

15:52
@jsunderhood @webholt так как всё новое в JS есть синтаксический сахар - то просто писать уже на выйдет. 👻

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

@jsunderhood @webholt так как всё новое в JS есть синтаксический сахар - то просто писать уже на выйдет. 👻

15:54
@jsunderhood @webholt он не мешает. Он как наркотик. 👻 twitter.com/jsunderhood/st…

Лекарство от сложного кода простое - пишите не для себя, пишите для других, даже если вы один в команде.

@jsunderhood @webholt он не мешает. Он как наркотик. 👻 twitter.com/jsunderhood/st…

15:57
@jsunderhood @webholt э, другой может быть гуру или джуниор. 👻

именно

@jsunderhood @webholt э, другой может быть гуру или джуниор. 👻

16:00
@pytkin @jsunderhood а их надо рекламировать?

Однажды я прочитал Стефанова и устроился на работу.

@pytkin @jsunderhood а их надо рекламировать?

16:04
@jsunderhood @webholt но гуру код для джуниора покажется пресным, а джуниору код для гуру покажется магическим. 👻 twitter.com/jsunderhood/st…

Не думаю, гуру доволен, когда код ему понятен, джун радуется, когда ему понятно и вам должно радоваться за ваш код.

@jsunderhood @webholt но гуру код для джуниора покажется пресным, а джуниору код для гуру покажется магическим. 👻 twitter.com/jsunderhood/st…

16:07
@jsunderhood @webholt кстати пример:
if (flag) {
next()
}
Или?:
flag && next()
Первый ясен - второй краток. - что выбираем? 😊

Первый, само собой. Ибо завтра у вас добавится еще условие или еще действие. В дебаге проще. История в git чище.

@jsunderhood @webholt кстати пример:
if (flag) {
next()
}
Или?:
flag && next()
Первый ясен - второй краток. - что выбираем? 😊

16:46
@jsunderhood @webholt Второй пример:
function (x) {
x = x+5;
return x;
}
Или?:
x => x+5;
Первый ясен, второй краток. Что выбираем?

Делай return x+5. Fat arrow хорош для простых шаблонных функций без side effects. Если что-то сложнее - function ИМЯ

@jsunderhood @webholt Второй пример:
function (x) {
x = x+5;
return x;
}
Или?:
x => x+5;
Первый ясен, второй краток. Что выбираем?

16:49

github.com

jsfiddle.net

other