# Понедельник 63 твита
Привет, на этой неделе с вами @oleg008. Я занимаюсь фронтендом, раньше также писал на ноде. Работаю на @chatgrapecom.
9:08Трачу кучу времени на опен сорс. Вот мой эккаунт github.com/kof. Один из моих последних проектов github.com/jsstyles/jss
9:09Буду говорить о десктопном и мобильном фронтенде ну и обо всем что с ним связано. Сегодня темя дня #css написаный на #javascript.
9:11Когда-то я написал вводную статью о #jss medium.com/@oleg008/the-i… чтоб обьяснить какие проблемы это решает в двух словах.
9:14чтобы не повторять то что уже написано в блоге и на гитхабе, было бы интересно услышать вопросы по github.com/jsstyles/jss а так же критику
11:00кстати @cssunderhood моя тема сегодня плотно пересекается с твоей)
11:00кстати jss нужен как бы не всем, обычные лэндинги - врядле, весь упор на компонентизацию, в реакт оно идет лучше github.com/jsstyles/react…
11:02@jsunderhood есть пример сложного компонента, такого когда используется пару экранов css, выраженный в jss?11:19
сложных компонентов быть в принципе не должно) они на то и компоненты чтоб быть простыми @yuritkachenko
11:22проект над которым я работаю написан с #jss но он не открытый, хотелось бы портировать todo app на него, есть jsstyles.github.io/jss-examples/c…
11:31вот накидал просто примеров из проекта c #jss и #es6 gist.github.com/kof/96dad9a4d6… @yuritkachenko
11:37@jsunderhood А не изобретаете вы велосипед? Я о CSS module которые прогнали через stylus (сахар) и postcss(все!) при сборке webpack'ом.11:38
мне почему то кажется что stylus + postcss + webpack вот это велосипед, причем такой очень сложный с кучей привязок, в jss все проще
11:39@jsunderhood сейчас расстояния между JS и CSS стремительно сокращаются. Это удобно. Про компоненты в верстке я тоже собираюсь поговорить.11:40
CSS как то стремится к JS) добавляют одну фичу за другой, а у меня вопрос - зачем тогда нам нужен второй язык если в нем будет тоже самое)
11:41@jsunderhood а как вы изолируете компоненты от наследуемых свойств, например, line-height?11:42
наследование реализуется более прямым способом github.com/jsstyles/jss-e…
11:43@jsunderhood ну или если в окружении виджета стоит * { box-sizing: border-box }11:43
вопрос чье это окружение, если ты пишешь виджет который встраивается в чужой сайт то тебе надо перегрузить глобальные рулы @andrey_sitnik
11:45@jsunderhood как же там много кавычек и не нужных синтаксических конструкций типа конкатинации и rgbaString11:45
согласен, некий шум есть, но есть консистентность и четкая логика @andrey_sitnik
11:47если очень хотеть избавиться от ковычек можно придумать свой язык on top of js и сделать все значения встроенными @andrey_sitnik
11:49@jsunderhood мне вот не нравится работать с css в JS, есть проблемы например с редакторами, надо переписывать snippet, подсветка и т.п.11:50
и такое мнение я уже слышал, лично у меня времени больше уходит на тестирование и продумывание чем на скорость печати @cssunderhood
11:51поэтому я считаю скорость печати ВООБЩЕ НЕ ВАЖНА, важна четкая логика - легкость понимания и отсутствие багов ... @cssunderhood
11:52всегда хотел увидеть людей которые строчат css с такой скоростью чтоб без автокомплитов прям процесс разработки замедляется @cssunderhood
11:53@jsunderhood а есть данные по производительности, допустим сейчас есть фича css, которую можно делать js (циклическое движение облаков)11:54
jss производит обычные стили, вставляет style элемент, поэтому нет разницы в данном примере @ErrorSoul
11:55@jsunderhood так как именно это автоматически делается в JSS, если его цель компонентная изоляция CSS?11:57
магии нет, хочешь перезагрузить глобальный css - делай это ручками, это впринципе легко смотри jss-extend и es6 {...} @andrey_sitnik
11:59@sapegin @jsunderhood я, конечно, стили в js писал только для React Native, но мне вполне понравилось и ада не видел )12:03
@jsunderhood ну изоляцию селекторов руками через БЭМ тоже можно сделать. Всё таки смысл компонентного прохода в автоматической изоляции12:05
да, с БЭМ можно жить, но наименования остаются глобальными и их надо хорошо продумывать и это не легко и не красиво @andrey_sitnik
12:06@jsunderhood я не считаю БЭМ — хорошим решением. Конечно же надо изолировать автоматически.12:07
именно поэтому все классы в #jss сгенерированы, именования локальные и могут быть плохими, это не растекается по приложению @andrey_sitnik
12:09@jsunderhood а что если просто использовать css-modules? @andrey_sitnik12:16
все еще только пол решения, нужны константы, функции итд. и в идеале доступные из js, кстати функции в css всем нравятся? @alexeyraspopov
12:17@jsunderhood изоляция классов — только половина решения. Сейчас CSS Modules + postcss-autoreset + postcss-initial даёт и изоляцию свойств.12:22
это можно и нужно добавить в jss, возможно в виде плагина @andrey_sitnik
12:22@jsunderhood в css этот стафф нахер не нужен. Нормальный декларативный язык.12:23
тебе не нужен ... в css это все не зря добавляют ... @alexeyraspopov
12:24впринципе добавить all: initial; в каждую рулу тривиально через плагин для jss, надо срочно сделать) @andrey_sitnik @iamstarkov
12:37@jsunderhood полифил не забудь, так как IE не держит свойство all12:46
@jsunderhood если взять тот факт, что существующие проекты используют webpack+preCSS+postCSS - какой профит от перехода на jss12:50
не зная проект сказать не могу, #jss это не швецарский нож, даже если очень хочется засунуть его везде, лично мне @blia
12:53@jsunderhood какие проблемы нельзя решить через postcss, которые решает jss?12:55
с postcss можно решить большинство проблем, нельзя автопрефиксинг в рантайме - тоесть надо грузить все префиксованые декларации @gusnkt
12:57автоматизированой изоляции от наследуемых свойств пока что нет, идею мне подкинули тут сегодня и я создал ишью,а так ручками @ierhyna_web
13:00@jsunderhood @gusnkt PostCSS можно и в на клиенте запускать с помощью github.com/postcss/postcs…13:01
@cssunderhood @jsunderhood вообще CSS-in-JS — это 3 разных вопроса: трансформации CSS на клиенте, JS-синтаксис для CSS и изоляция13:30
@cssunderhood @jsunderhood например, есть Styling с JS-синтаксисом, но на сервере и через PostCSS с CSS Modules github.com/andreypopp/sty…13:31
@cssunderhood @jsunderhood а есть react-postcss с динамическим CSS на клиенте, но без JS-синтаксиса github.com/mungell/react-…13:31
@listochkin моей вахты еще не было, там будут темы поинтереснее :) @jsunderhood14:12
давай @alexeyraspopov порви всех чувак!
14:13готовься, подмывайся, будешь следующим) @alexeyraspopov
14:25для тех кому собственно проект интересен: мне нужна помощь в его развитии: новая документация, интересные примеры, todo app итд
14:41вот кстати табличка с популярными css in js решениями, правда критерий мало github.com/MicheleBertoli…
14:58@andrey_sitnik @jsunderhood потому что писать надо на clojure20:24
кстати да вот интересно было бы посмотреть как jss стиль на clojure будет выглядеть @mr_mig_by
20:25вот кстати вам пример не тривиальный использования, пока что еще в работе, мигрирую библиотеку @elementalui на #jss github.com/elementalui/el…
20:34вот таких контрибутеров я желаю всем кто делает свои опен сорс проекты github.com/jsstyles/css-v…
21:46@slonoed @jsunderhood @mr_mig_by а какие у CSS концепции что не могут быть представлены данными в clojure? Просто наборы правил, нет?22:15
# Вторник 50 твитов
@andreypopp @slonoed @jsunderhood да ну, забейте, это все привычки.8:19
Стоит попробовать поюзать пару раз, чтобы понять всю прелесть подхода
всем доброе утро, сегодня можем поговорить о кроcсплатформенной разработке ui на js
9:24@jsunderhood в смысле десктопной разработке на js?9:29
в смысле о мобильно вебной разработке
9:29хочу рассказать вам одну историю, поделиться кое какими мыслями на эту тему и конечно же пару ссылочек.
9:31В общем пару лет назад я работал над своей идеей и решил делать мобильное приложение на js) В тот момент очень шумела одна либа famo.us
9:33То что вы видите сейчас на их сайте это их новое направление к которому они перешли потерпев неудачу со старым.
9:34До этого они подняли 25мио на js framework который должен был позволить писать нам приложения со сложными переходами и жестами как на нэтив.
9:36В общем я решил их опробовать, у них интересные идеи по оптимизации рендеринга и организации кода. Фреймворк был сырой и я фиксил кучу багов
9:38вобщем ишью я насоздавал там немало github.com/Famous/famous/… как выяснилось потом они уже ждали с нетерпением меня) github.com/Famous/famous/…
9:41продолжу через пол часа, митинг)
9:42@andreypopp @jsunderhood Они вроде тут теперь famous.org10:12
@jsunderhood famo.us? Хороший pivot у них произошёл :)10:15
Вобшем проблема у этой компании в странном понимании опен сорса. Как выяснлилось позже они уже работали над новой версией.
10:18они как бы открыли свой фреймворк, но никогда не говорили что они там делают и куда ведется разработка.
10:18вобщем по мне это не опен сорс, это freeware
10:19опен сорс в моем понимании это в первую очередь открытая коммуникация, возможность дать людям понимать что происходит и участвовать
10:20вобщем компания famo.us мягко сказать стремная. За то я так познакомился с их на тот момент главным архитектором @dmvaldman
10:21он вскоре ушел из этой компании и на данный момент разрабатывает на базе своего кода написанного тогда новую штуку samsarajs.org
10:22он в этом году приезжал в берлин и много об этом рассказывал, в частности вот его видео c @jsconfeu youtube.com/watch?v=biJXpv…
10:25идея в #samsarajs в том что лэйоут это набор стримов которые надо координировать. Ведь если вы посомтрите на переходы в ios меню с гамбургер
10:28то это не одна анимация, их целая куча. Вот реализация этого меню на #samsarajs samsarajs.org/examples/
10:29восновном все движки которые пытаются симулировать такие переходы на js они кастрированые. Просто переход это не все.
10:30нужно обрабатывать поток ивентов от жестов к примеру при ведении палца и реагировать соответственно координируя ВСЕ анимации для перехода.
10:31и это сделать совсем не просто, а в частности сделать это эффективно и читабельно.
10:31АПИ которая позволит самому создавать такого рода переходы не супер сложно насколько я знаю кроме как у этого проекта не существует.
10:32Есть куча UI либ которые делают все эти вещи за тебя, но это другой уровень абстракции. Там ты не можешь придумать свой особенный переход.
10:33кто верит что мы сможем писать мобильные ui по качеству не хуже чем нативные на js ретвитьте samsarajs.org @dmvaldman
12:09давайте перечислим все методы оптимизации перформанса рендеринга на js, я начну а вы добавляйте)
12:58Проблема с DOM это количество собственно элементов которые находятся в render tree, его надо держать на минимуме.
12:59Также проблема с DOM в том что очень много медленных методов а также свойства являются сеттерами и неожиданно делают много всего под копотом
13:00Поэтому любые манипуляции DOM опасны для перфа, даже чтение многих свойств, казалось бы безобидных.
13:01на тему перфоманса скоро будет интересный воркшоп smartme.university/workshop/chall…
13:04@jsunderhood DOM is not SLOW webreflection.blogspot.com/2015/04/the-do…13:15
@jsunderhood DOM нормальный. Проблема в том, что мы его дергаем когда нам захочется, а не когда есть для этого ресурсы.13:24
соответственно проблема с абстракциями ... тк в пользовательском коде ты дергаешь то что надо когда этого требует бизнес логика @roman01la
13:25@jsunderhood `requestIdleCallback` вроде как призван помочь решить эту проблему13:26
Следущая оптимизация рендеринга - requestAnimationFrame developer.mozilla.org/en-US/docs/Web…
13:39если нужна поддержка старых девайсов, есть кроссплатформенный shim для requestAnimationFrame github.com/kof/animation-…
13:40@AndrewHalych @jsunderhood Ускорения не достаточно. DOM уже говорилось - сложная модель, двигаешь картинку на пиксел=меняешь массу пропертей14:08
@jsunderhood проблема в том, что порой чтение приводит к reflow
такого не встречал, если есть пример то в студию
@jsunderhood проблема в том, что порой чтение приводит к reflow
15:28
@jsunderhood проблема в том, что порой чтение приводит к reflow15:28
@jsunderhood вот так правильнее olegas.github.io/talks-improve-…15:41
еще есть проблемы с полупрозрачностью, особенно если такой элемент анимировать
15:44а еще у нас есть уборщик мусора garbage collector который может заморозить весь ui thread в любой момент, поэтому надо всегда делать паузы
15:47. @fliptheweb @jsunderhood и еще csstriggers.com15:50
для того чтоб обойти все проблемы с reflow к примеру #samsarajs позизионирует все контейнеры которые будут анимироваться абсолютно
17:19для этого используется свой кастомный layout engine которые знает где какой контейнер в любой момент времени из js
17:20@jsunderhood а я давно говорю - даешь возможность менять layout engine в каждый браузер!19:30
# Среда 7 твитов
по поводу justgetflux.com : я пользовался ей пол года, сначала было непривычно, потом привык
11:48потом почувствовал что она мне садит зрение и решил отказаться. Могу подтвердить чтоб засыпать легче если ее использовать.
11:49я пришел к выводу что этот желтый цвет как то расслабляет, в тоже время пытаясь сконцентрироваться сквозь сон глаза напрягаются @WarEnek
12:07@jsunderhood @WarEnek19:26
вот еще: health.harvard.edu/staying-health…
Плюс ко всему синий цвет “насилует" зрение: texyt.com/bright+blue+le…
@jsunderhood @WarEnek русский вариант статьи: geektimes.ru/post/94441/19:27
@WarEnek @jsunderhood +1, года 3 уже использую, без нее быстро глаза начинают болеть, отвык от яркости.19:32
# Четверг 14 твитов
@jsunderhood Я на эту тему заметку писал habrahabr.ru/post/210558/ Не касался там проблем оптимизации самого js (в частности GC)11:01
расскажу о том как мы на @chatgrapecom мигрируем все на #reactjs
11:10тк взять все и переписать слишком долго времени займет, нужен процесс миграции. Мы используем github.com/PixelsCommande… @PixelsCommander
11:12плюс полифил для кастомных элементов github.com/WebReflection/…
11:13получается что каждый внешний реакт компонент регистрирует свой кастомный элемент, который используется старым кодом.
11:14@jsunderhood @PixelsCommander аналогично! Отличная штука12:12
Object.create(null), ебаный стыд19:52
Object.create(null) это впринципе простая версия Map, если обьект используется как хранилище данных и ключи вне контроля, то это норм.
19:53@jsunderhood это стыд, а не норм. Норм это Map.19:55
для Map нужен полифил, если тебе нужен микро мэп то это Object.create() к примеру использовать это в небольшой либе - ок. @mr_mig_by
19:56конечно я бы предпочел Map в приложении плюс полифил, там где микро оптимизации размера не важны @mr_mig_by
19:58. @jsunderhood Если бы разработчики firefox extensions API дизайнили апи жаваскрипта, ajax выглядел бы вот так: developer.mozilla.org/en-US/Add-ons/…20:28
насколько я знаю фаерфокс сплошной говнокод плюс на экстеншены никто апи не стандартизирует вроде. @mr_mig_by
20:30@jsunderhood пытаются какбэ слить всё в wiki.mozilla.org/WebExtensions20:38
Но до результата как раком до Китая :(
# Пятница 57 твитов
А кто может обьяснить почему многие разработчики не любят фронтенд? мне лично не раз попадались ...
12:05Я когда-то перешел с фронтенда на ноду, года 2 работал, вернулся в фронтенд. Здесь постоянно что-то новое происходит. А там скукота.
12:07Болшинство бэкендов сводятся к передачи данных из базы кудато еще и к пользователю ...
12:08Бэкендлеры этакие переносчики стримов)
12:08@jsunderhood большинство фронтэндов сводится к формошлепству на жквери/ангуляре12:10
@jsunderhood фронтэндщики этакие преобразователи жсона)12:10
@jsunderhood Потому что у JS всегда была плохая репутация среди хардокрных программистов. А html/css - это вообще не про программирование))12:12
незнаю я это вижу до сих пор ... причем даже у людей которые вплотную занимаются фронтендом @Xvakin
12:13@jsunderhood на бэкенде таки много сложных заморочек типа кеширования, шардинга, поисковых алгоритмов, не знакомых фронтендерам12:14
по хорошему, шардингом занимаются devops а не бэкендлеры, а поисковыми алгоритами - математики @Xvakin
12:15вообще надо еще различать между верстальщиками и фронтенд инженерами ... я сейчас верстальщиков не имею ввиду, так это не инженерия
12:18@jsunderhood да, но эта нелюбовь к фронтенду отчасти может быть связана с причастностью к верстке12:23
@jsunderhood @Xvakin UI верстается на CEF/Electron в 4-5 раз быстрее, чем его могут кое-как реализовать на Qt/XAML. Хлеб отнимают!12:23
Qt это не бэкенд, опять таки я сейчас имел введу только веб @sergo_vitkovsky @Xvakin
12:24@jsunderhood Там еще и большое количество ненавистников JS как языка.12:25
@jsunderhood @Xvakin веб-фронтэнд - это уже не только про веб )12:26
@jsunderhood ого, фронтенд-инженеры. Так и до фронтенд-CTO недалеко.12:26
@Xvakin @jsunderhood хардкорные программисты это асм или плюсы?12:28
@jsunderhood А разработчики на ноде более лояльны к фронтэнду, как мне кажется. Они с ним слишком тесно связаны. Либо не любят и саму ноду.12:28
@twenty @jsunderhood Ну а что, на фронтэнде нынче что угодно воспроизвести можно. Упереться можно, в основном, лишь в производительность.12:29
определение термина "инженер очень размазанное" поэтому в теории можно, но есть общепринятые понятия поэтому @twenty
12:33поэтому верстальщики пожалуй пока останутся верстальщиками en.wikipedia.org/wiki/Engineeri… @twenty
12:34@twenty @jsunderhood реквестирую название "нормальных компаний"12:42
. @jsunderhood фронтэнд для молодняка, бекенд для пенсионеров! 👻😱12:42
забываю) я же инженер, пытаюсь еще и работать между делом)))) @iamstarkov
12:47нам нужен специальный клиент для твиттера чтоб это все удобно было @iamstarkov
12:48на данный момент frontend engineer .... покрайней мере так написано в контракте ))) @diedsmilling @iamstarkov
12:51к счастьтю всем пофиг что эты это сказал) @twenty @diedsmilling @iamstarkov
13:00@twenty @diedsmilling @jsunderhood @iamstarkov серьезная тема. Т.е. на фронте инженерить нечего? Поддержка не нужна?13:04
@mr_mig_by @jsunderhood логика такая: если фронтендеры — это инженеры, то тестировщики, дизайнеры и продукт оунеры — тоже инженеры.13:07
а слышал test automation engineer? наверно я тебя сейчас взорвал @twenty @mr_mig_by
13:08@mr_mig_by @jsunderhood в таком случае, вот этот твит выглядит как-то оскорбительно.13:11вообще надо еще различать между верстальщиками и фронтенд инженерами ... я сейчас верстальщиков не имею ввиду, так это не инженерия
лично я просто еще не слышал о html engineeri ... @twenty @mr_mig_by
13:11@jsunderhood @mr_mig_by я правильно понимаю, что тестировщики — это инженеры? Дизайнеры — инженеры? Верстальщики — инженеры?13:11
test automation engineer и мануальный тестер этот разные вещи, остальных не слышал таких .. но все может быть) @twenty @mr_mig_by
13:13@jsunderhood @mr_mig_by UX engineer не слышал?13:18
у меня был такой титул когда-то, но я впринципе был frontend engineer, это просто дураки писали. В теории да должно быть @twenty @mr_mig_by
13:19/@twenty @jsunderhood @mr_mig_by я правильно понимаю, что без звания "инженер" программист чувствует себя каким-то неполноценным?13:20
не знаю насчет полноценности, но разница в зарплате может быть точно) @rubyunderhood @twenty @mr_mig_by
13:20/@jsunderhood я наблюдал в совковых конторах, что должность "инженер-программист" дают всем, у кого ВО, а "программист" тем, кто без ВО.13:23
@rubyunderhood @jsunderhood вот вам на всякий случай: slideshare.net/alexeymigutsky…13:26
И вот еще: slideshare.net/zhellaanne/int…
@rubyunderhood @twenty @jsunderhood @mr_mig_by слово «инженер» по своей этимологии означает тупо «конструктор». То, что сюда приплетают ВО..14:07
@rubyunderhood @twenty @jsunderhood @mr_mig_by ..просто следствие сакрализации академического подхода. Степень автоматизации -- не критерий.14:07
@rubyunderhood @twenty @jsunderhood @mr_mig_by инженером является любой собравший из говна и палок по мануалу из "очумелых ручек" скворечник
так и есть.
@rubyunderhood @twenty @jsunderhood @mr_mig_by инженером является любой собравший из говна и палок по мануалу из "очумелых ручек" скворечник
14:08
если бы ты придумал свое говно и палки, то тебя бы называли ученым, а так пока что мы инженеры ... хотя иногда мы инженеры-изобретели
14:10/@Chudesnov @twenty @jsunderhood @mr_mig_by значит я уже к 13 годам был сеньор-инженером!
почему бы и нет!
/@Chudesnov @twenty @jsunderhood @mr_mig_by значит я уже к 13 годам был сеньор-инженером!
14:11
I like #javascript more than other languages because...18:41
@mr_mig_by @jsunderhood cuz `[1] + [1] === 2`
а вот и нет)
@mr_mig_by @jsunderhood cuz `[1] + [1] === 2`
19:06
@roman01la @mr_mig_by @jsunderhood I like JavaScript because undefined is not a function19:13
# Воскресенье 22 твита
Вопрос: чем пользуются у вас в командах для коммуникации кроме эмаила?
15:54@jsunderhood google hangouts, slack, appear.in, github PRs/issues16:35
@jsunderhood @fuckingsun Slack, еще в прошлой команде Hipchat юзали, но он грустненький16:35
@jsunderhood skype, telegram16:35
@jsunderhood @fuckingsun скайп, слэк, вк16:35
@jsunderhood slack16:35
А какие являются основные критерии или функции по которым вы выбирали чат?
16:36@jsunderhood хипчат + телеграм16:47
@jsunderhood разграничение, доступность клиента, управление файлами прозрачное, простая разметка16:48
@jsunderhood пиздюли, давление авторитетом, запугивание и угрозы, вера в то, что босс умней16:49
@jsunderhood Slack16:49
@jsunderhood Skype, Lync (Skype for business), Outlook Express, короче полный ад.17:18
@jsunderhood slack, disqus17:52
@a_novok @jsunderhood любые устройства, в том числе и просто веб-версия есть, можно создавать чаты, упоминать людей, защищенность тоже норм18:52
@jsunderhood @a_novok телеграм в основном18:52
@jsunderhood только телеграм18:53
@jsunderhood скайп, много скайпа, все на расстоянии одного клика18:53
@jsunderhood, телеграм.19:33
@jsunderhood чем угодно, кроме email, я бы сказал - всем, кроме него)19:33
@jsunderhood перенесли все чатики в Telegram19:33
я работаю на chatgrape.com , фокус на безопасность, интеграцию сервисов, встроенный поиск по сервисам, попробуйте ...
19:39# Ссылки
github.com
- https://github.com/kof
- https://github.com/jsstyles/jss
- https://github.com/jsstyles/react-jss
- https://github.com/jsstyles/jss-extend
- https://github.com/postcss/postcss-js
- https://github.com/andreypopp/styling
- https://github.com/mungell/react-postcss
- https://github.com/MicheleBertoli/css-in-js
- https://github.com/elementalui/elemental/pull/88
- https://github.com/noprompt/garden
- https://github.com/jsstyles/css-vendor/pull/3#issuecomment-151291962
- https://github.com/Famous/famous/issues?q=is%3Aissue+author%3Akof+is%3Aclosed
- https://github.com/Famous/famous/issues/111
- https://github.com/kof/animation-frame
- https://github.com/PixelsCommander/ReactiveElements
- https://github.com/WebReflection/document-register-element
other
- https://medium.com/@oleg008/the-important-parts-131dda7f6f6f#.60fknsppf
- http://jsstyles.github.io/jss-examples/calendar/index.html
- https://gist.github.com/kof/96dad9a4d614e59edbce
- https://gist.github.com/paulirish/5d52fb081b3570c81e3a
- http://famous.org/
- http://famo.us/
- https://jsunderhood.ru/about/
- http://samsarajs.org/
- http://samsarajs.org/examples/
- http://samsarajs.org/
- https://www.youtube.com/watch?v=biJXpv-6XVY
- https://www.youtube.com/watch?v=20BySC_6HyY
- http://smartme.university/workshop/challenging-native/
- http://webreflection.blogspot.com/2015/04/the-dom-is-not-slow-your-abstraction-is.html
- https://developer.mozilla.org/en-US/docs/Web/API/window/requestAnimationFrame
- https://developer.mozilla.org/en-US/Add-ons/Code_snippets/Downloading_Files#Downloading_Images
- http://olegas.github.io/talks-improve-rendering-speed
- http://csstriggers.com/
- http://justgetflux.com/
- http://www.health.harvard.edu/staying-healthy/blue-light-has-a-dark-side
- http://texyt.com/bright+blue+leds+annoyance+health+risks
- http://geektimes.ru/post/94441/
- http://habrahabr.ru/post/210558/
- https://wiki.mozilla.org/WebExtensions
- https://en.wikipedia.org/wiki/Engineering
- http://www.slideshare.net/alexeymigutsky/software-engineering-101
- http://www.slideshare.net/zhellaanne/introduction-to-software-engineering-8594657
- http://chatgrape.com/