dan_abramov

22 июня 2015, Санкт-Петербург

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

Привет! Меня зовут @dan_abramov. Я веду @jsunderhood на этой неделе.

9:59

Люди часто думают, что меня зовут Денис. Но я Даниил. Денис — это совсем не я.

10:00

Я активно участвую в жизни англоязычного React сообщества. В русскоязычной части индустрии я почти никого не знаю, так что будем знакомы!

10:00

На этой неделе я готовлюсь к выступлению на React Europe. Буду рассказывать, как React позволяет писать приложения, не нажимая F5.

10:00

До React я какое-то время жил с Backbone/jQuery. До этого делал нативное приложение для iPad на Xamarin iOS. До этого писал под Windows.

10:00

В детстве я мечтал собрать радио. Я нарисовал схему и купил детали в «Чип и Дип». Даже паяльник и канифоль купил. Но руки не дошли.

10:00

Я пока план тем не составлял, но сегодня пойду стричься и составлю. О чем вы хотите поговорить?

10:00
@jsunderhood но не потому, что ты нажимаешь CMD+R, right?
10:02

Не захожу… Теперь я только в Reactiflux Slack-e. Рекомендую: reactiflux.com @sudodoki

10:03

Застал меня врасплох. Хм. Смотрю сериалы. Люблю вкусно покушать. Полежать на солнышке. В общем, сейчас ничем. @anton_davydov

10:05

Там хорошие тематические каналы. Типа #redux про мою новую библиотеку например. ;-) @sudodoki

10:06

Для начала в React важно въехать философически. «Что это вообще такое и зачем.» Лонгрид: jlongster.com/Removing-User-… @anton_davydov

10:08

В более практичных вопросах здесь очень хорошая подборка: github.com/enaqx/awesome-… @anton_davydov

10:09

В идеале React'а не станет, и он растворится в браузере: youtube.com/watch?v=4anAwX… @astralian

10:10
I say with confidence as a former UIKit author: React's model for the UI layer is vastly better than UIKit's. React Native is a *huge* deal.

Но пока он не растворился, даже авторы UIKit из iOS считают, что это не пустой хайп: @astralian

I say with confidence as a former UIKit author: React's model for the UI layer is vastly better than UIKit's. React Native is a *huge* deal.

10:11

В React не нужны темплейты. В этом его сила. Если увидишь react-templates, закрой глаза и считай до десяти. @anton_davydov

10:12

Есть и более экспериментально-интересные вещи, типа Cycle.js. Но React лидирует в категории «прагматичная инновация». @astralian

10:13

Я не делаю TDD, поэтому не могу ответить как следует. Важно, что в React-компонентах не должно быть логики @roman01la

10:14

Поэтому даже когда я пишу тесты, я пишу их не для компонентов, а для того, что ими управляет. @roman01la

10:14

Если надо тестировать компонент, для меня это знак, что из него надо что-то вынести. @roman01la

10:15

Нет. Cycle может, но он слишком сырой пока что. @astralian

10:15

Новички часто не понимают, чем силен React. Он силен констрейнтами, которые он налагает. Похожая сила есть в ФП. @astralian

10:16
Пользуясь случаем, прошу у @dan_abramov прощения за то, что много месяцев звал его Денисом ¯\_(ツ)_/¯ / @jsunderhood
10:17

Любая логика. Если надо тестировать какую-то логику, скорее всего это должна быть функция или внешний объект @RusAlexander @roman01la

10:18

Да, это крайний случай, согласен. Для таких компонентов стоит писать тесты. И то я бы скорее вынес логику управления.. @roman01la

10:18

Например у тебя может быть объект MaskedInputValue, который имеет acceptChar(char, position) и onChange. @roman01la

10:19

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

10:20
React wouldn't be React without: (1) render() is idempotent, (2) setState is the only way to re-render, (3) components all the way down.

Я немножко про это твитил здесь: @astralian

React wouldn't be React without: (1) render() is idempotent, (2) setState is the only way to re-render, (3) components all the way down.

10:21

Что вас радует и что расстраивает в JS комьюнити?

10:27

Моя позиция — хранилища должны быть pure функциями. Поэтому я написал Redux: github.com/gaearon/redux @roman01la

10:31

Например, меня расстраивает, что люди всё ещё всерьёз создают новые библиотеки с two way data bindings.

10:33

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

10:34

Amok пока недостаточно стабилен, чтобы о нем строго судить. Я думаю, его ниша — императивные кодбазы и быстрые прототипы. @somerandstring

10:36

Мне кажется это «есть время разбрасывать камни и есть время их собирать». Ищем, находим, ищем, находим. @listochkin

10:37
@jsunderhood радует что жсеры все еще самые харизматичные, расстраивает что все больше жавистов лезут в жс со своим самоваром и типами
10:39
@jsunderhood меня расстраивает что нету оценки модулей/библиотек кроме рейтинга в гитхабе (т.е. популярности)
10:39
@jsunderhood меня расстраивает постоянная тяга людей к уничтожению разнообразия. Все на Хром, все на Реакт, все на Babel - это неверный путь
10:39
@listochkin @jsunderhood это нормально в нашем нарциссичном обществе. Идеализация и разочарование - главное активнее. и быстрее и чаще
10:40
@jsunderhood радует, что комюнити развивается, огорчает, что пока нет четкой цельности
10:41

Напротив, меня расстраивает, что люди уходят в ClojureScript из-за языка и делают там классные штуки. @edjafarov @listochkin

10:43

И никто эти штуки не портирует — не потому что никак, а потому что им и так хорошо, а кроме них никто не понимает. @edjafarov @listochkin

10:43

Кто знает ClojureScript?

10:48
Почему-то только после появления @dan_abramov захотелось зафоловить @jsunderhood. :)
10:50

Кто знает кого-нибудь, кто знает ClojureScript?

10:50
@jsunderhood все знают Соловьёва же =)
10:51
@jsunderhood я буду пробовать кложу из-за @nikitonsky
10:52

Меня больше расстраивает сексизм, чем треды про него. @Dmiterko_Roman

10:54
@jsunderhood я имел ввиду @asolovyov =) aka "чик-чик и в продакшин"
10:55

Расскажите о каком-нибудь одном вашем опен-сорс JS проекте. Не важно, если нету звездочек. «Зачем» и ссылка. Го?

11:04
@jsunderhood очень интересует "state management". я пока не въехал в концепт stateless stores. хочется понять весь жизненный цикл состояния.
11:05
@jsunderhood Переводы фронтэнд (в том числе и JS) статей с неанглийского на английский frontendbabel.info Чтобы мир узнал о нас.
11:07
@iamstarkov @jsunderhood кстати, он проводил лекции по JS, и говорит что язык дает мало, а архитектура много
11:12
@jsunderhood PromisePipe-кросс процессные стримы,отделяют логику от взаимодествия между энвми github.com/edjafarov/Prom… pic.twitter.com/skwITTyFeh
11:18
@jsunderhood клиент-сайд мокки для superagent, чтобы не ждать бекенд и не добавлять в проект мок-серверы на ноде — github.com/rambler-digita…
11:20
@jsunderhood Плагин для eslint чтобы писать js по Крокфорду github.com/idmitriev/esli…
11:34

Самая интересная статья / доклад / лекция 2014-2015 года по вашей версии?

11:39

Расскажи. Once you go black you never go back? @nikitonsky

11:42
@jsunderhood приложение для зацикливания отдельных кусков песни (полезно для начинающих музыкантов)
github.com/wtfil/song-loo…
11:42
@jsunderhood @toivonens Конечные поля и кольца на JS molefrog.com/rye/ (чтобы строить красивые картинки 😊 molefrog.com/rye/demo/galoi…)
11:44

Моя любимая — вот эта. «База данных шиворот навыворот.» blog.confluent.io/2015/03/04/tur…

11:46
@jsunderhood я знаю ClojureScript и знаю тех, кто знает ClojureScript. :-)
11:58
@jsunderhood люди всегда важнее всего, имхо, но качество языка вообще % на 60-70 это коммьюнити и экосистема. А так, конечно, комплексно. :)
12:05

