mourner

14 марта 2016, Киев, Украина

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

Всем привет! На этой неделе с вами @mourner. Я разработчик в @Mapbox, автор @LeafletJS и множества других open-source-библиотек.

9:42

В основном занимаюсь картами, визуализациями и алгоритмами. Большая часть моей работы — open source github.com/mourner/projec…

9:44

Leaflet — библиотека для карт, которую используют GitHub, Foursquare, Flickr, 500px, Facebook, NYTimes, Госдеп, Еврокомиссия и тысячи других

9:47
@jsunderhood Привет! Это круто! На этой неделе тема open-source будет раскрыта =)

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

@jsunderhood Привет! Это круто! На этой неделе тема open-source будет раскрыта =)

9:49
@jsunderhood @mourner @Mapbox @LeafletJS Привет! Какое расписание будет, или по старинке)

Как-то не думал над расписанием, но предлагайте темы для обсуждения и я что-нибудь придумаю :)

@jsunderhood @mourner @Mapbox @LeafletJS Привет! Какое расписание будет, или по старинке)

9:50
@jsunderhood привет, расскажи, можно на лифлете делать изометричные карты? что бы объекты могли ложиться под стены и т.п.?

Leaflet заточена под тайловые карты 2D. Но тайлы можно рисовать в канвасе, так что изометрию можно сделать в теории

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

9:53

Следующие 45 минут в дороге — еду в коворкинг. Работаю удаленно, но дома маленькие дочки-близняшки — сконцентрироваться невозможно :)

10:04
@jsunderhood В каком коворкинге ты работаешь?

data-hub.com.ua в Киеве. Просторно, тихо, быстрый интернет, настольный теннис и печеньки — всё, что нужно :)

@jsunderhood В каком коворкинге ты работаешь?

10:18
@jsunderhood я своих девочек "построил". Или они меня... В-общем, иногда и в наушниках под The Crystal Method неплохо. Дома можно дольше.

Им меньше двух лет, особо не построишь. :) Ну и это индивидуально — лично мне дома не работается, не та обстановка

@jsunderhood я своих девочек "построил". Или они меня... В-общем, иногда и в наушниках под The Crystal Method неплохо. Дома можно дольше.

10:27
@jsunderhood @mourner @Mapbox @LeafletJS Ты родом из Киева или переехал?

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

@jsunderhood @mourner @Mapbox @LeafletJS Ты родом из Киева или переехал?

10:39
@mourner привет Вова! Кажется, @LeafletJS вырос из коммерческого проекта. Как ты убедил клиента выложить наработки в open source?

У Leaflet вообще интересная история, я об этом делал 13-минутный видеодоклад — посмотрите youtube.com/watch?v=NLbyHf…

@mourner привет Вова! Кажется, @LeafletJS вырос из коммерческого проекта. Как ты убедил клиента выложить наработки в open source?

10:52
@jsunderhood @mourner @Mapbox @LeafletJS Где работал и чем занимался до сегодняшней "работы"?) Какие хобби есть.

Я музыкант и лидер рок-группы Обійми Дощу. Пишу песни, пою, играю на гитаре rain.in.ua/ru.html

@jsunderhood @mourner @Mapbox @LeafletJS Где работал и чем занимался до сегодняшней "работы"?) Какие хобби есть.

10:56

Кроме этого увлекаюсь спортом (карате, стрит воркаут, сноуборд), фотографией, игрой Го, в добавок к обязанностям отца семейства :)

10:58

Раньше работал в разного рода аутсорсинговых компаниях (6 лет — в @Cogniance). Но 2.5 года назад нашел работу своей мечты — @Mapbox :)

11:00
@jsunderhood как ты все успеваешь? :)

Грустная правда в том, что не успеваю. :) Иначе, например, мы бы давно выпустили второй альбом (первый вышел в 2009)

@jsunderhood как ты все успеваешь? :)

11:01

Но стараюсь как могу. Рождение детей выбило из колеи, но потихоньку возвращаюсь в ритм и отвоевываю прежние увлечения назад :)

11:03
@jsunderhood а библиотеку для visual regression testing ты доделал? чем она лучше всех остальных?

Доделал! github.com/mapbox/pixelma… — самая быстрая и легковесная библиотека такого рода, с крутыми алгоритмами.

@jsunderhood а библиотеку для visual regression testing ты доделал? чем она лучше всех остальных?

11:04
@jsunderhood @nemcik7 @mourner @Mapbox @LeafletJS расскажи про спорт и здоровье, у тебя крутой опыт!

Я большой фанат CRPG (Fallout, TES, etc.). И осознал, что можно упорным трудом "раскачать" персонажа и в жизни :)

@jsunderhood @nemcik7 @mourner @Mapbox @LeafletJS расскажи про спорт и здоровье, у тебя крутой опыт!

11:07

Перечитал груды книжек, статей и форумов на тему силовых тренировок и начал тренироваться с весом своего тела. Фото: imgur.com/a/bNmbI

