Сергей Рубанов

Сергей Рубанов

Темы
Неделя
Feb 22, 2021 → Feb 28, 2021

Архив недели @chicoxyzzy-2

Понедельник


Привет. Я Серёжа @chicoxyzzy. Я помогаю @TC39 в качестве приглашённого эксперта, помогаю организовывать @moscowjs и @beerjs_moscow, веду телеграм канал t.me/webnya вместе с @rdvornov и контрибьючу в разный опенсорс от React до JavaScriptCore. Эту неделю я с вами.

@jsunderhood @chicoxyzzy @TC39 @moscowjs @beerjs_moscow @rdvornov А еще Серж знает очень много про WebAssembly и вклад в JavaScriptCore как раз касался этой технологии =)
Да, про это тоже обязательно расскажу :) twitter.com/MaxGraey/statu…

Первые деньги программирование начало мне приносить в универе, делал какие-то сайтики, что-то там php ковырял, cmsки всякие, в общем, ничего интересного. Гораздо интереснее было делать курсовые половине группы на Common Lisp и Prolog.

Очень мало поработал в провинциальной веб студии, где также фигачил какой-то PHP и ActionScript. Удовлетворения эта работа абсолютно не приносила, поэтому я быстренько оттуда свалил и стал ждать пока какая-нибудь работа сама меня найдет.

Работа сама меня нашла — устроился в аутсорсный контактный центр, где делал систему, объединяющую ПО для телефонии, UI со скриптами для операторов и отчётность / статистику. Какое-то время я там был единственным разработчиком, поэтому использовал любые технологии, которые хотел

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

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

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

В Москве я успел поделать систему контекстной рекламы (кстати, интересная сфера со своими челленджами), которая потом оказалась не нужна и проект был закрыт, а затем вообще пришёл Ростелеком и выкупил основной проект той компании.

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

Веб технологии оказались самым удачным способом отображать UI для оператора, к тому же не надо устанавливать такой UI на каждую операторскую машину и обновлять его можно очень удобно и всем сразу.
Тогда из-за некоторых ограничений приходилось использовать IE, но к тому моменту Google разработали свой Chrome Frame, который мы смогли раскатать на все операторские компы. Кто-нибудь помнит вообще эту штуку? :) twitter.com/jsunderhood/st…

@jsunderhood Common Lisp 🤮 Prolog прям няшка.
Пролог — это любовь. Но коммон лисп мне тоже нравится до сих пор. Из-за любви к нему потом и ClojureScript юзал, пока не осознал, что никто из коллег этот код трогать не может, а иногда хотелось провести отпуск без срочных просьб поправить что-то, что можешь поправить только ты twitter.com/MrFlashAccount…

К тому же, если не писать на лиспах больше года, то потом ты и сам в своём коде можешь не разбраться (тру стори). В общем, эксперименты с ClojureScript потом вылились в переписывание на JavaScript и TypeScript, и с тех пор к лиспам пока не возвращался.

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

В общем, с уходом из той компании, я попробовал поработать в одном жёлтом банке, но ушёл до завершения испытательного срока. Как-то совсем мне не понравились ни задачи, ни атмосфера, а еще и, как оказалось, работать надо на винде. НА ВИНДЕ БЕЗ ЮНИКС КОНСОЛИ!1

Короче забрал документы и продолжил неспешные поиски работы.

🔥Тред (@chicoxyzzy-2)
@jsunderhood @chicoxyzzy @TC39 @moscowjs @beerjs_moscow @rdvornov Почему этот код: var obj = {p: 0}; var prop = {toString: function() {console.log('log'); }}; obj[prop]++ Выводит два лога в хроме и один в файрфоксе?
Скорее всего ошибка или особенность работы консоли Chrome, это надо смотреть внимательнее. Кстати, лучше всего прогонять примеры сразу через github.com/bterlson/eshos… во всех движках чтобы находить различия имплементаций в них. twitter.com/Lightgazer/sta…

Если такие различия обнаружены, то это или баг какого-либо движка, или недостаточная точность спецификации, допускающая разночтения. В обоих случаях лучше зарепортить о проблеме, если такая проблема еще не заведена в трекерах браузеров или на гитхабе спецификации ECMAScript

Следующий этап карьеры и коммьюнити-движух для меня стал определяющим, поэтому даже начну новый тред 🙂 Во время поиска работы я пересмотрел огромное количество вакансий, но почти все они казались какими-то совсем неинтересными. Но одна меня очень сильно заинтересовала.

Там было очень расплывчато, но очень интересно написано, что нужно будет заниматься написанием некоего SDK для потокового стриминга видео. На собеседовании мой будущий руководитель скажет, что это как бы и не фронт, и не бэк, что немного озадачило меня, но стало ещё интереснее.

Тогда только начал набирать популярность React, но уже тогда было понятно, что сфера применения подхода гораздо шире. Уже в 2013 существовали кастомны разные рендереры для реакта, например в canvas (и вроде даже pinterest его использовал некоторое время?).

Нашим продуктом была платформа для видео стриминга и приложений поверх него. Разные команды делали SDK для разных языков программирования, моя — для JavaScript. Но JavaScrip этот запускался не в браузере или Node.js, а в отдельном JS движке, который был приделан к рендереру.

Так как нет ничего кроме JS-движка, то выходит, что HTML и CSS тоже нет. Как же тогда сделать разработку приложений на таком SDK близкой и понятной фронтенд-разработчику? У нас были только биндинги из JS в рендер-движок, чтобы рисовать примитивы — фигуры, медиа контент и текст

Императивно писать это все, конечно, жутко неудобно. Но вспоминаем про кастомные рендереры Реакта. JSX — это почти HTML и описывать интерфейсы в нём довольно удобно. Отлично. Но как перевести JSX в пиксели в нашем рендер-движке? Нужны системы лейаута.

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

Если Вы заметили сходство с React Native, то да, так и есть, очень похоже :) Кстати, отмечу, что это 2013 год, а публичный релиз React Native состоится только в 2015. И даже Flux еще не был анонсирован, и каждый по-своему реализовывал работу с состоянием реакт приложений.

Итак, про CSS. На самом деле это забавно, но я не умею верстать. Иногда приходится, но делаю я это крайне отвратительно и гуглю каждый раз когда надо отцентрировать div. Но ирония в том, что я частично реализовал спецификации CSS, чтобы другие могли на этом верстать.

Да, мы взяли не сам реакт, т.к. там было бы много лишнего, а у нас сильные ограничения по объему и памяти, а также из-за мутной лицензии, которая была тогда у реакта (а точнее мутный файлик PATENT, который годы спустя будет удалён из репозитория и лицензия станет более свободной)

В общем, это был такой скорее Preact. Получилось очень здорово, и разработка приложений с таким SDK практически не отличалась от разработки в настоящем браузере, даже хот-релод можно реализовать! Но можно сделать ещё лучше.

Мы можем при разработке открыть видео поток в браузере, но это ведь не настоящий DOM, и инструменты разработки браузера никак не помогают, а консоль не связана со средой исполнения. Но ведь их можно связать! У хромиумов ведь есть DevTools протокол!