Что используете в основном проекте? ES5? ES6? ES6 + experimental ES7ish extensions?

12:35
@jsunderhood Манипуляции со словами после числительных github.com/andrepolischuk…
12:43
@asolovyov @jsunderhood мда, хитро) Что на счёт Elm думаете, кстати? Стали бы в тащить в проект, если человек из команды захотел бы?
12:43
@jsunderhood
Извлечение свойств md-статей: заголовок, дата, описание, контент.
Чтобы не писать YAML, как в jekyll.
npmjs.com/package/articl…
12:49
@jsunderhood Web component для отображение github's gists на Polymer github.com/dmaslov/github…
12:58
@lisovskyvlad @jsunderhood попробуй, вдруг взлетит
13:33
Кто чем пользуется для отслеживания JS ошибок на проде? Сервисы? Библиотеки?
/сс @jsunderhood
14:03
@jsunderhood github.com/sudodoki/copy-… - кнопка-компонент для копирования в буфер. Чтоб без флеша. Для nodeschool github.com/nodeschool/nod…
14:03
@jsunderhood gruntO оптимизатор структуры Биллд процесса github.com/aliaksandr-pas…
14:03
@jsunderhood @sudodoki по ходу все самые хорошие разработчики не работают. Я вот вышел на работу и не знаю, хорошая ли это идея
14:13

Я пойду стричься, подумаю над темами на неделю. Кидайте еще, о чем хотите поговорить. Можно в личку если что-то скользкое.

14:18

# Вторник 124 твита

Привет. Я проснулся.

10:41

Давайте сегодня поговорим про стили. BEM-именование уже стало мейнстримом, правда? А видели ли вы CSS Modules?

10:44

Например, есть мнение, что BEM — конечно, здорово, но это как неймспейсы в ES5 без модулей. А нужны-то модули. medium.com/seek-ui-engine…

10:47

Есть еще мнение, что CSS — это просто еще один compile target, а язык описания должен быть один — JS и компоненты. github.com/petehunt/jsxst…

10:48

Скажем, @andreysitnik любит CSS. Именно как язык/синтаксис. А @jashkenas считает, что вебу не нужно три языка. youtu.be/DspYurD75Ns?t=…

10:53

Что именно в Webpack значит require('./something.css')? Идея в том, что это никак не отличается от require('./something.coffee') и т.п.

11:00

Если к проекту не подключить билд-трансформу для *.css, то это не сбилдится. Ведь таргет-язык у нас всё-таки JS.

11:00

Но можно подключить трансформу, которая превращает файл стилей в JS-модуль, кладущий эти стили в <style>-тэг.

11:01

Теперь require('./something.css') обретает смысл — это значит «этот JS-файл зависит от того, чтобы эти стили были в head». Зависимости FTW!

11:01

Причем код не указывает, _как именно_ эти стили соединяются. Может быть, они выделяются при компиляции в отдельный файл. Деталь реализации.

11:02

Зато с явными зависимостями не бывает мертвых стилей, файлов, которые боишься убрать, или watch('**/*.css'). Потому что всё явно, как в JS.

11:03

Это простейший вариант. Более умная трансформация может возвращать объект вида { attach(), detach() }. @somerandstring

11:04
@jsunderhood переписал свой сайт с CSS Modules. Полет отличный.
11:08
@jsunderhood webpack postcss local-scope
bem ужасен, по-моему, потому что пытается решать не те проблемы и не теми методами
11:08
@jsunderhood БЭМ это не только лишь CSS!
11:08
@bem_xxx @jsunderhood БЭМ это обмен файлами. БЭМ это гигабайты свежей информации. БЭМ это общение. БЭМ это рост. БЭМ это свобода. БЭЭЭЭЭЭМ!!
11:10
@Sigiller @jsunderhood изоляция на уровне сборки, простые наименования классов, все локальное, sourcemaps можно подрубить.
11:16

Конечно, лучшее в CSS Modules — это их лого. github.com/css-modules/cs… pic.twitter.com/7nAR6Fzi69

11:18

Конечно, CSS-в-JS еще сыро. Но нельзя отмахнуться, что проблема надуманная. Семь грехов CSS: speakerdeck.com/vjeux/react-cs… pic.twitter.com/QkFGneJL8r

11:22
@jsunderhood на мотив css is awesome, надо полагать pic.twitter.com/naWrQfYheo
11:25

Как BEM, компоненты и зависимости-в-JS дополняют друг друга: medium.com/seek-ui-engine…. Этот пост — прелюдия к CSS Modules.

11:33
@iamstarkov @jsunderhood github.com/MicheleBertoli…
колонка autoprefixer included
12:17
@jsunderhood my bad, я отстал от жизни
Создатель postcss-local-scope задепрекейтил его в пользу развития css modules
github.com/markdalgleish/…
12:27

Быстрый ответ — после Webpack для меня пропала необходимость в Grunt/Gulp. В Browserify нет Hot Module Replacement :-( @baxxabit

12:29

Давайте поговорим про деньги и фронтэнд. Что вы делаете, и сколько вы зарабатываете? Можно в личку или с throwaways — я размещу анонимно.

12:29
Давайте поговорим про деньги и фронтэнд. Что вы делаете, и сколько вы зарабатываете? Можно в личку или с throwaways — я размещу анонимно.

По поводу — только что открыл DM для всех, пишите.

Давайте поговорим про деньги и фронтэнд. Что вы делаете, и сколько вы зарабатываете? Можно в личку или с throwaways — я размещу анонимно.

12:37
Давайте поговорим про деньги и фронтэнд. Что вы делаете, и сколько вы зарабатываете? Можно в личку или с throwaways — я размещу анонимно.

Анонимно: спб, тимлид/разработчик, энтерпрайз + разработчик кода встраивающегося на сторонние сайты. ~=150к чистыми

Давайте поговорим про деньги и фронтэнд. Что вы делаете, и сколько вы зарабатываете? Можно в личку или с throwaways — я размещу анонимно.

12:45
@suevalov @jsunderhood а я вот считаю что мы ничего не теряем) мы используем более гибкий язык который частично уже добавляется в css
12:46
Давайте поговорим про деньги и фронтэнд. Что вы делаете, и сколько вы зарабатываете? Можно в личку или с throwaways — я размещу анонимно.

Фронтэнд клиентской админки в немаленькой компании (~200 чел. персонала, посещаемость 1м/мес) на хитром стеке. 110к.

Давайте поговорим про деньги и фронтэнд. Что вы делаете, и сколько вы зарабатываете? Можно в личку или с throwaways — я размещу анонимно.

12:49

@jsunderhood Уточнение: Москва

12:50

Еще есть survivejs.com/webpack_react/ — очень хороший ресурс. @baxxabit @dzhiriki @suevalov

12:51
Давайте поговорим про деньги и фронтэнд. Что вы делаете, и сколько вы зарабатываете? Можно в личку или с throwaways — я размещу анонимно.

Толстый клиент, компания 6 человек в Европе, 90к евро в год, 55% налоги :/

Давайте поговорим про деньги и фронтэнд. Что вы делаете, и сколько вы зарабатываете? Можно в личку или с throwaways — я размещу анонимно.

12:55
@jsunderhood я сижу на зарплате 800$/мес. мне хватает. но после чата dev-ua/frontend-jobs я понял что это почти плинтус. пишу битуби-битуси
12:59

Напоминаю, что сегодня я ретвичу и публикую зарплаты фронтэндеров и фронтэндщиц. Пишите анонимно в DM.

15:49
Давайте поговорим про деньги и фронтэнд. Что вы делаете, и сколько вы зарабатываете? Можно в личку или с throwaways — я размещу анонимно.

200k рублей. Удаленка, тимлид, фронт+бек.

Давайте поговорим про деньги и фронтэнд. Что вы делаете, и сколько вы зарабатываете? Можно в личку или с throwaways — я размещу анонимно.