11:08

Пару лет назад подробнее делился своим опытом на Реддите reddit.com/r/bodyweightfi…

11:10
Dear twitter: What's the correct, polite way to reply to this e-mail? #lazyweb pic.twitter.com/gaQQmwzWPt

Вот пример письма, подобные которому я как автор популярной библиотеки получаю каждый день. Нужно много терпения :)

Dear twitter: What's the correct, polite way to reply to this e-mail? #lazyweb pic.twitter.com/gaQQmwzWPt

11:22

Удивительно, сколько человек считает, что open-source-разработчики — это магические рыцари, которые всегда готовы делать работу за других

11:23

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

11:25

Мораль: берегите и жалейте open-source-разработчиков, им бывает тяжело! Пишите хорошие багрепорты и помогайте фиксить баги. :)

11:26
@jsunderhood Ты вообще спишь когда-нибудь? :)

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

@jsunderhood Ты вообще спишь когда-нибудь? :)

11:35

Согласно git.io/top, в прошлом году я был на 139-м месте по активности на GitHub. И в Top 30 есть пара моих коллег из @Mapbox

11:39
Оцените доклад @searls на тему динамики отношений в open source youtube.com/watch?v=e_-qV8… /cc @jsunderhood
11:48
@jsunderhood @mourner мне нужно на карте изобразить газопроводы (их много). Газопроводы есть в svg. Посоветуйте, как проще это сделать.

Выяснить, какая система координат в SVG-файле, и написать скрипт который сконвертирует линии в формат GeoJSON

@jsunderhood @mourner мне нужно на карте изобразить газопроводы (их много). Газопроводы есть в svg. Посоветуйте, как проще это сделать.

11:51
@jsunderhood видео отличное, но там не сказано о том, как убедить клиента выложить код в открытый доступ

Вкратце, я написал длинное письмо на весь менеджмент с десятком пунктов, почему нам стоит это сделать. Согласились.

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

11:55

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

11:57
@jsunderhood =))) Тебя и тут достанут вопросами "У меня тут, как мне лучше, не глянешь быстренько, ты ж опенсорсер"
11:58

Со своей узкой специализацией я немного отстал от модных веяний, но у нас в компании любят React, Redux, Babel/ES6, Browserify, Tape, ESLint

12:01

Один из моих главных проектов сейчас — библиотека для векторных карт на WebGL github.com/mapbox/mapbox-…. Очень сложная и интересная штука.

12:03

А вот вам пример из моего инбокса. pic.twitter.com/Hzjk26nx3Q

12:09
@jsunderhood а как ты видишь карты, в т.ч. webgl-ные, и virtual dom?

Думаю, что за векторными WebGL-картами будущее. Но разрабатывать их очень, очень, очень сложно. Просто мозг ломается

@jsunderhood а как ты видишь карты, в т.ч. webgl-ные, и virtual dom?

12:13
@jsunderhood а как ты видишь карты, в т.ч. webgl-ные, и virtual dom?

Если вопрос был про Virtual Dom в WebGL-картах: не поможет — WebGL это другая планета в одном DOM-элементе

@jsunderhood а как ты видишь карты, в т.ч. webgl-ные, и virtual dom?

12:16
@jsunderhood После слова India невольно начал читать с индийским акцентом.

Кстати говоря, несмотря на расовые предубеждения в IT, подобные письма пишут из любых стран.

@jsunderhood После слова India невольно начал читать с индийским акцентом.

12:19
@jsunderhood какие основные отличия? О чём таком приходится думать о чём с обычными не задумывался?

Мой прошлогодний доклад на эту тему youtube.com/watch?v=u2ppZY…

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

12:20
@jsunderhood какие основные отличия? О чём таком приходится думать о чём с обычными не задумывался?

Вкратце — WebGL толком умеет рисовать только текстуры и треугольники. Для остального нужно вручную писать алгоритмы

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

12:21
@jsunderhood под мобайл тоже делаешь? Про особенности мобильного webgl можешь что-нибудь рассказать?

В современных мобильных браузерах (Safari/Chrome) всё как правило сразу работает, просто медленнее и меньше памяти

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

12:24
.@jsunderhood But the good thing is that WebGL can do those two things INSANELY FAST.
12:25

Но вообще мы параллельно пишем быстрый нативный движок на C++. На JS быстрый движок для мобильных карт пока не получится сделать.

12:27

Пример сложной алгоритмической задачи, для которой мне пришлось написать свою библиотеку: триангуляция полигонов github.com/mapbox/earcut

12:35

Ирония судьбы: весь универ (КПИ примат) забивал на пары, пил пиво и шпилил в игры. Через десять лет по работе всё пришлось учить заново :)

12:38
@jsunderhood вопрос скорее в поисках боттлнеков. Ибо делал как-то rotozoom обычной картинки, плюс блюрил пиксельным шейдером, тормозило :V

Тут нет универсальных рецептов кроме "всего делать поменьше", приходится научным тыком искать пути оптимизации :)