В качестве JS-движка изначально использовался SpiderMonkey, у которого, на мой взгляд, биндинги к хосту реализованы проще, чем у всех остальных, да и документированы лучше всех. Но V8 тогда сильно выигрывал в производительности, а также нам хочется девтулс протокол

Миграция со SpiderMonkey в V8 была непростой, но и делалась, к счастью не мной 😄. Надо сказать, что у V8 биндинги могут просто ломаться в каждой версии, и потом не факт что можно будет просто взять и обновить.

Так как жить хочется интересно, то забацали свой сервер для связи консоли и хоста по CDP на эрланге, а заодно что-то там зафигачили на Go и Rust. Добавим к этому готовый тулинг, кодогенерацию, готовые различные компоненты на разные случаи жизни и получаем офигенную платформу.

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

На этой работе требовалось много смотреть вокруг, анализировать, рисёчить, а с этим у меня как-то всегда получалось. Я читаю огромное количество всяких источников и зачитываю до дыр гитхаб, поэтому могу узнать что-то важное быстро.

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

В общем, как так и завертелось с публичными выступлениями (которые, я, кстати, вообще-то не люблю) и всякими там подкастами. У меня тут есть список, если Вам вдруг интересно github.com/chicoxyzzy/pub…

Ну и можно сказать, что t.me/webnya также потом зародилась для того, чтобы не каждому коллеге отдельно в курилке что-то рассказывать, а всем желающим сразу.

В 2014 случился геополитический конфликт, который, привел к оттоку иностранных инвестров, и компания постепенно загнулась. Было грустненько. До сих пор считаю самой своей интересной работой на данный момент. Но верю, что впереди будет что-то еще интереснее!

Я потом долго листал вакансии и дичайше унывал, потому что все они были ну просто ацтой. Ничего интересного. Совсем. Моя бывшая коллега по той работе Аня настойчиво просила меня пообщаться с ребятами из Exante по поводу вакансии, но мне абсолютно не нравилось ее описание.

После очередных Аниных уговоров, я подумал, что ничего же и не потеряю, и согласился. После это общения я поменял свое мнение о вакансии и в итоге устроился туда.Так я попал в финтех, высокие нагрузки на фронте, блокчейны и всякое такое.

Было очень круто, и я проработал там почти 5 лет. Кстати, там же до сих пор работает Оля Алексашенко из @webstandards_ru

За это же время я объездил невероятное количество конференций в разных странах (об этом поговорим в субботу), немного выступал сам, стал организовывать BeerJS (об этом в четверг), наконтрибьютил куда попало, получил приглашение в команду Babel, стал приглашенным экспертом TC39

Всё это произошло так быстро и неожиданное, что я как-будто даже не заметил. Раз — и куча каких-то активностей и дел вне работы. Меня часто спрашивают как это все случилось, но я не знаю как отвечать, поэтому всегда отвечаю по-разному. В этот раз отвечу так — повлияла одержимость

То есть я действительно одержим тем, что делаю, и получаю огромное удовольствие от того, что трачу огромную часть своего свободного времени на исследования того, что мне нравится — открытые стандарты, веб, браузеры, JS-движки, WebAssembly. И всё это не приносит денег. Вообще :)

О стандартах и всём таком поговорим в среду. А пока закончу рассказ о себе. Сейчас я работаю с замечательными @icelabaratory и @IAmTrySound (а еще там немного поработала не менее замечательная @zmoki). Надеюсь вы об этих ребятах слышали и подписаны на них.

My 2021 personal goals: - contribute to browser engines - learn more system programming - be more involved in standards bodies - practice English - find a dream job (work from anywhere, browsers, standards, privacy, open web) - get back to music production - more community work
Я очень надеюсь, что моя следующая работа будет больше про тулинг, d2d, внутренности браузеров или что-то такое интересное. Даже поставил себе такую цель на 2021. twitter.com/chicoxyzzy/sta… Пока еще многому нужно учиться, но думаю, что какие-то (низкие) шансы выполнить эту цель есть

Как-то так. Не знаю было ли Вам интересно, как-то все молчат :) Если что-то интересно, то спрашивайте! А вот мой черновик с темами на неделю: пн -интро вт - опенсорс ср - стандарты чт - коммьюнити пт - пиво сб - путешествия и конференции вс - О чем бы поговорить в воскресенье?

Иногда у меня спрашивают как я всё успеваю — и поработать, и попутешествовать, и спеку поправить, и еще где-то код потрогать, и на выезд за любимую команду сгонять. Нужно отказать от личной жизни и сна
notion image

Шутка. На самом деле я просто ничего и не успеваю.

Следующий этап карьеры и коммьюнити-движух для меня стал определяющим, поэтому даже начну новый тред 🙂 Во время поиска работы я пересмотрел огромное количество вакансий, но почти все они казались какими-то совсем неинтересными. Но одна меня очень сильно заинтересовала.
О, кстати, насчёт платформы с первой работы из этого треда twitter.com/jsunderhood/st… Тут недавно вышел @PodlodkaPodcast c @ak_239. Там в Netflix тоже очень интересно, и, кажется нечто похожее.

О, кстати, насчёт платформы с первой работы из этого треда twitter.com/jsunderhood/st… Тут недавно вышел @PodlodkaPodcast c @ak_239. Там в Netflix тоже очень интересно, и, кажется нечто похожее.
упс, вот ссылка) podlodka.io/204 twitter.com/jsunderhood/st…

Кстати, я уже вёл @jsunderhood ранее. Вот в 2016 jsunderhood.ru/chicoxyzzy/ Ещё было летом 2019 (это была неделя когда я первый раз попал на пленарное заседание TC39 в Берлине), но на сайте андерхуда чего-то нет

Пока что не придумал о чем рассказать сегодня, а вы вопросов не задаете. Вот рандомная новость: на ближайшем пленарном заседании TC39 будем обсуждать добавление алиаса Promise.anySettled для Promise.race. Мне там только пару правок сделать еще и тесты github.com/tc39/ecma262/p…

Вот текущая повестка на мартовскую встречу: github.com/tc39/agendas/b… Это будет первая короткая (двухдневная) встреча комитета. С этого года их 8 вместо прежних 6. 4 встречи по 4 дня и 4 по 2 дня. Ранее все встречи были по 3 дня.

У top-level await большие шансы попасть на stage 4, но я больше жду Temporal на stage 3 и появления его в браузерах. Кстати, один из чемпионов Temporal @ryzokuken также вёл этот аккаунт jsunderhood.ru/ryzokuken/