15:49
@jsunderhood Недавно ходил по собеседованиям с Angular+D3 и прочим js. С опытом бэкэнда и аналитики получил предложения 150 и 170 кр
15:50
@jsunderhood напоминает «нужна только Java», «нужен только XML». Это не будет работать, так как мы должны оптмизировать язык под задачу.
15:51
@andrey_sitnik @jsunderhood почему бы не взять ближайший turing-complete язык (js) для этого
15:51
Давайте поговорим про деньги и фронтэнд. Что вы делаете, и сколько вы зарабатываете? Можно в личку или с throwaways — я размещу анонимно.

Питер, джуниор, 60

Давайте поговорим про деньги и фронтэнд. Что вы делаете, и сколько вы зарабатываете? Можно в личку или с throwaways — я размещу анонимно.

16:00
Давайте поговорим про деньги и фронтэнд. Что вы делаете, и сколько вы зарабатываете? Можно в личку или с throwaways — я размещу анонимно.

Голландия, фронтенд тимлид: 3900€/мес после налогов

Давайте поговорим про деньги и фронтэнд. Что вы делаете, и сколько вы зарабатываете? Можно в личку или с throwaways — я размещу анонимно.

16:07
@andrey_sitnik @somerandstring @jsunderhood jsx это это internal dsl, против CSS который external DSL. См. gbracha.blogspot.cz/2014/09/a-doma… о разнице
16:08
Давайте поговорим про деньги и фронтэнд. Что вы делаете, и сколько вы зарабатываете? Можно в личку или с throwaways — я размещу анонимно.

начинал с джуниора в 45

Давайте поговорим про деньги и фронтэнд. Что вы делаете, и сколько вы зарабатываете? Можно в личку или с throwaways — я размещу анонимно.

16:11

Раз уж пошла такая пьянка, есть ли что-то, что вы бы хотели донести до своих коллег? (Анонимно. Я удаляю DM-ы по мере получения.)

16:12
@jsunderhood скучаешь без secret?
16:13
Давайте поговорим про деньги и фронтэнд. Что вы делаете, и сколько вы зарабатываете? Можно в личку или с throwaways — я размещу анонимно.

Фронт, backbone, западный клиент, удалённо, около 1300-1500 евро брутто, по часам начисляется

Давайте поговорим про деньги и фронтэнд. Что вы делаете, и сколько вы зарабатываете? Можно в личку или с throwaways — я размещу анонимно.

16:16
Давайте поговорим про деньги и фронтэнд. Что вы делаете, и сколько вы зарабатываете? Можно в личку или с throwaways — я размещу анонимно.

Провинция, тимлид, только фронтенд, опыт бекенд + аналитика, 100К чистыми

Давайте поговорим про деньги и фронтэнд. Что вы делаете, и сколько вы зарабатываете? Можно в личку или с throwaways — я размещу анонимно.

16:17
Раз уж пошла такая пьянка, есть ли что-то, что вы бы хотели донести до своих коллег? (Анонимно. Я удаляю DM-ы по мере получения.)

Надо и на js уже внедрять тестирование

Раз уж пошла такая пьянка, есть ли что-то, что вы бы хотели донести до своих коллег? (Анонимно. Я удаляю DM-ы по мере получения.)

16:20
Раз уж пошла такая пьянка, есть ли что-то, что вы бы хотели донести до своих коллег? (Анонимно. Я удаляю DM-ы по мере получения.)

Интересно поговорить кто сколько спит и какая при этом производительность труда;)

Раз уж пошла такая пьянка, есть ли что-то, что вы бы хотели донести до своих коллег? (Анонимно. Я удаляю DM-ы по мере получения.)

16:53
@jsunderhood но чем раньше ложусь, тем меньше сплю
17:24

Расскажите, как вы организуете управление стейтом в JS-приложении. MVC? Flux? Rx? Что-то новое?

17:25
@jsunderhood Flux, но со Swarm.js это начинает выглядеть странно
17:28
Давайте поговорим про деньги и фронтэнд. Что вы делаете, и сколько вы зарабатываете? Можно в личку или с throwaways — я размещу анонимно.

Тимлид, фронт, реакт, бекбон, опыт фуллстека, 120.

Давайте поговорим про деньги и фронтэнд. Что вы делаете, и сколько вы зарабатываете? Можно в личку или с throwaways — я размещу анонимно.

17:29

Уточнение: Москва

17:29
Давайте поговорим про деньги и фронтэнд. Что вы делаете, и сколько вы зарабатываете? Можно в личку или с throwaways — я размещу анонимно.

Питер, front-end тимлид, 3000$/мес

Давайте поговорим про деньги и фронтэнд. Что вы делаете, и сколько вы зарабатываете? Можно в личку или с throwaways — я размещу анонимно.

17:37
@jsunderhood Нечто flux-подобное на Rx-потоках
17:37
Давайте поговорим про деньги и фронтэнд. Что вы делаете, и сколько вы зарабатываете? Можно в личку или с throwaways — я размещу анонимно.

Frontend-архитектор. UX/UI, development management, workflow automation, fullstack, ±devops. 10 лет, Красноярск, 50к

Давайте поговорим про деньги и фронтэнд. Что вы делаете, и сколько вы зарабатываете? Можно в личку или с throwaways — я размещу анонимно.

17:50
@jsunderhood Винница, Фриланс - верстка + ВП. 1000
17:51
@jsunderhood Заметил по себе, что норма 8 часов.Если меньше, то после обеда уже зеваю и производительность хромает.
17:51
@jsunderhood на React - Flummox, попробовал Redux. На Angular все плохо. По крайней мере так кажется после React :)
17:51
@jsunderhood Не верю в рассказы, что можно спать по 4 часа и быть продуктивным)
17:51
@jsunderhood ванильный Flux. FTW!
17:55
@jsunderhood сплю ~8 часов, по 3 силовых и беговых тренировки в неделю. Работается тоже хорошо :-)
18:01
@jsunderhood ractive -> ractive + flummox -> react + flummox
18:01
@jsunderhood flux+immutable rx тоже есть но на 99% используется просто как EventEmmiter
18:01
@jsunderhood используем React + Reflux
18:17
@jsunderhood @andrey_sitnik crdt можно представить как свёртку (reduce) операций ;) gsd.di.uminho.pt/members/cbm/ps… см. там eval(op, state) -> state
18:22

К слову об управлении стейтом. Три недели назад я начал писать новую библиотеку. Она называется Redux. github.com/gaearon/redux

18:36

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

18:36

Первая цель: сохранить преимущества Flux. Только экшны могут менять стейт, сторы инкапсулируют управление независимыми областями стейта.

18:36

Вторая цель: поменять Flux так, чтобы можно было перезагружать логику сторов на ходу с помощью React Hot Loader и подобных решений.

18:37

Третья цель: поменять Flux так, чтобы можно было легко написать devtools для record/replay, time travel, (de)hydration без участия юзера.

18:37

Я буду рассказывать про Redux в своем докладе на React Europe в июле. В этом треде готов отвечать на вопросы. )

18:38
Давайте поговорим про деньги и фронтэнд. Что вы делаете, и сколько вы зарабатываете? Можно в личку или с throwaways — я размещу анонимно.

мск, в трудовой "верстальщик", федеральный ритейл, пилю внутренние системы на ExtJS,100к р/мес на руки с премиями

Давайте поговорим про деньги и фронтэнд. Что вы делаете, и сколько вы зарабатываете? Можно в личку или с throwaways — я размещу анонимно.

18:39
@jsunderhood Redux клевый по первому опыту. Но крайне жаль, что мейнтейнер Flummox'а отказался его развивать дальше. Из-за выхода Redux.
18:40
@jsunderhood Киев, синьор фронтенд-разработчик в аутсорсинге, не тимлид. $5500 чистыми в месяц после налогов.
18:49

Они даже не содержат её. То что во Flux хранилища, в Redux — чистые функции. (previousState, action) => nextState @roman01la @alexeyraspopov

18:56
@alexeyraspopov @jsunderhood хранилища как data reducers — это очень хорошая штука, имхо
18:58

Я взял эту идею из Elm. github.com/evancz/elm-arc… @roman01la @alexeyraspopov