@jsunderhood вопрос скорее в поисках боттлнеков. Ибо делал как-то rotozoom обычной картинки, плюс блюрил пиксельным шейдером, тормозило :V

12:39
@jsunderhood а ты знаешь что-нибудь о проекте @ViziCities? @robhawkes для его оптимизации сделал много клевых штук, вроде как

Мы с Робом дружим, пили пиво вместе не раз, и некоторые оптимизации он делал по моим советам :)

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

12:42
@jsunderhood @tensai_cirno You can see how many browsers (and platforms) have WebGL enabled here: webglstats.com
12:43
@jsunderhood а не приходилось сталкиваться с рассчетом колизий у сложных объектов (не описываемых формулами)?

Индексируем по bbox: в 2D пользуемся моим github.com/mourner/rbush, для 3D посмотрел бы на github.com/mikolalysenko/…

@jsunderhood а не приходилось сталкиваться с рассчетом колизий у сложных объектов (не описываемых формулами)?

13:00

Моё рабочее место сейчас pic.twitter.com/RfDnGgJ0PU

13:02
@jsunderhood, будете через Вебассембли крутить потом?

Пока неизвестно — надо подождать реализации, чтобы пощупать.

@jsunderhood, будете через Вебассембли крутить потом?

13:07
@jsunderhood правильно понял tape - это тестовый фраемворк?

Простой, легкий и хороший тестовый фреймвок. Вот статья, почему его стоит использовать: medium.com/javascript-sce…

@jsunderhood правильно понял tape - это тестовый фраемворк?

13:09
@jsunderhood а что-то что умеет умно разбирать объект на боксы есть?

Нет, надо уже смотреть по случаю. Например иногда достаточно не разбивать, и сравнивать потом целые объекты.

@jsunderhood а что-то что умеет умно разбирать объект на боксы есть?

13:11
@jsunderhood так вот если без bbox, есть что-то что ищет колиции с хорошим перформансом у сложных объектов?

Универсальных библиотек для этого нет, насколько мне известно. Всё зависит от того, какие объекты, сколько и т.д.

@jsunderhood так вот если без bbox, есть что-то что ищет колиции с хорошим перформансом у сложных объектов?

13:18
@jsunderhood сори что не унимаюсь, потому что все это приходилось самому писать руками и может появились либы с хорошим перформансом

Мне всегда приходится писать с нуля, чтобы было с хорошим перфомансом :) Вычислительная геометрия — сложная штука.

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

13:19
@jsunderhood сколько ноуту уже?

Macbook Retina 15 середины 2012-го, с максимальным конфигом. Верно служит 3.5 года, и где я его только не таскал. :)

@jsunderhood сколько ноуту уже?

13:21
@jsunderhood наконец-то не про React! Алилуйя.
13:25
@jsunderhood у нас была задача сделать колизии 2 объектов > 1000 точек в браузере, при этом визуальные провалы непозволительны

Следующий шаг — индексировать по bbox-ам сегменты, потом делать тесты segment vs segment и point in polygon

@jsunderhood у нас была задача сделать колизии 2 объектов > 1000 точек в браузере, при этом визуальные провалы непозволительны

13:27
@jsunderhood Посещает желание писать на более "серьёзном" языке и результат компилировать в JS?

Нет, мне всегда нравился JS (тем более ES6). Из других языков очень нравятся Go и Swift за простоту и читабельность.

@jsunderhood Посещает желание писать на более "серьёзном" языке и результат компилировать в JS?

13:35
@jsunderhood А смотрел ли ты Elm? Есть у него будущее ?

Каюсь, не смотрел. Но хочется — несколько коллег его сейчас изучают и говорят, что очень многообещающе.

@jsunderhood А смотрел ли ты Elm? Есть у него будущее ?

13:39
@jsunderhood именно так и делали + физика там была. Но тормозило все страшно

Бывает, что боттлнек не в подходе, а в реализации (например, плохая библиотека для R-tree). Нужно профилировать

@jsunderhood именно так и делали + физика там была. Но тормозило все страшно

13:41
@jsunderhood А Swift да, в разы проще чем ObjC, может и никакой React Native не потребуются просто full-mobile-stack-developer = js + swift.
13:41
@jsunderhood а на asm.js смотрели? caniuse.com/#search=asm.js частично поддерживается в 58% браузерах, плюс потом всегда можно перейти на wasm

Кросс-компиляция из С++ в JS может подойти для одиночных игр и приложений, но если нужно библиотеку — много проблем

@jsunderhood а на asm.js смотрели? caniuse.com/#search=asm.js частично поддерживается в 58% браузерах, плюс потом всегда можно перейти на wasm

13:47
@igor_shubovych @jsunderhood псс, парень. Хочешь расскажу немного про React? А про webpack и css модули?

Unidirectional data flow есть? А если не найду?

@igor_shubovych @jsunderhood псс, парень. Хочешь расскажу немного про React? А про webpack и css модули?