@jsunderhood Сережа, ты не рассказал о своем никнейме и о том, как правильно его читать
chicoxyzzy состоит из 2 частей — Чико (так еще со школы меня зовут, чаще даже просто Чи) и xyzzy, волшебное слово-пустышка en.wikipedia.org/wiki/Xyzzy_(co… Очевидно Chico везде было позанято, поэтому пришлось добавить вторую часть twitter.com/Brutallo/statu…

Никнейм жутко неудачный, но у меня вообще с неймингом иногда проблемы. Например, канал Вебня долгое время назывался Juliarderity (читается как Хулиардерити), а еще я писал 8бит под псевдонимом 0xBBninja.

А как читать chicoxyzzy я не знаю. Можно просто Чико. Если очень хочется, то Чикозиззи или Чикоксиззи. Можно вообще не читать ¯_(ツ)_/¯

просто разные факты обо мне: - мне 34 года - попробовал около 800 уникальных пив за 2020 год - встал на скейт в 27 лет - изучил практически всю Европу, а в Азии вообще не был - работаю удалённо с 2015 года - никогда не работал джуном или миддлом - любимый браузер — Safari

Вторник


Сегодняшняя тема — опенсорс. И о том, как сделать первый коммит, и о том, как правильно зарепортить проблему и вообще общаться с мейнтейнерами. Наверное покажу что-нибудь на своем примере или примере друзей из мира опенсорса, попробую добавить мотивации для самообразования.

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

@jsunderhood Интересно было бы почитать про твой опыт работы с WebKit
Что ж, с него и начну тогда, хотя это и самое новое моё увлечение. На самом деле я хотел оптимизировать удаление элементов списка в истории и некоторых других частях интерфейса, но всё вышло по-другому :) twitter.com/myshov/status/…

Склонировав репозиторий, я всё равно полез в JavaScriptCore и попытался для начала собрать отдельно его, не собирая весь WebKit. Поймал ошибку компиляции. Ошибка была связана с тем, что отсутствовала библиотека ICU. Я уже сидел на бете Big Sur для разработчиков, так что...

...предположил, что ошибка связана с этим. И действительно, ICU (и некоторые другие либы) стали теперь tbd вместо dylib и были перенесены в другое место. Ну и я починил cmake, чтобы собиралось как на Big Sur, так и на предыдущих версия macOS. github.com/WebKit/WebKit/…

Как видно, патч достаточно простой, и я смог по ошибке компиляции догадаться в чём может быть проблема, проверить ченжлог Big Sur, открыл документацию по cmake и внёс нужные изменения. Я убедился, что и полный WebKit компилируется, но отправился дальше изучать файлы сборки JSC

Попробовав что-то поменять и позапускать тесты, я уже забыл зачем изначально пришёл (оптимизировать один кейс в UI) и начал изучасть исходники JS-движка. Потом задумался, что бы такого попробовать реализовать, чтобы было несложно, но в целом полезно.

Возможно стоило бы взять какой-то из падающих тестов WPT или ecma262 и попробовать пофиксить его (что я и рекомендую новичкам), но я не мог перестать думать о директории wasm и решил, что хочу реализовать какой-нибудь WebAssembly пропозал.

К тому же, я участвую в созвонах W3C WebAssembly CG с самого зарождения, внимательно слежу за всем, что там происходит, мейнтейню репозиторий с пропозалами github.com/WebAssembly/pr…, вносил некоторые правки в спеку, улучшал загрузчик wasm в Kotlin Native и тд, и тп.

В чате t.me/webassembly_ru я поинтересовался у @MaxGraey (AssemblyScript core team) какие фичи им хотелось бы использовать, но эти фичи не реализованы в JSC. Макс сказал, что было бы круто иметь Non-trapping float-to-int conversions. github.com/WebAssembly/no…

Этот пропозал уже почти год как вмержен в спеку, но пока не был реализован в JSC. Перед тем, как добавить этот пропозал, надо было обновить тесты. В некоторых тестах используется JavaScript порт wabt (github.com/WebAssembly/wa…), который пришлось обновить. github.com/WebKit/WebKit/…

wabt — это целый тулчейн для работы с WebAssembly, в данном случае использовался генератор текстового формата WebAssembly в бинарный — wat2wasm. Обновление потребовалось так как в старой версии еще не было поддержки нужных опкодов.

Также генерация wasm стала асинхронной, поэтому потребовалось обновить и некоторые старые тесты. По пути, изучая исходники и сверяясь со спецификацией wasm, я заметил, что опкоды двух операций из другого пропозала, который еще под флагом, и поправил их github.com/WebKit/WebKit/…

Теперь можно было вернуться к Non-trapping float-to-int. К счастью, есть общие тесты для разных фич WebAssembly. Первым делом надо было апнуть их скриптом, который я нашел рядом в исходниках и добавить комментарии о незаимплеменченных фичах. github.com/WebKit/WebKit/…

Через некоторое время я осознал, что для реализации выбранного пропозала нужно обновить парсер wasm. Те операции, которые я должен был реализовать, имеют коды от 0xFC00 до 0xFC07, а там уже были реализованы опкоды от 0xFC08 и выше, для другой группы операций.

Все занятые wasm опкоды можно посмотреть в удобной табличке вот тут pengowray.github.io/wasm-ops/ Такие изменения в парсере потребовали бы достаточно значительного рефакторинга, так что это мне показалось слишком сложной задачей для новичка как я, который только знакомится с кодобазой

@jsunderhood Интересно было бы почитать о том, как предложить идею для пропозала, найти чемпиона и т.д.
Про это планирую писать завтра :) twitter.com/dima_kanatniko…

Взглянув на webassembly.org/roadmap/, я увидел, что есть пропозал полегче, который также еще не реализован — Sign-extension operators. github.com/WebAssembly/sp… У них опкоды всего один байт и всего таких операций меньше! Выглядело прям как то, что нужно для начала!

JavaScriptCore состоит из интерпретатора LLInt и компиляторы Baseline JIT, DFG JIT, FTL JIT, которые используют много промежуточных представлений. Очень длинная и подробная статья об этом есть в блоге WebKit webkit.org/blog/10308/spe…

В общем, пришлось немного посидеть поизучать всё это дело, а также вспоминать C++, Ruby, почитать доки по инструкциям процессоров x86, x86_64 и arm64, но все получилось. github.com/WebKit/WebKit/… github.com/WebKit/WebKit/…

После некоторого перерыва я мог вернуться к Non-trapping float-to-int conversions, и даже прислал полурабочий патч с dummy имплементацией одной из операций. Тут хочется сказать спасибо @dbezhetskov, который помог разобраться с парсингом!

Кстати, сам Дмитрий в это время реализовал в JavaScriptCore пропозалы Bulk memory operations и Reference Types! Он тоже вел этот аккаунт, вот его неделя jsunderhood.ru/dbezhetskov/

К сожалению, я потом так и не успел довести non-trapping float-to-int до конца, и ребята из Apple доделали его сами, указав меня в дескрипшне коммита. github.com/WebKit/WebKit/…

Теперь надо бы придумать себе новую задачку, а также доделать оптимизацию, которая ускорит реализованные мной sign-extension operations и некоторые другие кейсы, в том числе при исполнении JavaScript bugs.webkit.org/show_bug.cgi?i…

Скорее всего я продолжу ковырять WebAssembly, постепенно поглядывая и на JavaScript. И чёрт возьми, надо всё же и патч на оптимизацию удаления нескольких элементов пачкой сделать! То, ради чего я вообще склонировал репозиторий изначально 😅 На этом про Вебкит всё :) Вопросы?