18:58
@jsunderhood а тот из Haskell. XMonad по такому же принципу построен. @roman01la @alexeyraspopov
19:01
@alexeyraspopov @jsunderhood возможно такие хранилища не стоит называть хранилищами :)
19:03
@jsunderhood есть какой-либо roadmap? Примерная дата 1.0?
19:09
@jsunderhood @roman01la @alexeyraspopov Я в своих pet-проектах использую rxStream.scan(f) для стейта. Потом подписал на это setProps и вуаля
19:10
@jsunderhood @roman01la глупость. Флакс — всего лишь паттерн. Кто мешает написать только имплементацию сторов с нужными возможностями?
19:10
@jsunderhood @roman01la github.com/alexeyraspopov… все те же редьюсеры. У стора есть метод, которым можно напихать в него экшнов без диспатчера
19:13
@jsunderhood я правильно понимаю, что в redux есть некий global state, содержащий все данные приложения, который используют сторы и вьюхи?
19:15
Давайте поговорим про деньги и фронтэнд. Что вы делаете, и сколько вы зарабатываете? Можно в личку или с throwaways — я размещу анонимно.

Senior Frontend Engineer, Киев, 35$/час, в месяц до 6к$

Давайте поговорим про деньги и фронтэнд. Что вы делаете, и сколько вы зарабатываете? Можно в личку или с throwaways — я размещу анонимно.

19:15

Да. В Redux я это делаю, парадоксально, через «лифтинг» экшнов, higher-order reducer и «анлифтинг» стейта github.com/gaearon/redux/… @roman01la

19:20
@jsunderhood @roman01la @alexeyraspopov все ходим вокруг одного (state,action) ->state goo.gl/1kUAf0 demo goo.gl/1kUAf0
19:21
@jsunderhood @roman01la @alexeyraspopov поправочка демка тут - goo.gl/er5j6y
19:21
@jsunderhood как в redux происходит коммуникация с сервером? например во flummox за это отвечают экшены, но меня это интуитивно смущает
19:25
@MostovenkoA @jsunderhood @roman01la и вообще весь ваш data flow — пару строчек кода :D pic.twitter.com/RTctU4NokI
19:25

Зло — не global state, зло — mutable global state. :-) @smashercosmo

19:26
@jsunderhood @MostovenkoA @roman01la слайд взят отсюда (alexeyraspopov.github.io/talks/what-the…), вдруг будет интересным.
19:31

Это лучшая пареза про Flux, что я до сих пор видел — by @alexeyraspopov alexeyraspopov.github.io/talks/what-the… pic.twitter.com/L3KIY1QPkW

19:34
Читаю @jsunderhood и немного охреневаю от уровня зп у фронтендеров. Давно надо было валить с текущего места.
19:35
@jsunderhood @MostovenkoA @roman01la выглядит отлично, нужно поиграться с этим подходом. Спасибо
19:41
@safrankov @jsunderhood такие же ощущения, только про технологии. Как будто все уже сменили пару версий всевозможных ***ux-ов в продакшене.
19:42

Скорее нет. Смотря что ты имеешь в виду. Экшн — просто данные о том, «что случилось». @smashercosmo

19:43

Стор (или редюсер в Redux) никогда не должен сам диспетчить экшны — только реагировать на них. @smashercosmo

19:43

С другой стороны, ты можешь сделать функцию, которая диспетчит несколько экшнов. (Например, запрос и ответ сервера.) @smashercosmo

19:44

Потому что он не сохраняет преимуществ Flux. Нельзя сделать центральный логгинг, time travel, record/replay @dimchez @alexeyraspopov

19:44
@jsunderhood нуб-вопрос: может ли экшен вызвать другой экшен? допускает ли это flux-way или таких коммуникаций лучше избегать?
19:44

Я об это пару месяцев голову ломал, трудно в цепочке твитов объяснить. Когда сами тулзы выпущу, будет понятнее. @Chudesnov @roman01la

19:47
@jsunderhood а ситуация когда стор ждёт другой стор (waitFor) нормальна или это проблема с архитектурой?
19:56

Про это хорошая дискуссия здесь: gist.github.com/gaearon/d77ca8…. Я объясняю почему с редьюсерами это не проблема. @vdv73rus

19:56
Если судить по мини-опросу про зарплаты фронтенд-разработчиков в @jsunderhood, то на заработки надо валить не в Европы, а в Киев
20:02

В Redux ты сам решаешь, что использовать для моделей. Ему всё равно. ) Хочешь — immutable, хочешь plain objects или что еще. @mbektimirov

20:07
@jsunderhood довольно успешно пишу код без Flux на Morearty с иммутабельностью. Почему в redux ты не используешь Immutable.js?
20:07

Сигнатура — (state, action) => state. Ты можешь использовать всё что угодно в качестве state в своих редюсерах. @mbektimirov

20:08
@jsunderhood тот же time travel отлично ложится на immutable структуры данных
20:09

Я согласен. Redux делает ассампшн что, что бы ты ни использовал, оно нигде не мутируется. @mbektimirov

20:09

По моему опыту достаточно просто использовать ES7 rest/spread syntax, чтобы не мутировать объекты/массивы. @mbektimirov

20:10
@23ydobemos @jsunderhood Уровень жизни ниже. Для того чтобы жить лучше, надо платить: за "элитную" квартиру, за машину, глотающую ямы и т.д.
20:13
@smashercosmo Тут холодно и темно!!! Но через 5 лет можно получить паспорт и валить на юг :-)
20:23

Если позовут куда, расскажу ) @kuksikus

20:26

Чтобы работало, надо { "stage": 1 } в .babelrc @andrey_sitnik @mbektimirov

21:13

Можно let { …rest, stuffIDontCareAbout } = stuff; return rest @andrey_sitnik

21:13

Завершаю сегодняшний поток добрым видео. Спокойной ночи! vimeo.com/88035957

21:20
Давайте поговорим про деньги и фронтэнд. Что вы делаете, и сколько вы зарабатываете? Можно в личку или с throwaways — я размещу анонимно.

Провинция, front end (angular) - 40к и это еще много.

Давайте поговорим про деньги и фронтэнд. Что вы делаете, и сколько вы зарабатываете? Можно в личку или с throwaways — я размещу анонимно.

22:38
@jsunderhood а не было желания написать свой роутер для реакта?
22:40

Мне нравится React Router. Он еще не совсем классный, но будет классный в 1.0. @justusebrain

22:40

Миксины опциональные, ты можешь использовать контекст напрямую. @justusebrain

22:54

Роутер 1.0 будет легко "направлять" через Flux полностью, так что состояние может лежать в твоем сторе. @justusebrain

22:55

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

Давайте поговорим про деньги и фронтэнд. Что вы делаете, и сколько вы зарабатываете? Можно в личку или с throwaways — я размещу анонимно.

Киев, пусть будет Senior, не лид, Node.js/React, $3.5k - 4%

Давайте поговорим про деньги и фронтэнд. Что вы делаете, и сколько вы зарабатываете? Можно в личку или с throwaways — я размещу анонимно.

11:55
Давайте поговорим про деньги и фронтэнд. Что вы делаете, и сколько вы зарабатываете? Можно в личку или с throwaways — я размещу анонимно.

$3200 после налогов, React+Flux приложения для бэкенда ритэйловых сервисов

Давайте поговорим про деньги и фронтэнд. Что вы делаете, и сколько вы зарабатываете? Можно в личку или с throwaways — я размещу анонимно.

11:56
Раз уж пошла такая пьянка, есть ли что-то, что вы бы хотели донести до своих коллег? (Анонимно. Я удаляю DM-ы по мере получения.)

а можно как нить после митапа пойти не пиво пить, а взорвать косяк, да вообщем можно и до)

Раз уж пошла такая пьянка, есть ли что-то, что вы бы хотели донести до своих коллег? (Анонимно. Я удаляю DM-ы по мере получения.)

11:56
@jsunderhood mvc и модели на основе github.com/share/sharejs, во снах снится что все переписал на flux
12:01
@jsunderhood “до 6к” это занятная метрика. Если считать чистые часы на почасовке, то почти всегда будет меньше 130. У многих вообще 100-110.
12:01
@jsunderhood зарелизился Nuclide от Facebook nuclide.io
12:01
@alexeyraspopov @MostovenkoA @jsunderhood @roman01la типи допомагають зрозуміти що треба 2 стейт машини - для бізнес-логіки, і для view
12:03