13:49

По поводу asm.js уже отлично написал @mraleph mrale.ph/blog/2013/03/2…

13:52
@jsunderhood а есть резон использовать воркеры для особо сложных расчетов или межтредовая комуникация все сведет на нет?

Обязательно нужно использовать! Большие массивы данных можно пересылать быстро с помощью transferable objects

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

13:54

Мы в Mapbox GL JS загрузку данных и сложные расчеты делаем исключительно в воркерах, а в главный тред приходят готовые буферы для WebGL

13:55
@jsunderhood а все ли сложные расчёты делаете на клиенте, или некоторые заранее на сервере получается сделать?

На сервере тоже много работы — обновление и обработка векторных данных, нарезка на тайлы и т.д.

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

14:03
@jsunderhood да мы так же его используем, но у меня вопрос, какой test runner вы используете? Я остановился на testem

Часто обходимся без раннера, но если нужно, то saucelabs.com, karma-runner.github.io.

@jsunderhood да мы так же его используем, но у меня вопрос, какой test runner вы используете? Я остановился на testem

14:07

Pro tip: когда возникает желание почитать ленту Facebook, открывайте вместо этого medium.com. Много качественных статей.

15:06

Очень хорошая новая тема для Sublime Text 3, с множествм опций github.com/oivva/otto (правда, похожа на дефолтный Атом)

17:16

Много лет использовал Sublime Text 3, пару месяцев назад перешел на Atom, а сейчас вернулся обратно (заскучал по скорости и безбажности).

17:25

Он начал опять активно обновляться, плюс к основной команде недавно присоединился автор Package Control, не затворник как автор Sublime :)

17:27
@jsunderhood jsник должен юзать атом иначе предательство же :)

Я пытался! Но мне постоянно нужно открывать большие файлы и переключаться между кучей проектов, и здесь ST рулит

@jsunderhood jsник должен юзать атом иначе предательство же :)

17:41
@jsunderhood @mourner What's your take on the state of the art of JS package managers? (bower, npm, jspm)

Думаю, Bower пора уйти на покой и уступить NPM + WebPack/Browserify/JSPM. Он сыграл свою роль, но теперь вредит.

@jsunderhood @mourner What's your take on the state of the art of JS package managers? (bower, npm, jspm)

17:44

Вы не представляете, сколько у open source maintainer'ов гемора из-за Bower. Я лично перестал его поддерживать в своих проектах.

17:45
@jsunderhood WebStorm?

WebStorm хорош, но лично я люблю минимализм и простоту. Работаю продуктивнее с редактором, чем с IDE.

@jsunderhood WebStorm?

17:46
@jsunderhood с реально большими файлами всё не очень хорошо, да. переключаться между проектами – atom.io/packages/proje…

Я его и использовал, но открытие проекта всегда очень долгое. В ST — моментально всегда.

@jsunderhood с реально большими файлами всё не очень хорошо, да. переключаться между проектами – atom.io/packages/proje…

18:39
@jsunderhood А можно поподробнее про этот гемор? А то все о нем говорят и ни разу не видел (не сомневаюсь что он есть, впрочем).

Главный гемор в необходимости коммитить билд в проект, что является очень плохой практикой. medium.com/@kentcdodds/wh…

@jsunderhood А можно поподробнее про этот гемор? А то все о нем говорят и ни разу не видел (не сомневаюсь что он есть, впрочем).

18:41
@jsunderhood билд можно комитить в отдельную ветку. И на ней создавать тэг. Естественно это можно сделать автоматически.

Так и приходится делать в Leaflet. Но это до жути неудобно.

@jsunderhood билд можно комитить в отдельную ветку. И на ней создавать тэг. Естественно это можно сделать автоматически.

19:57
@jsunderhood пользуясь случаем, хочу попросить накидать хороших светлых тем для ST3, сам сижу на стандартной iPlastic, но ее уже не хватает
19:58

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

А кто-нибудь здесь смотрит матч Ли Седола с АльфаГо? Сейчас идет последняя, пятая игра. Одно из самых интересных игровых событий в истории.

7:16
@jsunderhood нет. Только итоги. Думаю и на этот раз программа "поддастся" человеку - чтобы его … не обидеть. 👻 ибо победа уже за программой!

Победа рано или поздно за AI, но насчет "поддается" — неправда. Просто Седол за 3 игры нашел в AlphaGo уязвимости.

@jsunderhood нет. Только итоги. Думаю и на этот раз программа "поддастся" человеку - чтобы его … не обидеть. 👻 ибо победа уже за программой!

7:52
@jsunderhood Дико бесит, когда в гите нет dist файлов

Ну вот :) А теперь представьте, сколько таких людей яростно пишут в GitHub о том, что их дико бесит, не разобравшись

@jsunderhood Дико бесит, когда в гите нет dist файлов

9:11

RBush — одна из библиотек, которыми я особенно горжусь. github.com/mourner/rbush Незаменима в алгоритмах и визуализациях больших 2D данных