К сожалению, я потом так и не успел довести non-trapping float-to-int до конца, и ребята из Apple доделали его сами, указав меня в дескрипшне коммита. github.com/WebKit/WebKit/…
Ой, как-то случайно оборвал тред. Продолжение тут twitter.com/jsunderhood/st…

🔥Тред (@chicoxyzzy-2)
А сейчас очень важная тема: как правильно действовать, если Вы обнаружили баг в опенсорс проекте.

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

Пожалуйста, никогда не делайте так. Это демотивирует мейнтейнеров, которые возможно просто не использовали свой проект так, как используете его Вы, и изначально такое использование не подразумевалось. А если проект пишется энтузиастами и не приносит денег, то это еще более грубо.

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

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

К тому же, если Вы найдёте заведённый баг, то возможно и найдёте какое-то, может быть временное, решение проблемы от людей, которые также столкнулись с ней. Возможно Вы увидите, что решение проблемы тривиально, и Вы сами сможете предложить решение.

Кажется, именно так многие делают свои первые коммиты в опенсорс проекты. Это и мой случай тоже. Независимо от того, существует ли заведённый баг в трекере, постарайтесь сделать минимальный пример, который этот баг воспроизводит. В идеале сразу на каком-нибудь онлайн REPL.

Обязательно стоит приложить любую информацию, которая может быть полезна — версия браузера, ОС, последовательность действий. Всё то, чего Вы сами ожидаете, когда Вам сообщают о баге в ПО, которое пишете Вы.

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

Постоянно помните про эмпатию, уважайте чужой труд и предлагайте свою помощь, если можете её оказать.

🔥Тред (@chicoxyzzy-2)
Хорошее замечание. Но на самом деле такие проекты так или иначе есть в Вашем дереве зависимостей, без этого невозможно. Действительно, стратегически часто лучше выбрать опенсорс, поддерживаемый компаниями, если такой выбор есть. А еще можно убедить свою компанию поддержать проект twitter.com/unetwarm/statu…

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

@jsunderhood Что делать когда баг висит уже год, есть открытый ПР который фиксит багу, тоже уже год, и мейнтейнер даже не отметил что прочитал? github.com/benjamn/ast-ty…
Вот здесь я бы попробовал ненавязчиво связаться с автором, думаю, что спустя год можно и сделать friendly ping =) Можно сразу спросить не видит ли он каких-то проблем, которые стоит решить перед тем, как можно будет принять патч. twitter.com/gavrix/status/…

Если Вам нравится какой-то проект, Вы используете его и уже имеете какую-то экспертизу, то это уже полдела на пути к контрибьютингу. Я использовал Babel еще со времен, когда он назывался 6to5 и до времени зарождения preset-env. Это, кстати, просто идеальный коммьюнити проект.

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

Не бойтесь спрашивать помощи, если Вам что-то не понятно. Это всегда полезно и касается любых проектов. В том же WebKit мне помогало очень много людей из Apple, Sony, Igalia, а также других контрибьюторов. Взаимодействие с людьми важно как в опенсорсе, так и в рабочем процессе.

Помогая в Babel, я через какое-то время я в итоге получил приглашение в организацию, хотя так сложилось, что позже я начал использовать TypeScript, поэтому от Babel немного отошел. Сейчас мы используем его на работе (на текущих проектах Flow), но интересы немного сместились =)

Помощь проекту включает не только код. Вы также можете помогать улучшать документацию, создавать issues, помогать другим. Проактивность поможет понимать проект лучше, учиться объяснять сложные вещи, улучшает Вашу карму. А Ваш вклад будет оценен текущими или будущим работодателем

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

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

Если Вам вдруг зачем-нибудь нужен мой GitHub, то вот он github.com/chicoxyzzy

🔥Тред (@chicoxyzzy-2)

Среда


Если Вы присоединились к нам только сегодня, то подключайтесь, эту неделю в андерхуде Серёжа @chicoxyzzy. В понедельник немного рассказал о себе, вчера поговорили об опенсорсе (также рассказал о патчах в движок JavaScriptCore). Сегодня говорим о стандартах, спеках и вот этом всём

Interested in hacking / fixing bugs / adding features to #WebKit, an #OpenSource #browser engine? Now there is a documentation on all the things you need to know! github.com/WebKit/WebKit/…
Теперь есть свежая дока о том, как контрибьютить в WebKit! twitter.com/rniwa_dev/stat…

@jsunderhood Интересно было бы почитать о том, как предложить идею для пропозала, найти чемпиона и т.д.
В первую очередь я бы посоветовал ознакомиться с документацией github.com/tc39/how-we-wo… и существующими пропозалами github.com/tc39/proposals, а также предложениями идей на форуме es.discourse.group. Вообще практически вся работа комитета прозрачна и публична. twitter.com/dima_kanatniko…

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

Если Вы не нашли ничего похожего на Вашу идею, то желательно постараться хорошо её описать. В этом помогут примеры кода, мотивационная часть. Вообще идея может быть оформлена как угодно пока она на stage 0. Для перехода на stage 1 уже понадобится репозиторий на GitHub.

Вы можете попробовать создать такой репозиторий самостоятельно (вот инструкция для создания хорошего описания github.com/tc39/how-we-wo…) или это может сделать за Вас чемпион. Чемпионами могут быть только делегаты TC39, в редких случаях приглашенные эксперты.

У одного пропозала также может быть группа чемпионов. Процесс продвижения пропозала задокументирован в TC39 process document tc39.es/process-docume… Кстати, я делал доклад обо всём этом на @webstandards_ru, вот ссылка на видео: youtu.be/_0psqory6rk?t=…

🔥Тред (@chicoxyzzy-2)
Давайте поговорим о том, какие организации вообще занимаются стандартами в вебе. Мы уже немного поговорили о TC39 (и поговорим ещё). Помимо него из, пожалуй, самых значительных есть W3C — World Wide Web Consortium. Это организация занимается очень многими сферами веб платформы.

Под эгидой W3C разрабатываются стандарты доступности, HTML и DOM (совместно с WHATWG), CSS, интернета вещей, Web Audio, WebRTC, WebGPU, WebAssembly, WebSocket, стримов, SVG, WebAuthn, платежей, Web Components, стораджей и многоих-многих других Web API.

Процесс продвижения фич в W3C в чем-то похож на процесс в TC39, разве что вместо stage там используются степени зрелости спецификаций. W3C Process Document находится вот тут w3.org/2020/Process-2…

В W3C существует несколько разных типов групп — Interest Group, Community Group, Working Group. Ключевые решения о зрелости спецификаций принимаются в WG, после чего должны быть одобрены Technical Architecture Group (TAG).

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

При этом в TC39 решения принимаются на основе консенсуса. То есть для утверждения какого-либо вопроса необходимо, чтобы никто не высказался против. Казалось бы, что это очень сложно, но фактически это отлично работает и позволяет учесть интересы и требования участника.

🔥Тред (@chicoxyzzy-2)
Я пока поработаю, а Вы скажите что ещё Вам интересно о TC39, W3C, ECMA262, ECMA402, WebAssembly, спецификациях или процессах =)