Асинхронный action creator может вернуть просим, например, чтобы компонент имел к нему доступ. @victor_suzdalev @smashercosmo

13:01

Я же ни из кого не вытягиваю клещами. Погугли движение #talkpay. Знать ЗП на рынке — важно. @konenkov

13:03
@konenkov @jsunderhood да ну, узнать, чо почём, может, ты мало получаешь для своего стажа/позиции, география - вот это вот все
13:03
@jsunderhood every berlinjs I attended, до, во время и после.
13:08
@8gene @jsunderhood @alexeyraspopov @MostovenkoA @roman01la боже мой, это же Elm, все в машину! youtube.com/watch?v=Agu6ji…
13:08
@sudodoki @jsunderhood @konenkov информация особенно актуальна для большого аутсорса в СНГ, где зп пытаются занизить до минимума.
13:09
@sudodoki @konenkov вообще, пока такие данные остаются массово закрытыми, остается простор для злоупотреблений @jsunderhood
13:09
@sudodoki @konenkov сплошь и рядом вижу, как девушкам на аналогичной должности не доплачивают, например @jsunderhood
13:15
Давайте поговорим про деньги и фронтэнд. Что вы делаете, и сколько вы зарабатываете? Можно в личку или с throwaways — я размещу анонимно.

Кстати, про себя. В российском стартапе получал от $2300 до $2700 в месяц. Сейчас — консалтинг $100/час.

Давайте поговорим про деньги и фронтэнд. Что вы делаете, и сколько вы зарабатываете? Можно в личку или с throwaways — я размещу анонимно.

13:18
@jsunderhood как ты посоветуешь решать проблему постепенной прорисовки интерфейса при асинхронной загрузке разных блоков данных?
13:32
@jsunderhood неготовность данных, спиннеры, пустые области на странице
13:32

Специальный компонент типа AsyncProps занимается резолвингом и не рендерит детей, пока они не готовы: github.com/rackt/react-ro… @mbektimirov

13:33
@jsunderhood @victor_suzdalev что-то я совсем запутался. мы просто пока на flummox-e, а там же экшены и экшен-криэйтеры по сути объединены?
13:35

Вот хорошее объяснение разницы между Actions и Action Creators: github.com/gaearon/redux/… @smashercosmo @victor_suzdalev

13:35

Просто надо как-то деньги зарабатывать после ухода из компании. ) @iamstarkov

13:38

Я сейчас готовлюсь к конференции React Europe. Посоветуйте, как сделать хорошо флоу рассказа? У меня нет опыта настоящих конференций.

13:43
@jsunderhood лайв кодинг решает! Свежайший пример: youtube.com/watch?v=j-kj2q…
13:56
Пацаны-ребяты, посоветуйте модульный/компонентный CSS фреймворк, прям список всех что знаете. Нужно для исследований.
RT plz
14:12
@jsunderhood а как находил клиентов для консалтинга?
17:49

Сами пишут. Потому что много видного опен-сорса. Еще полезно нетворчиться на митапах и читать лекции, ребята подкидывают работу @kojoru

17:50
@jsunderhood как в фильмах — вступление, закрутка, плато, раскрутка. Например: о себе, проблема, анализ, решение
17:50
@jsunderhood кроме того, старайся добавить сильные цитаты, которые могут уйти в Твиттер
17:50
@jsunderhood почитай книгу «Мастерство презентации», очень хорошая.

mann-ivanov-ferber.ru/promo/presenta…

17:50

Мне комфортно два-три часа в (будний) день, чтобы остальное время заниматься опенсорсом. @beshkenadze @paulmillr

18:04
Давайте поговорим про деньги и фронтэнд. Что вы делаете, и сколько вы зарабатываете? Можно в личку или с throwaways — я размещу анонимно.

Одесса, фронтенд + Node.js, $2k

Давайте поговорим про деньги и фронтэнд. Что вы делаете, и сколько вы зарабатываете? Можно в личку или с throwaways — я размещу анонимно.

18:19

Разве Webpack теперь работает не через PostCSS? github.com/webpack/css-lo… @andrey_sitnik @snejink

18:56

Я не очень понимаю, о чем ты. Чанки делаются одной строчкой в коде, и ты их получаешь автоматически. @andrey_sitnik @snejink

19:01

ExtractTextPlugin — оптимизация. Она не всем нужна. И если хочешь билдить CSS отдельно сам, просто делай это :-) @andrey_sitnik @snejink

19:02

То есть, Webpack не заставляет тебя использовать его для CSS. Многие используют его только для JS. @andrey_sitnik @snejink

19:02

Странно, как это может быть аргументом в пользу Browserify. @andrey_sitnik @snejink

19:02

Для меня поддержка hot reloading достаточный плюс ) @andrey_sitnik @snejink

19:13

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

Давайте поговорим про деньги и фронтэнд. Что вы делаете, и сколько вы зарабатываете? Можно в личку или с throwaways — я размещу анонимно.

Верстка магазина и других сайтов компании. В основном только HTML/CSS, немного JS, шаблоны на PHP. Беларусь, 1300 $

Давайте поговорим про деньги и фронтэнд. Что вы делаете, и сколько вы зарабатываете? Можно в личку или с throwaways — я размещу анонимно.

16:41
@jsunderhood где вы берете заказы, я как начинающий даже за бесплатно не могу найти заказ Python/Django/Bootstrap
16:51
.@dmitriyminer @jsunderhood upwork(odesk). если не справился – возвращаешь деньги, и клиент не может оставить отрицательный отзыв. профит!
16:58
@jsunderhood Есть билет на React Europe (418€), сделай пожалуйста ретвит, может найдутся желающие.
16:58
@cakeinpanic @jsunderhood все хотят портфолио, а врать как-то не хочется
17:15
@dmitriyminer @jsunderhood у меня написано "я молодой, но страстно желающий работать падаван". ну и тесты пройдены. нормально все идет
17:20
Finally, Atom 1.0!

2,090 packages, 660 themes, and 155 releases later, Atom 1.0 is now available: blog.atom.io/2015/06/25/ato… pic.twitter.com/RJNpSDlnuA

19:14

Извините, что сегодня молчун. Готовлю слайды к React Europe. Дизайнер помогает )

19:29

Давайте сегодня такой формат — отвечаю на вопросы про hot reloading JS-кода. От общих до сугубо технических.

19:30