9:21

Еще это один из немногих случаев, когда мне удалось сильно улучшить вычислительную сложность существующего алгоритма (OMT bulk loading)

9:23
@jsunderhood можеш пошарити свої пакеджі для ST3?

SublimeLinter, SideBarEnhancements, PrettyJSON, Markdown Preview, AutoFileName, ColorPicker, GitGutter + синтаксисы

@jsunderhood можеш пошарити свої пакеджі для ST3?

11:09
Behold! #aprilfoolsday is around the corner. Treat your @LeafletJS maps with this superb plugin git.io/vaRt1 @TheOnion #mapping
11:33

Как-то давно я создал страничку для отслеживания положения солнца — suncalc.net. Не обновлял её 5 лет, но до сих пор полезно :)

11:50

Это было до того, как я создал Leaflet. Давно хочется ее переписать, но всё не доходят руки. :)

11:51

Код, который делает все солнечные расчеты, я превратил в JS-библиотеку — github.com/mourner/suncalc. Теперь она и луну считать умеет.

11:52

Вторник — день тяжелый! Что-то тихо сегодня. :) Задавайте вопросы по JS-перфомансу, алгоритмам, картам и open source!

11:56
@jsunderhood можно уже был вопрос, какие книги ты бы посоветовал для углубления знаний в js?

Я много лет не читал книг на тех. темы. Вместо этого рекомендую взяться за pet project с незнакомыми технологиями

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

11:59

Намного эффективнее учиться в процессе работы над чем-то увлекательным! И читать статьи и отрывки книг по мере возникновения проблем.

12:00
@jsunderhood как получить первую сотенку * ? ;)

Нужно оформить репо хорошим readme, доками, демкой, скриншотом, тестами, трависом и т.д., и только потом делиться

@jsunderhood как получить первую сотенку * ? ;)

12:02
@jsunderhood насколько осмысленно использовать DOM API вместо jQ, Prototype.js и т.д. с точки зрения производительности?

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

@jsunderhood насколько осмысленно использовать DOM API вместо jQ, Prototype.js и т.д. с точки зрения производительности?

12:05
@jsunderhood Как работаешь с перфомансом? Заблаговременно заботишься или постфактум, когда проблемы очевидны?

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

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

12:07
@jsunderhood Спасибо! но это не гарантирует даже первой звезды :) Если это УГ никому не надо - то и не будет ***.

Само собой. :) Поэтому в описании репо и первом предложении readme критично сразу четко объяснить, зачем это нужно.

@jsunderhood Спасибо! но это не гарантирует даже первой звезды :) Если это УГ никому не надо - то и не будет ***.

12:08
@jsunderhood а по какому алгоритму фазы луны рассчитывает?

В комментариях к функциям есть ссылки на исходные статьи.

@jsunderhood а по какому алгоритму фазы луны рассчитывает?

12:09
@jsunderhood а зачем использовать DOM API тогда? И нужно ли его использовать с твоей точки зрения?

Упс, я имел в виду, не имеет смысла использовать jQuery и т.д. вместо DOM API, если только не заботят старые IE :)

@jsunderhood а зачем использовать DOM API тогда? И нужно ли его использовать с твоей точки зрения?

12:10
@jsunderhood Играет ли роль ES3 vs ES2016 с точки зрения производительности. Используешь ли ты его и если да, то зачем?

Играет роль, но зависит от фичи/браузера/транспайлера и т.д. В боттлнеках сверяйся с kpdecker.github.io/six-speed/

@jsunderhood Играет ли роль ES3 vs ES2016 с точки зрения производительности. Используешь ли ты его и если да, то зачем?

12:12
@jsunderhood А я люблю читать книги. Хорошо всё, что для тебя работает.

Тоже правда! Но по моим наблюдениям, короткие, простые электронные тех. книги быстро вытесняют длинные печатные.

@jsunderhood А я люблю читать книги. Хорошо всё, что для тебя работает.

12:13

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

12:15

Недавний пример идеальной технической книги по простоте/объему/формату — Swift Book. Просто великолепно сделано!

12:16
@jsunderhood Как увеличить кол-во полезных PR в свой oper source проект?

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

@jsunderhood Как увеличить кол-во полезных PR в свой oper source проект?

12:18

Очень помогают строгие тесты, включая линтеры вроде ESLint — например я использую довольно строгий конфиг github.com/mourner/eslint…

12:19

Чтобы контрибьюторы писали больше тестов, очень помогает привязать сервис code coverage, например istanbul + coveralls.io

12:20

Ну и совсем недавно в GitHub появилась отличная фича — issue/PR templates. Помогают убрать шум и повысить качество репортов и PR.

12:21
@SilentImp @jsunderhood @mourner Compound let, const, генераторы, get / set - и функция не оптимизируется в v8. И это только начало :)

Но ES6 без транспайлеров сейчас никто и не использует в продакшне. :) Когда начнут, может V8 подтянется