И ещё раз на всякий напомню, что новости об этом всём я публикую в канале t.me/webnya, в чём мне также помогает Рома Дворнов.

@jsunderhood Давай про IETF
Internet Engineering Task Force — это организация, которая занимается созданием разного рода технических документов. Это полностью волонтёрская работа, не требующая платежей для участия (в Ecma и W3C участники — компании, которые платят членский взнос). twitter.com/govorov_n/stat…

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

Сейчас покажу очень секретную штуку, только никому не рассказывайте, хорошо? 🤫 tc39.es/ru/ Дальше — больше... (но это не точно)

@jsunderhood Вам нужна помощь? Какая?
Да, нужна будет помощь с переводами скорее всего! А еще с MDN и может даже просветительской деятельностью) Только прямо сейчас я не могу точно ничего сказать, но подпишу себя на тред, чтобы потом не потерять потенциальных волонтёров. @chicoxyzzy twitter.com/govorov_n/stat…

В Ecma International в основном представлены американские компании, а также в меньшей степени, европейские, японские и китайские. Похожая картина и в W3C. На самом деле печально, что компании из других стран не хотят влиять на развитие и продвижение стандартов.

На самом деле и Ваша компания, и просто лично Вы при должном интересе скорее всего можете участвовать и влиять на процесс стандартизации интересных Вам фич через W3C Community Groups.

Думал рассказать о том, как я писал текст спецификации для Promise.any, но что-то сложно... Вообще для начала надо научиться спецификацию читать. В этом помогут timothygu.me/es-howto/ и v8.dev/blog/understan… v8.dev/blog/understan… v8.dev/blog/understan…

Потом скорее всего потребуется несколько итераций, чтобы привести текст спецификации в более-менее нормальный вид, определить моменты, которые нужно будет обсудить и завести соответствующие issue. Если Вы научитесь читать спецификацию, то писать её также не составит труда.

А вот решение всех спорных моментов и поиск консенсуса — это гораздо более сложная работа. Пока будут нерешённые вопросы, пропозал не продвинется дальше.

Тред о текущем состоянии и ближайшем будущем JavaScript. Уже сейчас известен набор предложений в спецификацию, который в июле стане ES2021: - String.prototype.replaceAll - Promise.any - WeakRefs - Logical Assignment Operators - Numeric separators

Кстати, все они уже реализованы в браузерах (WeakRefs появится в Safari 14.1, который выйдет уже в следующем месяце, а бета его уже доступна сейчас владельцам developer аккаунта Apple). Думаю, что далее стоит ждать Top-level await и трех class features пропозалов в будущем ES2022

@jsunderhood А чего там с pipeline operator происходит? Есть надежды на ближайшие годы?
В этом году вряд ли. Обсуждение будущего этого пропозала запланировано на ближайшее пленарное заседание 9-10 марта. twitter.com/anber_ru/statu…

@jsunderhood Есть идеи, когда они остановятся?
Планов останавливаться нет, впереди еще много работы =) twitter.com/codeninja_ru/s…

@jsunderhood Кстати, может я пропустил, но если собрания онлайн проходят, то может есть стримы для зевак?
Нет, стримов нет, но есть текстовые протоколы, которые публикуются через 2 недели после пленарного заседания вот в этом репозитории: github.com/tc39/notes/tre… twitter.com/anber_ru/statu…

Что касается WebAssembly, то тут тоже все здорово. Вот-вот в спецификацию попадут Bulk Memory Operations и Reference Types, на которых в свою очередь основаны последующие пропозалы. И они уже тоже заимплеменчены во всех браузерах! (в Хроме и Сафари пока под флагом)

В начале прошлой недели на phase 4 (стадия стандартизации) попали SIMD операции фиксированной длины (+ они станут доступны в Chrome 91, который выйдет 25 мая)

@jsunderhood Ещё немного и будет нормальный язык 😛
А чего Вам не хватает сейчас в JavaScript? twitter.com/GrigoryLugovyh…

Четверг


А в Firefox появится скорее всего с версии 89 (18 мая) для x86 и версии 90 для ARM64 (15 июня). Что ж, звучит как челлендж поработать над SIMD в WebKit!

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

У нас новый рекорд! 131 человек провели это утро в кругу фронтендеров. Приходите на последние фронтендерские завтраки на этой неделе joinclubhouse.com/event/xBBWpXG1 pic.twitter.com/EFalA6Ap2n
Тут в клабхаусе, кстати, вот какое-то формируется twitter.com/twenty/status/…

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

Пятница


Вчера так и не нашёл времени поговорить о коммьюнити, но попробую совместить это с сегодняшней пивной темой ;)

Во-первых, надо сразу обозначить что такое коммьюнити. Тут всё просто — это группа людей, объединённых общими интересами. Это может быть JavaScript, спортивная команда, вязание, направление музыки, даже компания выпивох из вашего двора — это тоже коммьюнити.

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

Практически в каждом городе есть такие. Я большую часть времени провожу в Москве, поэтому сначала совсем немного расскажу о своих любимых JS-related коммьюнити тут — MoscowJS и BeerJS Moscow. Если будет хватать времени, то расскажу и о других.

MoscowJS зародился очень-очень давно (первый митап прошел 28 июля 2011 года! подумать только!) и сменил несколько поколений организаторов. Это абсолютно независимое коммьюнити. То есть не подпитывается никакими компаниями и не продвигает интересы компаний.

Начинали его @olegpodsechin и @korenyushkin. Позже эстафету переняли @tenphi @bashmish @flpvsk. Люди, которые уже выступали с докладами, попадали в закрытую гугл группу и при желании могли также оказывать помощь.

Надо сказать, что в этот период MoscowJS начал собирать такое количество человек, которое максимально могла вместить площадка. Если площадка будет на 500 человек, то на митапе будет битком! И еще не всем хватит регистраций!

"We don"t have a curator this week. But hey, there are 136,682 living atomic bomb survivors, also called hibakusha; their average age is over 83." Кстати, @jsunderhood когда нет спикера, почему бы не провести нейронеделю?
Отличная идея! twitter.com/v_hadoocken/st…

Через некоторое время Андрей Саломатин и Миша Башкиров уехали из РФ и почти все организаторские тяготы взвалились на Андрея Яманова. А еще позже надо было что-то предпринимать, потому что Андрей решил отдохнуть.

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

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

Мы уже провели два онлайна про собеседования глазами кандидата — youtube.com/watch?v=-hXPLd… глазами компании — youtube.com/watch?v=ll3aCb… Следующий онлайн планируется 18 марта (тему пока раскрывать не буду (потому я её забыл 😅))

Мы очень ждём возвращения оффлайн встреч. Надеемся что скоро получится к ним вернуться, потому что живое общение на митапах MoscowJS — это всегда отличнейшая атмосфера! Один раз придёте, а потом не заметите как выступите с докладом, а потом вообще раз — и станете организатором!)

Наверняка и в Вашем городе есть ламповые сообщества! Пользуясь случаем, передаю привет всем котикам-организаторам сообществ из Киева, Харькова, Черновцов, Минска, Питера, Нижнего Новгорода, Ростова-на-Дону, Новосибирска, Рязани, Орла, Екатеринбурга, Краснодара и других городов!