Начну с пары инструментов. Есть вот Figwheel. Кажется, он офигенный. Но увы, только ClojureScript. :-( youtube.com/watch?v=j-kj2q…

19:38

Есть React Hot Loader. Он только для реакта. Это мой проект. Вот видео, с которым он запустился: vimeo.com/100010922

19:39

Есть Amok. В отличие от Figwheel и RHL, он зависит от конкретного браузера (Chrome). amokjs.com

19:39

LiveReactload использует тот же движок, что и RHL, но под Browserify: github.com/milankinen/liv…. К сожалению, он re-evaluat-ит все модули.

19:40

React Native Webpack Server позволяет использовать живую перезагрузку React Hot Loader внутри React Native: github.com/mjohnston/reac…

19:40
@jsunderhood в каких случаях применим hot loader?
19:43

Проект должен использовать Webpack. Работает редактирование методов компонентов на ходу + модулей, у которых нет состояния @snejink

19:44

Конечно, он работает только с React-компонентами. @snejink

19:44
@jsunderhood в двух словах: по какому принципу это всё работает? Почему, например тот же flummox не полностью hot reloadable?
19:45

Хот релоадинг работает в модулях, у которых нет локального стейта. Поэтому он работает для компонентов и чистых функций. @smashercosmo

19:45

В Flummox вторы — классы. Из них трудно «выдирать» стейт, потом переносить в новый инстанс, как-то перерегистрировать их. @smashercosmo

19:46

В Redux вместо уторов чистые функции-редюсеры, которые «собираются» композицией в одну. Эта одна функция — всё, что заменяется @smashercosmo

19:47

React Hot Loader заменяет функцию render(), и в итоге рут-компонент получает новую чистую функцию в props, и ей пользуется. @smashercosmo

19:50
@jsunderhood как думаешь, реально браузерным вендорам договориться о нативном стандарте для перегрузки кода, типа chrome remote debug?
19:55

Чем дольше я занимаюсь hot reloading, тем больше я уверен, что это не имеет смысла. Это не дело браузера — это дело бандлера @somerandstring

19:56
@jsunderhood мне кажется что произвольный код с сохранением состояния без помощи браузера не перегрузить
20:06

Пытаться сохранить локальное состояние — изначально неверный подход. Отсюда проблемы. Надо выносить состояние вне. @somerandstring

20:06
@somerandstring FigWheel доказывает обратное. Но… ClojureScript. @jsunderhood
20:07

Вынос состояния «вне» имеет другие плюсы — возможность строить крутые тулзы для logging и time travel. @somerandstring

20:07

Я думаю, что Webpack Hot Module Replacement + тулзы типа React Hot Loader достойно решают эту проблему. @suxxes @somerandstring

20:08

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

Вы пользуетесь Browserify или Webpack? Почему?

9:33

Webpack vs Browserify на React Podcast: reactpodcast.com/2015/06/webpac…

9:34

Пит Хант называет феномен «modularity shaming» gist.github.com/substack/68f8d…

9:35

Джеймс Лоно рефлексирует о том, как модули — контракт нашего взаимодействия как разработчиков. jlongster.com/Modularity

9:37

Лонг, Твиттер. Лон. Автокоррект :-/

9:37
@jsunderhood Browserify просто потому что у нас нет задач для фич специфичных для Вебпака.
9:37
@jsunderhood я "не знаю” чем я пользуюсь, у меня Ember CLI - он как Тефаль думает за меня
9:37
@jsunderhood а чем плох подход webpack-dev-server с перезагрузкой приложения во фрейме?
9:37

Не то что бы плох. Лично для меня не продуктивен. Теряю стейт, DOM. @esergeev

9:38
@jsunderhood что есть для JS для таймтрэвела?
9:38

Я сам не знаю, буду благодарен за ссылки. Поскольку ничего не нашел — пришлось написать Redux. :-) @marinintim

9:39
@jsunderhood @smashercosmo а замена сторов?
9:40

В Redux нет уторов, есть редюсеры — чистые функции. Вот корневой редюсер и заменяется. А стейт вне него. @MaxMykhailenko @smashercosmo

9:40

Это класс. Реакту не хватает такого. @listochkin

9:42
@jsunderhood grunt+browserify на работе, webpack для себя. особой разницы нет, но webpack все же чуточку быстрей и удобней
9:46

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

9:52
@jsunderhood webpack шустрее, удобнее, все из коробки, отличная документация, куча лоудеров и плагинов фактически настарте проекта.
9:56
@jsunderhood славабогу, а то весь мой тви из монолога :) нужно аккуратнее
9:58
@hellbeast92 @jsunderhood насчет отличной документации - это шутка такая?
10:17

У вебпака документация ок (все опции на одной странице), но вот интро/гайдов не хватает. @baxxabit @hellbeast92

10:17
@jsunderhood browserify, потому что привык к нему. Несколько раз пробовал webpack, но натыкался на странности API и возвращался обратно
10:33

That's why styles need to be incapsulated into components ;-) @iamstarkov

10:41
@jsunderhood а считается ли антипаттерном писать вместо jsx функции? вообще есть ли разница? jsx же только для ридабилити?
11:17

Ты можешь писать createElement вручную, если хочешь. JSX сильно помогает читаемости. Плюс Babel будет его оптимизировать. @rastopyr_ua

11:18
@jsunderhood @rastopyr_ua ещё JSX статически фиксирует семантику React элементов, что позволит делать более "сильные" оптимизации.
12:05
@andreypopp а где про это можно подробней почитать? документация jsx? @jsunderhood
12:18
@jsunderhood покопался с redux, начинаю понимать чем удобен hot reload. Но иногда затыкается rebuild, приходится еще раз делать npm start
12:21
@jsunderhood когда в проекте был Browserify, билд был ~30 sec на cmd+s, c Webpack 1-2 sec
12:41

Раз сегодня пятница, давайте джаваскриптовый Follow Friday. Кого нужно фолловить в JS-мире?

12:46

Вот мой список: medium.com/@dan_abramov/m…

12:46
@avevlad @jsunderhood стоило настроить кеширование и инкрементальное обновление.
12:48
@jsunderhood начал собирать github.com/talgautb/front… а потом как-то остановился :)
12:49
My work of the past week.

Inspired by Google's inceptionism art, my colleagues made an interactive visualization of a dreaming convnet. Trippy! twitch.tv/317070

13:05
Inceptionism live stream: goo.gl/A9CiGa neural networks dreaming in real time.
13:05
. @jsunderhood а мне вот интересно как можно распиарить например свой репозиторий на гитхабе, есть ли какие-то советы/практики ?
13:08

Всё просто. Надо для начала найти комьюнити. Например, React/Ember/etc комьюнити. Люди, вокруг которых вертится экосистема. @greybax

13:08

Надо фоловить этих людей. Читать, что и почему они используют. Создавать что-то, что им нужно. Решить их проблемы. @greybax

13:09

Одному что-то очень сложно сделать, потому что ты не знаешь, что людям нужно. В комьюнити полезное разлетается. @greybax

13:10

Для меня решающее значение имеет твиттер. Не было бы твиттера — про мои проекты никто бы и не знал. Это мой рупор и фидбэк. @greybax

13:11

Да, паре ребят, которые ты видишь что ретвитят такие ссылки. Конечно, должен быть готов README, должен соблюдаться привычный стиль @greybax

13:15
@greybax @jsunderhood главное решать чью-то боль, затем иметь доки и тесты. А потом щепотка маркетинга
13:21

Еще помогает писать статьи. Увеличивает доверие к тебе. @iamstarkov @greybax

13:22
@iamstarkov @jsunderhood @greybax medium.com/@Shapiro/strip… вот тут @Shapiro рассказывает как пульнуть репозиторий в стратосферу
14:14
@jsunderhood в последней версии ember есть все что есть в react (virtual dom, sane actions etc…) + router :) @kolybasov @listochkin
15:22

React — не про virtual DOM. Это просто деталь реализации. React — про декларативные компоненты на JS. @tchak13 @kolybasov @listochkin

15:23

Это позволяет делать вещи типа React Native или React Hot Loader. @tchak13 @kolybasov @listochkin

15:23
@jsunderhood не поверишь, Эмбер тоже. Я в шоке от того, насколько мой код на Эмбер похож на то, что люди на Реактепишут @tchak13 @kolybasov
15:26
The Debate Around “Do We Even Need CSS Anymore?”
css-tricks.com/the-debate-aro…
16:29
@avevlad @jsunderhood да. Тоже мучался, потом нашел github.com/gulpjs/gulp/bl…, теперь билды 300 ms максимум.
16:41
@jsunderhood можно ли сделать, чтобы при hot reload обновлялись и source maps?
17:59

Нужно поставить звездочку в этом issue: code.google.com/p/chromium/iss… @esergeev

17:59
@jsunderhood @hellbeast92 раз разрешил всякого рода вопросы, как написать hot loader поверх webpack для не-реакт? видел ответ на SO, но мало
17:59

Еще я подсматривал, как style-loader это делает для CSS github.com/webpack/style-… @baxxabit @hellbeast92

18:01

Сегодня большой день для фронтэнд комьюнити. Встречайте NPM 3.0 beta. github.com/npm/npm/releas…

18:11

Прощайте, имплиситные peerDependencies. Тем не менее не спешите их удалять — они не УХОДЯТ, они МЕНЯЮТСЯ. Становятся полезнее.

18:13

Вам приходили решения проблем программирования во сне?

19:53
@jsunderhood я так ООП понял.
19:55
@jsunderhood да, переспать проблему мне часто помогало.
19:55