@SilentImp @jsunderhood @mourner Compound let, const, генераторы, get / set - и функция не оптимизируется в v8. И это только начало :)

12:46
@SilentImp @jsunderhood Дерзко вклинюсь, надеюсь @mourner простит :) ES2016 performance в Chrome - от ужасно до омерзительно
12:46
@jsunderhood Это на клиенте. А вот на сервере вполне можно.

Можно, но от проблем перфоманса это не спасает, т.к. тот же V8. Хотя важно это только в боттлнеках.

@jsunderhood Это на клиенте. А вот на сервере вполне можно.

12:50
@jsunderhood +1. Мы тут с koa2 играемся с большим удовольствием на сервере. async/await <3
12:58
@jsunderhood на мат.расчеты/алгоритмы хорошо накладывается какой-то функциональный язык, почему ты пишешь на plain js?

На мат. расчёты — может быть, но насчет алгоритмов спорно. Я пишу на JS, потому что я в нем хорош.

@jsunderhood на мат.расчеты/алгоритмы хорошо накладывается какой-то функциональный язык, почему ты пишешь на plain js?

12:59
More info on WebAssembly: 2ality.com/2015/06/web-as…

WebAssembly Milestone: Experimental Support in Multiple Browsers @luke_wagner
hacks.mozilla.org/2016/03/a-weba… ^ar

13:31
Experimental support for WebAssembly has landed in Chrome, Firefox & a build of Edge v8project.blogspot.co.uk/2016/03/experi… pic.twitter.com/iqm15zPkwE

Вот это очень круто :)

Experimental support for WebAssembly has landed in Chrome, Firefox & a build of Edge v8project.blogspot.co.uk/2016/03/experi… pic.twitter.com/iqm15zPkwE

13:34
@krasivieglaza Очень люблю читать с Киндла, но исходники там часто выходят нечитаемыми, поэтому приходится читать с айпада. @jsunderhood
15:19
@jsunderhood @mourner расскажи, как правильно подойти к pet project, как его не испугаться, и все-таки начать делать и определить цели.

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

@jsunderhood @mourner расскажи, как правильно подойти к pet project, как его не испугаться, и все-таки начать делать и определить цели.

15:20
“Initial Servo+Browser.html Release Planned For June” by @michaellarabel
phoronix.com/scan.php?page=…
16:13
@kotchuprik секреты рендера реакта на PHP припасу для @jsunderhood :D

Для этого стоило бы завести @pornunderhood

@kotchuprik секреты рендера реакта на PHP припасу для @jsunderhood :D

18:59

Chrome-расширение для дебага WebGL-приложений: github.com/3Dparallax/ins…

21:47
Things have changed! MS, Google, Mozilla announce compatible experimental impls of WebAssembly on the same day! :)
hacks.mozilla.org/2016/03/a-weba…
21:48
@jsunderhood возможно у вас есть идеи, как определять правильные координаты учитывая сферическую форму земли ?

Надо выяснить, на какую именно проекцию наносились линии, но скорее всего это en.wikipedia.org/wiki/Web_Merca…

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

23:01

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

@jsunderhood Привет, вопрос может не совсем по адресу. Можно ли обработать данные перед их отрисовкой в @cartoDB на клиенте?

Они рисуют на сервере, и на клиент приходит уже тайловыми картинками.

@jsunderhood Привет, вопрос может не совсем по адресу. Можно ли обработать данные перед их отрисовкой в @cartoDB на клиенте?

8:54
У них там вечно методологии, рамки, правила, стандарты. Им не хватает хаоса (или мне не хватает порядка) @cssunderhood @jsunderhood

Как правильно заметил @Charlag_Khan, степень допустимого хаоса зависит от масштаба проекта.

У них там вечно методологии, рамки, правила, стандарты. Им не хватает хаоса (или мне не хватает порядка) @cssunderhood @jsunderhood

8:55
@twenty @jsunderhood @dan_abramov бесит когда с житхаба отправляют на SO и закрывают ишью. но чем почта лучше SO, потому что вы не одни тут

Отправляют, потому что GitHub issues — место для учета багрепортов, а не для бесплатных консультаций

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

9:43
@nanonymoused @twenty @jsunderhood Ну, классное отношение к тем, кто тратит свои ночи и выходные на то, чтоб помогать другим. Удачи тебе ;-)
9:43
Подробнейший обзор новинок в Chromium 49 и Opera 36 Матиаса Байненса: CSS-переменные, ES6, … dev.opera.com/blog/opera-36/ pic.twitter.com/n9soOX4IfJ
10:25
Some CEO threatened me through GitHub, Skype and e-mail to move back to ArcGIS if I don't immediately implement a feature. Such open source.
10:31
Напоминаем что у нас на @kottans_org скоро стартует JS курс. pic.twitter.com/s9LhRgu84x
15:25
New in @ChromeDevTools: Syntax highlighting for JSX files. pic.twitter.com/FOGKTnhrWS
17:04
И вот еще вопрос: на каком уровне frontend-разработчик должен знать backend? Наверное это к @jsunderhood