Призываю всех ходить на митапы, пробовать выступать с докладами и вливаться в развитие сообществ. Это весело и полезно для профессионального развития!

После завершения пандемии конечно!

🔥Тред (@chicoxyzzy-2)
Ой, а еще забыл отметить @rpominov! 🤦‍♂️ На него тоже подпишитесь!!

🔥Тред (@chicoxyzzy-2)
Ещё одно сообщество, которое я люблю и помогал расширять на другие города и даже чуть-чуть на другие страны — это BeerJS. Не уверен где именно зародилась эта идея, но где-то в штатах. На самом деле форматы встреч разделяются в каждом городе.

Где-то это могут быть полноценные митапы, а где-то просто посиделки и разговоры за пивом. Нам больше подошел последний формат. Когда я решил организовать БирЖС в Москве, внезапно выяснилось, что он уже проводился до этого, просто был не особо публичный.

Я поговорил с этими ребятами, и с тех пор было решено проводить встречи публичные и открытые для всех. Как-то раз на @OdessaJS мы с @mato_chu долго обсуждали BeerJS, и он решил организовать такое сообщество в Киеве. Сообщество вышло невероятно ламповое и душевное.

На паре подкастов и просто в интернетах я давал советы как лучше организовывать BeerJS в своем городе, и потом началось) Вы только посмотрите вот сюда github.com/beerjs!

Через некоторое время мы поняли, что у нас есть просто невероятное количество сообществ из разных городов и стран, и нам не хватает какого-то особенного события, чтобы все могли встретиться. Так @mato_chu придумал @BeerJSSummit!

Я хотел поговорить о конференциях в субботу, но не могу не упомянуть, что это просто самая охрененная конференция, о которой Вы могли мечтать. Такого больше нет нигде. Известные Вам спикеры и неожиданные доклады (или другие перформансы).

Отдельная фишка мероприятия в том, что видеозапись не ведется. То есть Вы можете либо сами поехать и всё увидеть, либо с завистью слушать рассказы того, кто там уже был =) А докладчики более раскованы, потому что записи не попадут в сеть. Короче, это не всё описать в твитах.

К сожалению, в этом году мы не смогли провести BeerJS Summit. И не только из-за пандемии, но и в том числе из-за внутриполитической ситуации в Беларуси. Мы традиционно проводили саммит в Минске. Верим в победу добра, чтобы вернуться! Жыве Беларусь! 🤍❤️🤍

@jsunderhood @olegpodsechin @korenyushkin @tenphi @bashmish @flpvsk За организацию самых первых митапов MoscowJS также отвечали Евгений Кубышин и Валентин Домбровский.
Точно! Спасибо за уточнение! twitter.com/taritsyn/statu…

А еще мы биржсами вместе весело гоняем на конференции! Но про это наверное тоже в субботу.

🔥Тред (@chicoxyzzy-2)
А еще мы биржсами вместе весело гоняем на конференции! Но про это наверное тоже в субботу.
Как-то я даже забыл, что суббота уже завтра) А это также значит, что сегодня пятница. А если так, то пора заводить тред о пиве! 🍺 Дисклеймер: алкоголь вреден для здоровья, и пиво не исключение! Не злоупотребляйте им! twitter.com/jsunderhood/st…

Многие считают, что пиво делится на светлое и темное или на живое и обычное, или на хорошее и порошковое. На самом деле все пиво делится на лагеры (пиво верхового брожения) и эли (пиво низового брожения).

Лагерам требуется более холодная температора и более долгое брожение, а элям температура повыше и брожение покороче. 90% пива в обычных магазинах продуктов — лагеры.

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

Про пивные напитки. Такой термин есть только в РФ, и, вроде бы, в РБ. Нигде больше такого термина нет. Надпись "пивной напиток" не означает, что это что-то хуже, чем если бы было написано "пиво". Иногда даже наоборот.

Просто есть такой нелепый стандарт. Он плох вообще всем. Это такой своеобразный райнхайтсгебот (ru.wikipedia.org/wiki/Райнхайтс…), от которого в Германии до сих пор всякие проблемы у крафтовиков

Цвет пива зависит от многого. Для более классических сортов — от солода и несоложенных материалов. Солод — пророщенные семена злаков — ячменя, пшеницы, ржи. Несоложенные материалы — кукуруза, овёс, рис.

Чем сильнее прожарен солод, тем темнее цвет пива. Если солод нагревать на температурах повыше, то он начнет давать карамельный цвет и вкус (янтарные лагеры, красные ирландские эли), если сжечь, то получится очень темный цвет и копченый вкус (портеры, стауты)

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

@jsunderhood Можно ли назвать Radler(en.wikipedia.org/wiki/Shandy#Ra…) пивным напитком?
Можно) Но тот термин, о котором я говорю — это термин, который требует законодательство. Это ограничения по техническим характеристикам. И соответственно налоги тоже разные. twitter.com/whois42/status…

@jsunderhood Почему именно пиво? Я за то, чтобы посидеть за бутолочкой хорошего портвейна с женой)))
Просто так сложилось, что мне больше нравится пиво) А так можно и портвейшку) twitter.com/front_alex/sta…

Также на цвет могут влиять и другие добавки, например пищевые красители (зеленый, напимер, повсеместно любят добавлять в день св. Патрика) или пюре ягод, фруктов и тд.

Сейчас существует ооочень много сортов пива, и с каждым годом появляются всё новые. Существуют несколько способов классификации стилей и сортов. Самой популярной является классификация от BJCP (Beer Judge Certification Program). Но она не обновлялась аж с 2015 года

Самые модные сорта сейчас — это всякие там мутные IPA, всеразличные кислые эли / берлинервайсы, гозе. Нестареющей классикой являются чешские и немецкие лагеры, всякие бельгийские дикие эли и ламбики.

С IPA вообще забавно. Этот стил стал ответвлением от пейл элей, обычного светлого эля, который традиционно варили в Великобритании. IPA (India Pale Ale) — сильно охмеленная его версия. Считается, что стиль появился для транспортировки британским колониальным войскам в Индию.

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

Но стиль как-то прижился. Более того, позже свою версию его начнут варить американский крафтовики, но уже с добавлением американского хмеля. AIPA (американская IPA, иногда Westcoast IPA) отличается большей хмелевой горечью и не такими выраженными эфирными ароматами.

Позже на восточном побережье (Вермонт, Новая Англия) придумают свою интерпретацию — мутные ипы (aka NE IPA / Hazy IPA), отличающиеся большей плотностью, красивым непрозрачным цветом, большей ароматностью и часто меньшей горечью (иногда нивелирующейся легкой сладостью)

То есть понимаете, да? Заходишь в московский бар и покупаешь там "американский индийский пейл эль в стиле Новой Англии" местной пивоварни. Абсолютно взрывающий мозг набор слов)

Ну и конечно же Russian Imperial Stout тоже изначально никакой не российский, но его делали в Британии для российского императорского двора. Вообще единственный стил пива, придуманный в России — это томатный гозе. Такая кровавая мэри из мира пива.