У меня пару раз так было (и получались действительно хорошие решения), но есть риск провалиться в «не помню, я сегодня спал или нет вообще?»

19:55
@jsunderhood Отдавая столько времени и сил opensource, когда и как успеваешь зарабатывать на жизнь?
20:02

Сейчас временный перерыв, немножко осталось накопленных. Потом восполню контрактной работой @icelabaratory

20:03
@jsunderhood Частенько. Но скорее в момент засыпания. Тогда или сразу бегу к компу, или записываю на утро. Держу блокнот возле кровати ;)
20:08
@jsunderhood requirejs уже не в моде?
20:12

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

20:12

И Webpack, и Browserify (со специальными модулями) поддерживают разбивку на чанки. Насколько я знаю, RJS этого не умеет. @denysdovhan

20:13
@jsunderhood у меня после бокса хорошо идёт решать проблемы, голова очищается. Если конечно в голову не словил пару раз на тренировке.
20:14
@jsunderhood Webpack главным образом за hot-reload, огромное спасибо кстати :-),
плюс с browserify всегда довесок gulp grunt etc
20:20
@jsunderhood кучу раз просыпался и искренне удивлялся отсутствию «ночных» коммитов в репозитории
21:21
@jsunderhood @denysdovhan, ну, Webpack я пока не пробовал, он более комплексный, чем Brwsfy/RJS, имхо. A сравнение Brwsfy и RJS послушал бы)
21:38
@lancedikson @jsunderhood @denysdovhan rjs очень медленный на больших проектах. Нельзя задать кастомный лоадер для js. И это только вершина.
21:48
@jsunderhood @lancedikson @denysdovhan сейчас в проекте имеем 140000 значимого кода и ветка с webpack выглядит спасением
21:53
@jsunderhood да, однажды во сне приснились строчки моего кода где был баг, который искал неделю.
22:29

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

.@Krivlenia @jsunderhood @denysdovhan читаю про Webpack. Первый вопрос: почему они хотят CSS через JS грузить? webpack.github.io/docs/tutorials…
10:58
@lancedikson @jsunderhood @denysdovhan Если ты о том,что делается require('*.css'). То это удобно,ты явно видишь зависимости твоего модуля.
10:58

Ты можешь выделять CSS в отдельный файл плагином на этапе компиляции: webpack.github.io/docs/styleshee… @lancedikson @Krivlenia @denysdovhan

11:01

Вовсе необязательно *грузить* CSS через JS. Речь о том, чтобы *описывать* зависимости одним языком. @lancedikson @Krivlenia @denysdovhan

11:02

Как именно грузится — <style> или выделенным CSS файлом — оптимизация, и может меняться в dev/prod. @lancedikson @Krivlenia @denysdovhan

11:03

К примеру, <style> удобнее во время разработки, потому что работает hot reloading для CSS из коробки. @lancedikson @Krivlenia @denysdovhan

11:04
@jsunderhood, а как это дальше попадает в DOM? Тоже через JS? А если у тебя min+rev на images? Есть ли manifest? @Krivlenia @denysdovhan
11:18

Webpack подразумевает, что всё это делается через него. Там есть встроенная поддержка хешей и тп. @lancedikson @Krivlenia @denysdovhan

11:18

Например, вот результат компиляции. В исходном коде имена нормальные. @lancedikson @Krivlenia @denysdovhan pic.twitter.com/xvcSxyCGBu

11:21

Всё это полностью настраиваемо. На каждом этапе можно добавить любые дополнительные трансформации. @lancedikson @Krivlenia @denysdovhan

11:21

По сути, ты можешь описать любые зависимости. Вебпак не имеет каких-то особых знаний о CSS/картинках @lancedikson @Krivlenia @denysdovhan

11:22

Просто есть несколько официально поддерживаемых плагинов для css/files. Вместо них можно свои юзать. @lancedikson @Krivlenia @denysdovhan

11:23
@jsunderhood Вопрос по реакту и флаксу. Могут ли компоненты, типа попапов, хранить в себе стейт, или же его тоже лучше выносить в сторы?
11:24

Мой rule of thumb простой. Если стейт нигде в аппе больше не понадобится — локально. Если может понадобиться, стор. @YevhenBoyarsky

11:25

Вот плагин, который превращает require('xyz') в относительный URL результата @lancedikson @Krivlenia @denysdovhan pic.twitter.com/0TZSwh0WUy

11:28
@jsunderhood @YevhenBoyarsky а как в этом случае hot reload отрабатывает? Убивает локальный стейт?
11:32

React Hot Loader не убивает локальный стейт компонентов. В этом его фишка. ) Он делает это, проксируя все методы @esergeev @YevhenBoyarsky

11:32
@jsunderhood насколько я знаю у тебя как минимум 2 крупных опенсорс проекта (redux, dnd). Как распределяешь свое время между ними?
11:35

Еще React Hot Loader. :-) Перемещаю фокус. DnD 1.0 выпущен, я занялся Redux. После конференции выпущу Redux — пересмотрю приоритеты @drzhbe

11:36

Заниматься несколькими вещами у меня никогда не получалось. Надо доводить проекты, чтобы они какое-то время могли жить без меня. @drzhbe

11:37
@jsunderhood используешь что-нибудь для генерации и валидации форм в React?
11:52

Лично я нет, но вопрос интересный, потому что какой-то одной лидирующей либы я не знаю. Подписчики? @limpbrains

11:53

В целом, даже если не в сторы, всё равно стейт лучше выносить наверх: medium.com/@dan_abramov/s…

11:54
@dmitruksergey @jsunderhood если в умном компоненте несколько попапов, то каждый должен хранить состояние в сторе?
12:21

Хороший вопрос. Либо стол знает о разных попапах, и у них есть какие-то ID для разделения состояния. @YevhenBoyarsky @dmitruksergey

12:21

Либо ты можешь использовать Redux, в котором это решается композицией редюсеров. gist.github.com/gaearon/d77ca8… @YevhenBoyarsky @dmitruksergey

12:22
@jsunderhood @esergeev @YevhenBoyarsky Дэн, а насколько твоя реализация хот лоадера зависит от реакта? Реально ли использовать для knockout?
12:44

Webpack предоставляет API, который можно использовать для любой библиотеки. @milk_is_my_life @esergeev @YevhenBoyarsky

12:45

Другое дело — насколько Knockout декларативный? Можно ли просто «заменить» функцию render? @milk_is_my_life @esergeev @YevhenBoyarsky

12:45

React Hot Loader работает, потому что render() не имеет сайт эффектов, и можно заменить на ходу @milk_is_my_life @esergeev @YevhenBoyarsky

12:46
@jsunderhood @limpbrains Недавно исследовал эту тему это github.com/gcanti/tcomb-f… выглядит как единственное что-то еще живое. Но не играл еще
12:46
@andreypopp привет! Не хочешь провести неделю @jsunderhood? Было бы чертовски круто!
13:04

Мой любимый блог по программированию: prog21.dadgum.com. А ваш?

14:00
@jsunderhood Этот github.com/sebmarkbage?ta… каждый раз когда я чувствую что я крут, читаю его комментарии. Крутизна слетает мгновенно.
15:10
@jsunderhood Я обожаю @2ality за подробности и технические детали.
15:10

Мой второй любимый блог по программированию: johndcook.com/blog/

15:30
@jsunderhood твиттер заполняет всю информационную нишу. Чем пользуешься для агрегации блогов?
19:22

Раньше Google Docs, сейчас ничем. Просто захожу раз в месяц на те, которые помню. @mbektimirov

19:22
@jsunderhood codewars.com - хорошее обучение на практике :)
19:22
@jsunderhood Твиттер основной источник + подписки на недельный забугорный дайджест + Хабр чисто для интереса
19:32
@jsunderhood да, он милый. Я когда Underhood вел, кидал вот это: steve-yegge.blogspot.com и sites.google.com/site/steveyegg…
19:37
@jsunderhood как относишься к github.com/feross/standard ? Меня он немного пугает. Karma на него перевели недавно, напрмер, я очень опечален
19:54