Сейчас грань между frontend и backend всё больше размывается. Думаю, через несколько лет большинство будет fullstack

И вот еще вопрос: на каком уровне frontend-разработчик должен знать backend? Наверное это к @jsunderhood

17:16

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

@jsunderhood где играешь в Го? Какой дан или кю?:)

9k на online-go.com (самый лучший сервер — HTML5, mobile-friendly, дружелюбное комьюнити)

@jsunderhood где играешь в Го? Какой дан или кю?:)

9:02
@jsunderhood А можете что-нибудь посоветовать для обучения го? Играют ли на этом сервере новички?

Конечно! Лично я свою первую игру сыграл там же :) online-go.com/learn-to-play-…

@jsunderhood А можете что-нибудь посоветовать для обучения го? Играют ли на этом сервере новички?

9:22

Еще есть отличный интерактивный туториал тут: playgo.to/iwtg/russian/

9:22

Одна из моих лучших JS-библиотек — Earcut, для быстрой триангуляции полигонов. Незаменима во многих WebGL apps github.com/mapbox/earcut

9:26

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

9:29

После успешного применения в Web мы портировали ее на C++11 для своего нативного WebGL-рендерера github.com/mapbox/earcut.…

9:30

Для получения векторных данных в очень компактном бинарном виде мы используем формат Protocol Buffers.

9:38

Для него мы написали очень быстрый енкодер/декодер — github.com/mapbox/pbf. Существенно быстрее чем JSON.stringify/parse

9:39

Кроме быстроты и компактности, одно из преимуществ — можно моментально пересылать данные между главным тредом и воркерами как ArrayBuffer

9:40

Еще одно преимущество pbf — возможность lazy decoding (когда можно пропускать или откладывать декодирование части данных)

9:42
@jsunderhood А почему не используете просто свое бинарное представление? Так бы еще и оверхед на передачу дескрипторов убрался.

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

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

10:52
@jsunderhood Да есть, из-за спецификации которая заставляет слать описания и типы полей в каждом сообщении. Особенно если они маленькие.

Ты в любом случае добавлял бы описательные байты в бинарном формате с нефиксированными вложенными данными

@jsunderhood Да есть, из-за спецификации которая заставляет слать описания и типы полей в каждом сообщении. Особенно если они маленькие.

11:17

И большая часть размера — в геометрии, которая в данном случае запакована очень компактно (packed varint)

11:18

Кроме этого есть другие преимущества — с форматом очень просто работать, легко делается версионность, он распространен

11:19
An awesome long-read from @holman about smth important we *should* have a talk about: Firing People zachholman.com/talk/firing-pe…

Просто жесть, а не история... Что-то в последнее время очень много историй от известных людей о проблемах в GitHub

An awesome long-read from @holman about smth important we *should* have a talk about: Firing People zachholman.com/talk/firing-pe…

11:41
Dev Tips: #DevTools: Use the animation recorder to record transitions and animations: umaar.com/dev-tips/97-an… pic.twitter.com/wdJg20ERGv
13:35
К вопросу о том, почему наши курсы бесплатные. @kottans_org pic.twitter.com/LPZPpzsXRj
13:36

Node 5.9.0 released nodejs.org/en/blog/releas…

15:24
Activity in node.js grew 27% year-on-year on SO, but React blew up: over 300% growth! We're seeing this at npm, too. pic.twitter.com/BEvDU9FmRx
23:13

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

На фоне громадного количества багов и проблем производительности в NPM 3, очень многообещающе выглядит github.com/alexanderGugel…

10:13

Работает в десятки (!) раз быстрее, просто поразительно. И избегает большинства проблем NPM засчет архитектуры.

10:14

Пятница — последняя возможность задать мне кучу вопросов и получить ответы (на выходных много оффлайновых дел). Налетай :)

10:15
@jsunderhood ок. Ну вот сотенку * на github получили. Как получить 1000? :D

Если все мои предыдущие советы выполнили и проект презентабелен, пора писать в тематические бложики и JS-рассылки :)

@jsunderhood ок. Ну вот сотенку * на github получили. Как получить 1000? :D

10:26
@jsunderhood как я понял, pnpm и ied не поддерживают установку с github, поэтому пока что useless.

Ну, это дело времени. :)

@jsunderhood как я понял, pnpm и ied не поддерживают установку с github, поэтому пока что useless.

10:28
@jsunderhood Спасибо! Второй вопрос: как найти/привлечь других людей, которые могут помочь с проектом?

Если проект полезен, люди сами придут помогать. Когда кто-то репортит баг, ненавязчиво предлагайте сделать PR :)

@jsunderhood Спасибо! Второй вопрос: как найти/привлечь других людей, которые могут помочь с проектом?

10:43

Часто люди втягиваются, делая незначительные фиксы, а потом увлекаются и начинают контрибьютить активнее :)