Шок контент: знаменитое Жигулёвское тоже не придумано в России 😱. Вообще стиль называется венский лагер. А в жигулевское его переименовали большевики, потому что "венский" звучит по-буржуйски)

Вместе с переименованием понизили количество алкоголя и меняли количество и качество ингредиентов, потому что сырья не хватало и вообще. Так рецепт сильно менялся в течение 20 века.

Интересно, что в какой-то момент крепость пива в СССР понизили настолько, что любители выпить предпочитали ему крепкий квас. Оттуда пошло слово "накваситься"

Просят рассказать про бельгийские эли. Честно говоря я не ценитель, но рассказать могу. Почему-то читателей аккаунта больше всего интересуют ламбики, но я потяну время и расскажу про траппистское пиво :)

Монахи трапписты давно славятся своим пивом и только 11 монастырей удостоились чести называть своё пиво траппистским. Звучит круто, и Вы наверняка представили как монахи вручную в каких-нибудь котелках варят какой-то невероятный эль допотопными технологиями.

На самом деле при этих монастырях стоят вааще хайтек заводы с максимальной автоматизацией и отдельным персоналом пивоваров, операторов линии и всем таким. Вот так, никакой тебе романтики

Итак, ламбики. Для приготовления ламбиков используются не специально выведенные штаммы пивных дрожжей, а дикие дрожжи. Это сильно влияет на аромат и вкус (на любителя, скажем так). Бродят ламбики в винных бочках. Процессом брожения такого пива сложно управлять.

В результате присутствует огромное влияние рандома. Никогда нельзя сказать получится ли великолепный утонченный напиток или пиво с запахом и вкусом крысиного помёта. Удачные ламбики ОЧЕНЬ дорого ценятся, а неудачные смешиваются с более удачными — называется гёз (не путать с гозе)

Часто рассказываю прикол про Балтику 7 Экспортное. Очень многие думают, что это типа пиво получше и чтобы отправлять на экспорт в другие страны было не стыдно. Кто бывал в других странах, могли видеть, что если там есть Балтика, то не только 7, но и другие.

А на самом деле слово "Экспортное" — это стиль лагера :) Полное название — дортсмундский экспортный лагер. Оно действительно делалось на экспорт в 19 веке, когда Германии надо было конкурировать с Чехией за экспорт пива в другие страны Европы. Но с тех порт устоялось как стиль

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

Мой Вам совет — когда будете пробовать всякие модные эли, то ни в коем случае не берите солёную и вонючую закуску — рыбу, чипсы, сухарики и прочее. Вы просто перебьёте вкус и аромат и впустую потратите деньги. Лучше заранее почитать какая еда подходит к какому стилю (фудпейринг)

И вообще на самом деле стоит ограничивать себя во всяких снеках с пивом. Как раз эта комбинация приводит к лишнему весу, обезвоживанию организма. И да, пиво обезвоживает! Поэтому пейте воду обязательно! Не стоит пить пиво для утоления жажды, это не так работает.

Так, больше пока не придумал о чём написать. Вот вам список хороших локальных пивоварен (на мой вкус). РФ: Big Village, Cosmic City, FFF, Zagovor, Stamm beer, AF, Sabotage, 4Brewers Украина: Varvar, Rebrew, Volta, Philosopher РБ: Malanka, Valaduta, Midnight Project

🔥Тред (@chicoxyzzy-2)
@jsunderhood Нет, всё наоборот
упс, да, чот я тут перепутал. лагеры - низового, эль верхового! спасибо за внимательность! twitter.com/menetekelvrstr…

Суббота


Доброе утро. Сегодняшняя тема — конференции и путешествия! С 2015 года я посещаю огромное количество конференций в разных странах, поэтому считаю, что у меня есть определённая экспертиза в этом 🤓. Щас поделаю важные дела и вернусь после обеда.

Ну то есть я и до этого посещал конференции, но не в таких количествах 😄

@jsunderhood 🍻 Так как уже суббота, давай про последствия пятницы. Как быстро придти в норму если ты не правильно рассчитал и перебрал
Я тут посоветовать ничего не могу. Мне ооочень редко бывает прям плохо, поэтому призываю на помощь тех, кто разбирается в этом!) А, знаю! Супчик Фо-Бо! twitter.com/irustm/status/…

Воскресенье


ВНЕЗАПНО вночи вхожув тему. Извините, правда раньше не мог, разрывают все дела, ничего не успеваю. Так вот, начну с европейских конференций. Это супер круто. Просто езжайте на конференцию, которая Вам нравится и происходит в ЕС.

Попросите своих работодателей отправить Вас. Хотя бы раз в год Вы ОБЯЗАНЫ съездить на конференцию по реакту, ангуляру или чем Вы там еще занимаетесь. Обязательно нужно ездить на международные коныеренции. Правда.

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

В какой-то степени это круто, но это определенного рода элитизм и исключение. Самое крутое, что может сделать докладчик — это сделать доклад, который заинтересует людей, которые только приходят в профессию.

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

Признать что ты чего-то не знаешь (а тем более, если от тебя такого ожидают) — зашквар и позор. В такой культуре люди пытаются объяснить что-то, чего даже не понимают, лишь бы не опозориться.

Нет ничего позорного в том, что Вы чего-то не знаете. Правда. Если Вы не готовы это признать, то возможно Вы не получите достаточного удовольствия от того, для чего конференции предназначены.

Конференции — это не соревнование в знаниях, а классные знакомства, общение, обмен знаниями.

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

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

Ладно, я что-то слишком заморочился на менталитете и инженерном элитизме. Забудем. Давайте поговорим лучше о приятных вещах!

Так, для начала, я советую всем ездить на конференции в других городах. Или даже на митапы в соседних городах. Ой, тут я должен рассказать про украинский движ! ЭТО ОЧЕНЬ КРУТО

Украинский движ — это прям очень круто. В течение года проходят конференции в разных городах, и все друг друга всегда поддерживают, катаются друг к другу в гости, дружат и помогают. Прям вот в течение года тусовка катается по Украине и рада новичкам. Обожаю.

В России мы биржсной тусовкой тоже катаемся по разным конференциям, но это как-то более спонтанно Кстати, договориться о совместной поездке на конференции можно здесь t.me/beerjs_on_tour

Конфереции в Европе иногда стоят достаточно дорого. Но! Часто Вы можете попроситься волонтёром. Я сам так делал не раз. Так Вы сможете помочь в организации, получить интересный опыт и вообще.

А ещё Вы можете податься с докладом или лайтнинг толком. Когда-нибудь и я перестану стесняться своего английского, чтобы сделать это 😬

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

Ох, очень много хотел рассказать еще о конференциях и путешествиях, но иногда надо спать 😅 Продолжу днём. А еще просили поговорить про будущее джаваскрипта и веба вообще. Об этом тоже поговорим, если не умру от недосыпания.

(Я же уже говорил, что ничего не успеваю?) Ладно, еще попробую перед сном что-то написать. Узнать о будущих конференциях можно тут github.com/tech-conferenc… Спасибо @katyaprigara!