Лично я не впечатлен. Использую гораздо более «стандартный» Airbnb-стиль. @silentroach

19:55
@silentroach ничего, наши в теме: github.com/Flet/semistand… Я им много месяцев пользуюсь, он ближе к AirBnB, в том числе @jsunderhood
19:56

По правде я не вижу смысла в отдельных стайл чекерах, если есть ESLint, и он поддерживает extend-ы конфигов. @listochkin @silentroach

19:56

Например меня пару дней назад научили такой мудрости, это всё, что мне нужно. @listochkin @silentroach pic.twitter.com/N1OJY8FBTy

19:57
@jsunderhood я зашел к тебе на github.com/gaearon/redux а у тебя там всего 2 баджа. А должно быть ну хотя бы 5, а лучше 15 :) @silentroach
20:05

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

20:23

Хаха. Я уже счет дням недели потерял. Всё из-за конференции этой. ) @iamstarkov

20:24
@jsunderhood сегодня только суббота
20:24
@jsunderhood почему flux (и аналоги, в том числе твой) такой сложный и расплывчатый? И ни в одном нет примеров с простейшим ajax.
20:44

Есть пример с AJAX и Redux: github.com/emmenko/redux-…. Ссылка из README есть. Официальный пример будет позже. @silentroach

20:45

Я сейчас усиленно готовлюсь к конференции React Europe, где я покажу, зачем в принципе я делал Redux. @silentroach

20:46

Поэтому сейчас он не такой документированный, как мне хотелось бы. Я займусь этим после конфы обязательно. @silentroach

20:46

По поводу общего вопроса — поясни, что ты называешь расплывчатостью. Твой вопрос тоже расплывчатый. ) @silentroach

20:47

В целом про «о чем Flux» я написал вот эту статью: medium.com/@dan_abramov/t… @silentroach

20:48

В целом, для каждого уважающего себя Flux-фреймворка есть пример с AJAX. Просто они обычно в отдельных репах. @silentroach

20:48

Согласен, не хватает «лучших практик». В Redux я стараюсь ограничить то, что можно сделать, чтобы таких вопросов было меньше. @silentroach

20:49

Вы программируете под музыку? Под какую?

20:56

Про себя — в последнее время кручу по кругу по очереди To Pimp a Butterly (Kendrick Lamar) и Born to Die (Lana Del Rey :-)

20:58
@jsunderhood конечно. Dead Kennedys, ZZ Top, the rumjacks, judas priest, Beethoven!
21:00
@jsunderhood последний месяц только под это, рекомендую soundcloud.com/podval-capella…
21:01

Еще меня вот этот микс очень завораживает. soundcloud.com/taras3000/the-…

21:01
@jsunderhood Rammstein, мотивирует :)
21:06
@jsunderhood есть хороший сервис — mixcloud. Выбираешь тег-жанр и слушаешь миксы по часу и больше
21:13

Программирование и вещества. Совместимо? Скучно?

21:15
@jsunderhood виски иногда
21:15
@jsunderhood Отлично программируется, когда чуть-чуть пьяный. Самую малость.
21:17

То есть Ballmer Peak это не миф? @suxxes

21:17
@jsunderhood как-то писал код пьяным, дома. Утром пришлось всё переписать) если покурить, совсем не хочется писать код
21:17

Мне тоже не хочется. А вот подумать про абстракции иногда тянет. Связи и паттерны захватывают @kuksikus

21:20
@jsunderhood В добавление к музыке: не могу работать под музыку со словами, особенно если люблю и знаю слова. Сижу и вместо кода подпеваю.
21:21

Пока не знаю слова, меня они отвлекают. Когда я их помню, я на автомате напеваю, и они не «занимают» словесный процессор мозга @suxxes

21:22
@kuksikus @jsunderhood write drunk, edit sober. Ernest Hemingway pic.twitter.com/bfkFKTkRE3
21:27
@jsunderhood судьбоносный вопрос: StarTrek смотрел? Кирк или Пиккар? DS9 - торт или говно? Захари Кину - новая надежда или все пропало?
21:31

Хаха. Я пока не смотрел толком. Чуть-чуть начинал только. @listochkin

21:31
@jsunderhood кофеин, совместимо)
21:34

Десктопная картинка тред. pic.twitter.com/KhbCy39TdH

21:34
@kuksikus @jsunderhood @justusebrain @SilentImp какой прекрасный субботний вещества-тред
21:57

Есть еще интересный лайфхак на эту тему, который мне показал друг. Сейчас расскажу. @justusebrain @iamstarkov @SilentImp @kuksikus

22:03
@iamstarkov @kuksikus @SilentImp @jsunderhood ну если MDMA, то митинг растянется на весь день и будет самым успешным в истории компании.
22:03

Так вот. Берете приложение vk.com/app2462. Запускаете во вкладках три радиостанции. @iamstarkov @justusebrain @SilentImp @kuksikus

22:10

Станции такие: Relax > Nature Sounds, Разное > Детское радио и Электроника > Cliqhop IDM. @iamstarkov @justusebrain @SilentImp @kuksikus

22:11

Настраиваете уровни громкости, затягиваетесь и наслаждаетесь. @iamstarkov @justusebrain @SilentImp @kuksikus

22:11

Я думаю если свести их и записать, это будет самая модная пластинка @iamstarkov @justusebrain @SilentImp @kuksikus

22:14

Думаю его тоже туда можно подмешать.. @SilentImp @iamstarkov @justusebrain @kuksikus

22:16

Ме нравится. В духе vimeo.com/88035957 @iamstarkov

22:24
@jsunderhood бтв, новую айдентику мтв тоже как будто под веществами делали
creativereview.co.uk/cr-blog/2015/j… pic.twitter.com/KXCSXVVKZ0
22:26
@jsunderhood как тебе второй Angular?
22:29

Пока не смотрел. По блогам нравится, что есть возможность делать top down data flow и immutable модели. @mbarinov

22:29
@jsunderhood Run the Jewels — отличнейший рэп. Лана была прошлым летом :)
23:08
@jsunderhood А есть еще разрабы с кератоконусом? Как выживают?
23:09

Как не надо писать комментарии на Github: github.com/gaearon/react-…

23:20

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

@jsunderhood воскресный вопрос, какие хобби у программистов? Мне кажется что почти все либо музыканты, либо фотографы)
10:27
@jsunderhood а кто в очках?
10:28

Курт Гёдель, доказавший, что если формальная система достаточно выразительна для арифметики, её консистентность не доказать изнутри @denswor

10:29
@soundinyourmind @jsunderhood у меня бег и силовые.
10:30

Репетирую доклад. Выходит 50 минут. Надо 25. Как вы выбираете, что выкинуть?

10:37

Например, понятно, что демо выигрывает у просто слайдов. Но бросаться из одного демо в другое — может быть недостаточно понятно.

10:38
@soundinyourmind @jsunderhood пет-проекты, книги и игры.
10:53
@soundinyourmind @jsunderhood кино, лонгборд и бас-гитара :)
11:02
@soundinyourmind комиксы, стройка, бег @jsunderhood
15:46
@jsunderhood Оставляю то, что складывается в историю. У каждой истории есть главная линия, а также есть ответвления. Руби ветки.
15:46
@jsunderhood расскажи о своем пути обучения английскому? может какие-нибудь лайфхаки/советы/сервисы/методики?
15:47

Я просто Гарри Поттера прочитал всего. К седьмой книжке хочешь не хочешь выучишь @_cloudo

15:47
@soundinyourmind @jsunderhood практическая стрельба, книги, бег.
15:47
@soundinyourmind @jsunderhood банальные книги/музыка/игры, бокс, стрельба, пет-проекты
15:47
@_cloudo @jsunderhood курсера, сериалы, skyeng
15:56

Прощаюсь с вами, спасибо всем за отличную неделю! Скоро в Париж на React Europe, буду вас вспоминать )

21:44

Мой основной аккаунт @dan_abramov, в основном англоязычный, но я отвечаю по-русски, если спросите по-русски. Следите за апдейтами! <3

21:46

github.com

medium.com

webpack.github.io

other