10:44
Excellent post from @demishassabis about what Google learned from the AlphaGo match.

googleblog.blogspot.com/2016/03/what-w…

10:44

Когда вы теряетесь, пытаясь понять, о чем идет речь на enterprise-сайте, используйте мою библиотеку github.com/mourner/bullsh…

10:48
@jsunderhood В некоторых проектах это на удивление хорошо работает. В некоторых не работает вообще никак. @dcromster

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

@jsunderhood В некоторых проектах это на удивление хорошо работает. В некоторых не работает вообще никак. @dcromster

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

Вот это правда. В Mapbox мы как правило стараемся опенсорсить модули/библиотеки, а продукты оставляем приватными.

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

11:10

Для продуктовых репозиториев часто имеет смысл отключать issues

11:12
Интересные мысли об отключении ишьюсов на Гитхабе: gist.github.com/ryanflorence/8…
11:13
@jsunderhood как найти работу в опенсорс?

Делать много качественных контрибьюшнов. Когда есть что показать, рассылать резюме в open-source-компании :)

@jsunderhood как найти работу в опенсорс?

11:15
@jsunderhood подождем. Может и npm одумается к тому времени. :) Сейчас средний проект 1-3мин ставится через npm :/

Последние 6 месяцев команда NPM работает над тем, чтобы заставить тесты работать под Windows :) Ждать придется долго

@jsunderhood подождем. Может и npm одумается к тому времени. :) Сейчас средний проект 1-3мин ставится через npm :/

11:16
@jsunderhood Я навязчиво пишу github.com/istarkov/babel… что я приму PR ;-) чем как бы намекаю что сам делать не буду, помогает

Я тоже так часто делаю, когда чувствую что другие справятся без меня :)

@jsunderhood Я навязчиво пишу github.com/istarkov/babel… что я приму PR ;-) чем как бы намекаю что сам делать не буду, помогает

11:18

У нас в Mapbox политика "open source by default". Написал что-то полезное — можно не спрашивать, а сразу оформлять модуль на GitHub.

11:44

На GitHub у нас уже 532 публичных репозитория. :) github.com/mapbox/

11:45
@jsunderhood будешь ли в ближайшее время выступать на конференциях?

Собираюсь в Бонн на 2016.foss4g.org. Еще хочется на @fronttrends — надеюсь, примут доклад :)

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

12:18
Node.js ES2015 Support @williamkapke
[Kangax’s compat-table applied only to Node.js]
node.green ^ar
12:37
@jsunderhood Как вы в этом ориентируетесь? Есть какая-то база знаний про эти ваши репозитории?

Репозитории хорошо между собой перелинкованы, иногда есть мета-репозитории, как этот github.com/mapbox/mapbox-…

@jsunderhood Как вы в этом ориентируетесь? Есть какая-то база знаний про эти ваши репозитории?

13:21
I’m sorry for dropping the ball in my email and DM game. I’m much less responsive than a month ago. I use that time to work on React!

Популярные open-source-разработчики часто чувствуют вину за то, что не могут всем помочь и ответить. Желающих много.

I’m sorry for dropping the ball in my email and DM game. I’m much less responsive than a month ago. I use that time to work on React!

13:55

Приходится учиться архивировать многие письма и сообщения без ответа, но это единственная возможность успевать работать. @dan_abramov

13:56
Есть у опенсорса беда — авторы не ведут чейнджлог. @jsunderhood pic.twitter.com/Tg2ifyns98

Кстати, очень удобно вести Changelog в GitHub releases. Tags -> Edit release notes, или "Draft a new release"

Есть у опенсорса беда — авторы не ведут чейнджлог. @jsunderhood pic.twitter.com/Tg2ifyns98

14:46

На правах пятницы, музыкальная пауза! Живое выступление, я тут по центру с акустикой youtube.com/watch?v=eAgGlP… (для любителей пост-рока)

14:54
@jsunderhood может ли излечиться разработчик от stackoverflow-driven development, если попадает в правильную среду? (и может ли он попасть))

Может, но только в том случае, если хочет.

@jsunderhood может ли излечиться разработчик от stackoverflow-driven development, если попадает в правильную среду? (и может ли он попасть))

15:46
Excess XSS: excess-xss.com Level-up frontend security skills with a detailed guide on cross-site scripting pic.twitter.com/fLTtoqIGzB
19:38
Our new weekly blog on web tooling issues:

✅ Service Workers
✅ Progressive Web Apps
✅ RAIL on 3G
✅ ES2015
✅ Sass

medium.com/@addyosmani/is…

19:47

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

Всем хорошего завершения выходных! Есть еще ко мне вопросы перед тем, как закончится неделя?

17:13
Эта неделя была эталоном противоположности в @jsunderhood и @cssunderhood
18:15

Спасибо всем, было приятно пообщаться! С вами был @mourner. До встречи! pic.twitter.com/nzqP0toO2F

18:20

github.com

other