Ой, правильная ссылка вот тут) confs.tech/?topics=javasc…

🔥Тред (@chicoxyzzy-2)
А еще хочется завести тему участия женщин в IT (и не только). Я надеюсь, что читатели андерхуда в основном адекватные люди и тут не начнется срач. Вкратце — всё плохо. И это наша общая вина. Недавно послушал встречу IT Ladies в Clubhouse, и был поражен позицией некоторых мужчин

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

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

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

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

Во многих профессиях сложился такой себе мужской клуб, и это очень плохо. Даже на уровне культуры, и женщинам приходится бороться и доказывать, но "сильный пол" часто не может признать свою мизогинию.

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

Еще борцы за права мужчин часто приводят в пример квоты. Во-первых, квоты хорошо. Разнообразие хорошо. И это важно. Во-вторых, где вы еще эти квоты видели? Кажется квоты на чуваков-задротов еще не закончились ¯_(ツ)_/¯

Но самый пиздец — это возмущения чуваков о том, что есть женские митапы. Это вообще невозможно понять. А еще эти чуваки думают, что их не пустят на эти митапы эфемерные радикальные феминистки. Правда в том, что может и пустят, но потом вас же кто-то должен выпиздеть оттуда за всё

Некоторые даже выдумывают аргументы какие-то, что пришла женщина и сломала коллектив. Что? А может ты сломал своим хейтом? Может быть было бы лучше если бы место было безопасным и гостеприимным для всех?

Тут в комментариях сказали, что норм, что программистов женщин мало, а QA много. Интересно есть ли история как в QA пришел мужчина и сломал коллектив?

В общем, "сильный пол", не тупи и мозг включи. у меня всё

Ой, совсем забыл нетленочку Работодатель: этот неженатый чел 35 лет нам подходит Снова работодатель: это что 35-летняя незамужняя тётка? да ну нафиг

🔥Тред (@chicoxyzzy-2)
Друзья, кажется сегодня буду урывками. Задавайте вопросы по JavaScript и WebAssembly или о чем угодно ещё, на всё постараюсь ответить! Ну и на всякий случай подписывайтесь на мой аккаунт @chicoxyzzy :) Сегодня последний день ведения этого аккаунта в этот раз.

Квоты это пиздец. twitter.com/jsunderhood/st…
Культ бро это пиздец twitter.com/MityaGizatov/s…

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

пойду поем

Что ж, моя неделя в этом аккаунте подошла к концу. В комментариях к этому твиту я соберу главные треды этой недели. Надеюсь было интересно! Ещё раз мой личный аккаунт @chicoxyzzy. Ну и на Вебню подписывайтесь :) t.me/webnya Пока!

Привет. Я Серёжа @chicoxyzzy. Я помогаю @TC39 в качестве приглашённого эксперта, помогаю организовывать @moscowjs и @beerjs_moscow, веду телеграм канал t.me/webnya вместе с @rdvornov и контрибьючу в разный опенсорс от React до JavaScriptCore. Эту неделю я с вами.
Интро и немного о себе twitter.com/jsunderhood/st…

Следующий этап карьеры и коммьюнити-движух для меня стал определяющим, поэтому даже начну новый тред 🙂 Во время поиска работы я пересмотрел огромное количество вакансий, но почти все они казались какими-то совсем неинтересными. Но одна меня очень сильно заинтересовала.
Еще немного о себе twitter.com/jsunderhood/st…

Что ж, с него и начну тогда, хотя это и самое новое моё увлечение. На самом деле я хотел оптимизировать удаление элементов списка в истории и некоторых других частях интерфейса, но всё вышло по-другому :) twitter.com/myshov/status/…
Про контрибьюшны в WebKit twitter.com/jsunderhood/st…

А сейчас очень важная тема: как правильно действовать, если Вы обнаружили баг в опенсорс проекте.
Про опенсорс twitter.com/jsunderhood/st…

Если Вам нравится какой-то проект, Вы используете его и уже имеете какую-то экспертизу, то это уже полдела на пути к контрибьютингу. Я использовал Babel еще со времен, когда он назывался 6to5 и до времени зарождения preset-env. Это, кстати, просто идеальный коммьюнити проект.
Ещё про опенсорс twitter.com/jsunderhood/st…

В первую очередь я бы посоветовал ознакомиться с документацией github.com/tc39/how-we-wo… и существующими пропозалами github.com/tc39/proposals, а также предложениями идей на форуме es.discourse.group. Вообще практически вся работа комитета прозрачна и публична. twitter.com/dima_kanatniko…
Про то, как создать пропозал в ECMAScript и найти чемпиона twitter.com/jsunderhood/st…

Давайте поговорим о том, какие организации вообще занимаются стандартами в вебе. Мы уже немного поговорили о TC39 (и поговорим ещё). Помимо него из, пожалуй, самых значительных есть W3C — World Wide Web Consortium. Это организация занимается очень многими сферами веб платформы.
Про организации, которые занимаются стандартами twitter.com/jsunderhood/st…

Думал рассказать о том, как я писал текст спецификации для Promise.any, но что-то сложно... Вообще для начала надо научиться спецификацию читать. В этом помогут timothygu.me/es-howto/ и v8.dev/blog/understan… v8.dev/blog/understan… v8.dev/blog/understan…
Про то как читать спеку ECMAScript twitter.com/jsunderhood/st…

Что касается WebAssembly, то тут тоже все здорово. Вот-вот в спецификацию попадут Bulk Memory Operations и Reference Types, на которых в свою очередь основаны последующие пропозалы. И они уже тоже заимплеменчены во всех браузерах! (в Хроме и Сафари пока под флагом)

Вчера так и не нашёл времени поговорить о коммьюнити, но попробую совместить это с сегодняшней пивной темой ;)
Про коммьюнити twitter.com/jsunderhood/st…

Ещё одно сообщество, которое я люблю и помогал расширять на другие города и даже чуть-чуть на другие страны — это BeerJS. Не уверен где именно зародилась эта идея, но где-то в штатах. На самом деле форматы встреч разделяются в каждом городе.

Как-то я даже забыл, что суббота уже завтра) А это также значит, что сегодня пятница. А если так, то пора заводить тред о пиве! 🍺 Дисклеймер: алкоголь вреден для здоровья, и пиво не исключение! Не злоупотребляйте им! twitter.com/jsunderhood/st…

Доброе утро. Сегодняшняя тема — конференции и путешествия! С 2015 года я посещаю огромное количество конференций в разных странах, поэтому считаю, что у меня есть определённая экспертиза в этом 🤓. Щас поделаю важные дела и вернусь после обеда.
Про конференции twitter.com/jsunderhood/st…

А еще хочется завести тему участия женщин в IT (и не только). Я надеюсь, что читатели андерхуда в основном адекватные люди и тут не начнется срач. Вкратце — всё плохо. И это наша общая вина. Недавно послушал встречу IT Ladies в Clubhouse, и был поражен позицией некоторых мужчин
Про женщин в IT twitter.com/jsunderhood/st…

🔥Тред (@chicoxyzzy-2)

Ссылки