Хабрахабр

Почти всё о будущей HolyJS 2019 Moscow

Раньше мы публиковали на Хабре длинные списки с формальным описанием докладов, но кажется, всё это и так можно прочитать на сайте. 8-9 ноября в Москве состоится HolyJS 2019 Moscow — большая конференция для JavaScript-разработчиков.

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

В разговоре участвуют:

  • Евгений Кот и Артём Кобзарь из Wrike;
  • Таня Денисюк и Дмитрий Махнёв из JUG Ru Group;
  • Алексей Золотых из Infobip;
  • Михаил Башуров из EPAM;
  • Михаил Полубояринов из Health Samurai;
  • Василий Ванчук;
  • Интервью ведет Олег Чирухин.

Общая картина

Олег: Расскажите о программе конференции. Как темы появились, как они устроены, если в них есть какая-то внутренняя логика и почему их так много.

Основное направление — это обычно то, что сейчас сверхактуально, что-то очень значимое. Дмитрий: Каждый раз, когда мы делаем конференцию, нам нужно выбирать некоторое основное направление и опираться на фидбэки. Ну и плюс Ryan Dahl. Если взять прошлый HolyJS, мы специально пытались пригласить Ryan Dahl, потому что Deno был свежачком и хотелось услышать что-то о нём в России.

Например, Telegram-канал Сергея Рубанова и Романа Дворнова читает огромное количество людей.  В этот раз мы особо сфокусировались на самом языке, потому что сейчас TC39 начинает работать всё более и более активно и прозрачно, и мы видим, что аудитории это интересно.

Во-вторых, когда мы начали ресёрчить состав TC39, мы обнаружили, что там находится огромное количество интересных людей, которые работают в интересных компаниях — Google, PayPal, Mozilla, Bloomberg. Во-первых, нам показалось, что это интересная тема. Очень хотелось сконцентрироваться на этих вещах.  Эти люди ещё иногда делают JavaScript-движки.

Мы не стали в этот раз как-то сильно напирать на экспериментальные доклады, они были сами собой. Плюс мы всегда имеем пул заявок, в этот раз он был, как обычно: больше 200 с хорошим таким конкурсом на место, поэтому с этих заявок мы стараемся собирать программу достаточно разнообразную, чтобы открыть для слушателей что-то новое. Мы в этот раз взглянули в сторону soft skills, потому что их просят и считают важными.

Поэтому soft skills для нас важная часть. Видно, что аудитория растёт, растёт и в компаниях, и в коммуникациях, и в управлении. Нам удалось найти несколько делегатов TC39. Если начать с того, что было первой целью — это был TC39. И среди докладчиков будет ещё один приглашённый эксперт.

Ещё там есть очень небольшое количество приглашённых экспертов, около 20 человек. TC39 состоит из делегатов — это люди, представляющие конкретные компании, их больше 100. Управлять и координировать TC39 пытаются 3 человека, это сопредседатели комитета, 2 из них у нас будут.

TC39, фундаментальные и инсайдерские доклады

Олег: Чисто практически, как TC39 влияет на жизнь обычного человека?

TC39 формирует язык — ваш самый базовый инструмент, который исполняется JS-движками. Дмитрий: Очень просто!

Представители движков JavaScriptCore, который находится в Safai и iOS, и SpiderMonkey, который находится в Firefox, также будут выступать с докладами.

У нас будет разработчик из Babel core team: Nicolò Ribaudo, который пилит достаточно актуальные и сложные фичи, например, такие как Optional Chaining и Nullish Coalescing. Если сделать шаг дальше и сказать, что TC39, конечно, развивает язык, но все пользуются Babel. Так мы закрываем основу языка.

Артём: У нас ещё будет фундаментальный доклад в принципе по теории языков от человека, который находится в академической среде — Виталий Брагилевский. 

Мы помним, что у нас всегда просят Node.js, поэтому мы с трепетом относимся к выбору докладов по Node.js. Дмитрий: Также нам пришло достаточно много заявок, из которых мы старались выбирать актуальные темы. В этот раз там много всего интересного. 

Как обычно, с этим нам помогают коллеги из PiterJS. Более того, мы сейчас работаем над тем, чтобы сделать Node.js Code + Learn, чтобы он был на рядом с конференцией.

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

Ребята, которые нас очень сильно впечатлили своими мыслями. А еще есть специфическая категория, назовём её «инсайд», куда попали доклады, которые сложно к чему-либо отнести.

У нас всегда просят практику. Таня: Ещё один важный момент. Это тоже важно отметить, потому что именно посетители смогут не только чему-то научиться, но и попробовав это вживую, и им с этим помогут ребята, которые будут вести воркшопы. Помимо того, что сами доклады содержат практические кейсы, мы ещё это добиваем двумя воркшопами, которые будут проводиться в каждый из дней. Ребята тоже небезызвестные и в комьюнити, и как специалисты.

Воркшопы

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

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

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

Олег: Как проходят воркшопы?

Один воркшоп в день конференции. Дмитрий: Воркшопы проходят, грубо говоря, четвёртым потоком. Обычно это во второй половине дня в течение двух слотов конференции, то есть около 2,5 часов с небольшим перерывом. Они входят в стоимость посещения конференции, вы просто приходите, у вас есть опция их посетить.

Олег: Докладчик, который его ведёт, работает индивидуально или на группу?

Этот формат новый для нас. Дмитрий: Он работает на группу, но ему может помогать его куратор. Точно можно сказать, что там будет огромное количество информации и ребята точно ответят на большое количество вопросов.  Мы проводили только два воркшопа (по Svelte и по Webpack) один раз в этом году в Питере, поэтому пока точно сказать о форме сложно.

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

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

Ещё вопрос: почему оптимизация React — это так важно? Таня: Иван этим и занимается, это часть его рабочей деятельности.

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

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

Артём: Плюс как минимум производительность в React — это нашумевшая тема, например, недавно было issue по performance, которое переводили все кому не лень. 

Надо понимать и внутренности React, чтобы создавать эти практики, и то, как эти внутренности взаимодействуют с отдельными движками. React в принципе — это закрытая коробка, на него можно влиять через набор практик. Её сидели и искали ребята из V8. Допустим, в issue, которое недавно нашумело, штука в том, что только в Chrome и Chrome based-браузерах была эта проблема.

Дмитрий: Помимо просто практик и «верьте мне, потому что я так сказал», если зайти и посмотреть описание воркшопа Ивана, у него там очень много про то, как профилировать React и ререндеры, как профилировать приложения в принципе и даже как пытаться это делать в продакшене.

Олег: А мы сейчас про один воркшоп говорим или сразу про два?

Первый — про серверную часть, второй про фронтенд. Алексей: Про оба. На это есть запрос.

Запрос есть и со стороны комьюнити, потому что фронтендеры начинают глубже погружаться в бэк на Node.js, и со стороны компаний, которые пишут на Node.js. Дмитрий: И что важно, это запрос двусторонний. Мне кажется, Андрей даже как работодатель заинтересован, чтобы коллеги лучше в этом разобрались. Андрей в своем подкасте неоднократно упоминал, что коллеги, пришедшие с фронтенда, делают очень базовые ошибки при проектировании серверных приложений.

Учитываются ли мнения участников? Олег: А спикеры вообще между собой общаются, у них строятся связи и запросы между собой?

Таня: Я помню, как ребята из Chrome DevTools пообщались с Ryan Dahl прямо на конференции и потом учли всё это.

Сначала мы с ним сидели и общались, вбросили тему, потом он подошёл к Ryan Dahl, обсудил и так получился доклад, который он рассказывает на этой HolyJS. Артём: У нас будет доклад от Ujjwal Sharma из Node.js-команды, его доклад обсуждался на прошлой HolyJS в Питере.

Я бы сделал вывод об этом просто из объема времени, которое тратится в дискуссионных зонах. Дмитрий: Думаю, что спикеры учитывают то, что происходит на конференции и в дискуссионных зонах. И в целом, спикеры проводят там около часа.  Например, Илью Климова там могут держать часа полтора, Michel Weststrate вышел через такое же время.

Расширение кругозора

Олег: Зачастую, когда собирается программа, у тебя большая часть докладов о том, чего хочет аудитория, но есть и специальные разделы, которые никто не ждал, а они — есть. Которые существуют для улучшения эрудиции. Чтобы показать аудитории то, что обычно никто не слышал. Такое есть в программе это  HolyJS?

На JS-конференции рассказывать про теорию языков программирования, про то, как на JS сначала строишь машину Тьюринга, потом интерпретатор для лямбда-исчисления и потом сначала выражаешь машину тьюринга из лямбда-исчисления, а потом наоборот — мне кажется, это довольно необычный доклад для JS-конференции. Артём: Не знаю, мне кажется, Виталий Брагилевский — это такой пример. Но тем не менее, он устраняет определенную инженерную неграмотность с точки зрения теоретической информатики.

Дмитрий: Также сразу можно дополнить Артёма наличием в программе Lucas da Costa.

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

То есть прямого запроса «расскажите нам про Y-комбинаторы» мы не получаем. Дмитрий: В первый раз он рассказывал, как с помощью функции сделать всё, включая boolean, математику и прочее, а второй раз про Y-комбинаторы. То есть если во время прочтения у вас возник вопрос «А зачем мне Y-комбинаторы», рекомендуем посмотреть доклад.  Но если к нам приходят с интересной темой, и мы понимаем, что она может быть очень полезна, мы её даём.

Первое — не каждый в комьюнити такой вопрос задает: можно ли интерпретируемый язык просто скомпилировать в нечто, и исполнять. Артём: Я добавлю второй доклад от моего друга Дмитрия Пацуры, который будет опять-таки про то, можно ли компилировать JS.

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

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

Никто никогда не спрашивает: «Как мне образовываться?», потому как-то живут, да и курсов куча. Наверно, можно выделить доклад про образование. На тему образования будет доклад Дмитрия Волошина.

Это прямо топовый доклад! Михаил: Ещё из необычных — Anna Herlihy. При том, что это может быть не только существующий язык программирования, а и визуальные схемы. Коллеги додумались взять и написать какой-то фронтенд для преобразования любого языка в MongoDB-запрос. Накидал блок-схемы, а ему сделался запрос в базу MongoDB. Может прийти какой-то менеджер, который не лезет в код, а работает с бизнес-логикой.

Евгений: Anna работала с Mongoose для MongoDB, и за годы выстраивания ORM на разных языках она поднаторела, чтобы сделать такую систему. 

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

Можно будет не только послушать её, но подойти и задать вопросы. Также одна из сопредседателей, Aki Rose Braun будет открывать секцию lightning talks с докладом о том, как в TC39 работают с предложениями в язык. они очень активны, и они как раз во многом занимаются коммуникациями между TC39 и комьюнити. Я очень рекомендую ловить сопредседателей, т.к.

Node.js

Олег: Давайте перейдём к темам докладов. Например, что происходит в мире Node.js? И как это связано с докладами?

Что я подразумеваю под взрослыми фреймворками — те, которые дают достаточную абстракцию, чтобы мы манипулировали непосредственно не какими-то элементами самого сервера вроде route, request, response и так далее, а непосредственно объектами доменной области. Артём: Сейчас в Node.js постепенно переходит тенденция к взрослым фреймворкам.

Такое дитя Spring и ASP. И из-за этого сейчас родился и очень «на хайпе» NestJS, который походит на слишком классический enterprise с аннотациями, с классами. И получается так, что на HolyJS 2018 Moscow у нас вообще был создатель этого фреймворка (Kamil Mysliwiec), но рассказывал он в основном о внутренностях. NET на минималках. А на этот раз у нас будет более практический доклад, который делает Александра Калинина.

В том, что большая часть Node.js-приложений на сегодняшний день написаны на довольно популярном Express, который занимал очень большую нишу в свое время, и сейчас, я думаю, тоже что-то занимает. В чем его практическая ценность? Он использует старый способ манипуляции низкоуровневыми абстракциями — request, response, сервер, сокет, порт и так далее.

Более того, она расскажет, почему это стоит делать, то есть, какие плюсы, причем для разных аудиторий, как для разработчика, так и для менеджера. Александра расскажет о том, как они переводили своё Express-приложение на NestJS. И они это сделали за две недели. Как компании это продать как заказчику. По моему, там звучала число в 80 часов.  При том, что приложение было средней сложности.

Во-первых, потому что там TypeScript, во вторых, Ryan Dahl сказал, что «я сейчас сделаю круто».  Дмитрий: Дальше по Node.js, сейчас понятно, что все еще продолжают смотреть и ждать Deno, потому что он не может не вызывать интерес.

Он будет исследовать их event loop’ы, потому что они на самом деле разные, выдаст по этому поводу некоторое исследование, чтобы вы могли понимать, на каких практических задачах уже можете взять и потрогать Deno. И Ujjwal Sharma будет рассматривать кейсы, в каких случаях вам лучше брать Deno, а в каких лучше брать Node.js в текущем состоянии. Потому что на Node.js сейчас очень много пишут на TypeScript. Это, конечно же, тоже очень интересно.

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

Потому что он как раз должен исследовать это в рамках практических задач. Дмитрий: Ну вот как раз про это нам, я думаю, тоже скажет Ujjwal. То есть он должен отталкиваться в своем докладе от конкретных практических вещей, что ты как раз и спрашиваешь. Грубо говоря, если вам нужно сделать просто proxy API, то нужно вот это, а если вам нужно делать какой-нибудь server-side рендеринг, то вот это. И, грубо говоря, если там будут какие-то проблемы с event loop, например, на большом количестве запросов, то Ujjwal, мне кажется, как раз должен найти и очертить такие области, где его можно брать, с учетом багов и не багов.

Это такое исследование, которое сейчас идет. Может быть он наоборот скажет, что вообще нельзя, но потенциально это будет интересно для будущих задач. Потому что и Deno в активной разработке, и Ujjwal держит связь с Ryan — они прямо в WhatsApp переписываются. Почему я не могу сказать про финально — потому что, мне кажется, даже в последние дни перед конференцией что-то может добавляться. Ujjwal также является core member Node.js, и там тоже держит руку на пульсе, поэтому там тоже могут быть сверх-свежие апдейты.

Артём: Он core member V8, Electron, и я не знаю, где его нет среди основополагающих проектов.

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

И эту тему будет покрывать Андрей Пeчкуров. Михаил: Опять-таки, третья и до сих пор популярная тема — быстродействие Node.js-приложения. Причем именно не в задачах относительно формочек, а в чем-то серьезном. В своём докладе он показывает, как на реальном продукте, которым пользуется уже достаточно много людей, они разбирались с производительностью.

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

Олег: По сути этот доклад может быть интересен людям, которые считают себя performance-инженерами?

Или, например, людям, которые пришли из C#, Java или ещё откуда-нибудь в Node.js, по каким-то причинам, и хотят понять, что там во внутренностях, чтобы на продакшене что-то оптимизировать. Михаил: Да.

Engines

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

Соответственно, есть некоторая специфика движков. Дмитрий: Если вы делаете хоть что-то, завязанное на производительность… Вот Артём уже упоминал нюансы с React, когда приходилось c движками разбираться, чтобы починить.

Вячеслав Егоров рассказал об этом ещё в 2012 году. Как мы помним, когда-то очень сильно выстрелили доклады, и их до сих пор еще смотрят, хотя уже это отчасти бесполезно, по поводу скрытых классов. Некоторые коллеги основательно восприняли это и начали писать с учетом этого под старый оптимизатор, который назывался Crankshaft.  Даже существует термин CrankshaftScript — то, что хорошо работало на старом движке, после выхода новых движков стало работать не без нюансов.

Олег: Но потом его заменили на новый.

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

Firefox существует и радует нас Quantum-ом, а что происходит с движком не очень прозрачно, т.к. Один из докладов про движки, например, будет от Yulia Startsev из Mozilla про SpiderMonkey в Firefox. Поэтому можно будет послушать, как они делают там новые фичи — это очень интересно! доклады по SpiderMonkey чудовищно редки. Она расскажет про то, как они внедряли один из proposal-ов: Nullish Coalescing. Особенно потому что Yulia одновременно и сопредседатель в TC39, и в команде developer tools Mozilla. Мажорные браузерные движки очень часто встраивают куда-то. Думаю, ей можно будет задавать какие-то вопросы и по движкам в целом. Думаю, с ней можно будет обсудить и недавние анонсы Hermes и QuickJS. Ими могут пользоваться не только в браузере, например, SpiderMonkey раньше много куда встраивали.

Это движок в WebKit, по мнению Сергея Рубанова, это один из самых быстрых движков JS, который в некоторых тестах быстрее V8. Второй же из докладов про движки — доклад про JavaScriptCore. Он инженер в WebKit вот уже последние 9 лет, а также он делегат TC39. Доклад нам расскажет Michael Saboff из Apple. Можно будет послушать про то, как сделан внутри один из быстрейших движков на планете. В принципе, от кого-то из Apple сложно услышать технический доклад, если это не специальный ивент Apple, поэтому с данным докладом аудитории повезло втройне. Ну и спросить свои боли про Safari, потому что я точно знаю, что у любого, кто сталкивался с мобильной разработкой, они есть. И мне кажется, что это очень клёво. сам был очень впечатлён общением с ним. Так же я очень рекомендую пообщаться с Michael лично, т.к.

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

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

Олег: Мы ещё не захватили Дмитрия Пацуру.

Человек задался вопросом: почему JS не компилируют? Артём: У Дмитрия очень интересный вопрос и очень интересное исследование. Но тем не менее, современные движки не используют обычную интерпретацию. Казалось бы, язык не был спроектирован для того, чтобы его компилировали. Один генерирует обычный код, другой — оптимизированный код. Cейчас стандартом является 2 JIT-компилятора. Это касается всех перечисленных движков.

Они взяли и сделали компилятор, где вот эти стадии генерации промежуточного кода и оптимизации этого промежуточного кода вынесены в ahead of time. Но с недавних пор Facebook сделали нечто странное. И по сути подается intermediate representation для исполнения.

Сделано это для платформы React Native, которая сейчас популярна, чтобы как раз-таки убрать overhead за счет того, что код парсился, код преобразовывался в intermediate language, а тот ещё и оптимизировался в runtime.

То есть, можно ли написать какой-то компилятор, который бы использовал LLVM, который формировал бы конечный бинарник для исполнения. Дмитрий задался вопросом: «Можно ли пойти дальше?». Как он писал компилятор из TypeScript в LLVM, что из этого получилось, и подтвердил ли он свою гипотезу о том, что JS нельзя компилировать. Собственно, он будет рассказывать сначала про архитектуру, почему такая архитектура существует, и будет рассказывать про свое собственное исследование.

Soft Skills

Олег: Следующий раздел — софтскиллы. Там всего два доклада, зато какие!

Казалось бы, HolyJS — конференция для JavaScript-разработчиков, а тут что-то о Soft Skills. Евгений: Почему это вообще важно. На самом деле, мы не динозавры и не можем жить в XIX веке, когда все живут в XXI. 

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

Поэтому мы на HolyJS 2018 Piter делали несколько soft skills докладов (от Максима Юзвы и Никиты Прокопова), они зашли хорошо. Фронтенд-разработчикам нужно уметь договариваться, обсуждать и иметь так называемые soft skills. Первый — это Андрей Смирнов. В этот раз мы тоже решили пригласить экспертов, которые расскажут нам, что разработчик должен знать и уметь и как развивать эти вещи помимо собственно разработки.

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

То есть если вы обращаете внимание на один, то как растут или падают другие навыки, и не только soft skills. Дмитрий: И как их качать, особенно в связке.

Советник ректора МАИ, член общественно-делового совета при правительстве РФ. Евгений: Второй спикер в секции soft skills — Дмитрий Волошин, скорее всего менее известен в мире фронтенда, тем не менее является серьёзным экспертом. Можно почитать биографию. 

Дмитрий: Это человек, который стоял у истоков юнита образования Mail.ru, который взаимодействует с топовыми вузами нашей страны: Бауманкой, МГУ, МИФИ, МФТИ, Питерским Политехом. 

Например, если вы Middle+ в JavaScript, но хотите почему-то подтянуть бэкенд базы данных, это как раз про этот ресурс. Он ещё имеет свой собственный проект по обучению людей, который называется Otus, и они фокусируются на обучении людей Middle+. Насколько мне известно, ресурс достаточно успешный и интересный.

И казалось бы, при чём тут слово «ликвидность» и вообще как его применять, как научно подходить к своему собственному развитию? Евгений: Дмитрий Волошин собирается рассказать про путь, которым можно идти в своей карьере, в своём развитии, как и на что обращать внимание при том, как вы переходите со ступеньки на ступеньку. Дмитрий объяснит это.

Fundamentals

Олег: Давайте разбирать категорию фундаментальных докладов. Что такое вообще fundamental, потому что слово какое-то расплывчатое, и почему это важно?

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

Мало того, что он переводит книги по Haskell, мало того, что он пишет книгу по Haskell, мало того, что он является членом двух комитетов по стандартизации (один Haskell 2020, другой Haskell Glasgow Compiler), он еще и преподаватель, на текущий момент в СПбГУ. Первым же докладом у нас идёт Виталий Брагилевский. В принципе он делает хорошие курсы.  На сегодняшний день у него самый популярный русскоязычный курс по теории категорий.

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

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

В этот раз он решил замахнуться на тесты. Евгений: Lucas da Costa опять продолжает свою победную серию. Как это делать и с теоретической, и с практической точки зрения.  Причём не просто тесты, а тесты на типы.

Дмитрий: И что важно, Лукаш действительно имеет полное право говорить об этом, потому что он был мейнтейнером таких известных библиотек для тестирования, как Chai.js и Sinon.js. 

В прошлый раз в ряде отзывов на доклады Lucas говорили, что у него слишком много теории. Евгений: Он рассказывает про Jest, про снапшоты. Поэтому интересно будет и тем, и другим. И он внял просьбам, но решил сделать в своём духе: и теорию оставить, и практику добавить.

Олег: А Mathieu Henri?

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

И, соответственно, у них очень большая аудитория и они заточены под большое количество браузеров и, в принципе, клиентов. Из интересного здесь то, что это проект Microsoft. Они одни из тех товарищей, которые, наверное, будут Internet Explorer 11 поддерживать до последнего, плюс им нужно заботиться о мобильном трафике, и так далее.

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

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

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

Он будет рассказывать, как он организовывал CI и какие там есть фишки по, например визуальным diff-ам, и вообще какую систему, какой framework он нарисовал для того, чтобы решать задачи в рамках Microsoft.

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

Переходим к Nicolas Belmonte.  Олег: Окей.

Доклад будет рассказывать про те алгоритмы, опять-таки, про ту фундаментальную базу, которая лежит за построением карт. Артём: Николас работает в Mapbox, компании, которая делает карты.

Про отрисовку конкретных полигонов, про расчеты, про локацию, координаты и все вещи, которые являются базой при построении такого вида приложений. Про отрисовку в 3D.

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

Владимир как раз работает в Mapbox и занимается картами со стороны JS.  Дмитрий: Вы могли видеть некоторые подобные доклады, с моей точки зрения на одной из когда-то лучших конференции в СНГ по JS, а именно на FDC, от Владимира Агафонкина.

То есть: он как бы на это все смотрит, наверно, на максимально верхнем уровне с точки зрения всего Mapbox, что, конечно, не может не вызывать интерес. А Nicolas отвечает за визуализацию этих карт с точки зрения и C++,  и iOS, и Android, и веба тоже.

Олег: Кстати, вот этот Mapbox — это что-то известное или очень локальное?

Артём: Насколько я знаю, с точки зрения цены, по-моему, третье решение самое популярное среди карт, я могу ошибиться, но что-то около этих чисел. 

Олег: Повторю, что он из директора Uber ушёл в Mapbox, просто так из Uber не уходят.

Дмитрий: Mapbox — это очень серьезная компания, которая на данный момент должна быть хорошо известна среднестатистическому JS-разработчику.

Frameworks

Олег: Следующий раздел — фреймворки. Самый жирный, наверное.

«Фреймворки. Евгений: Самый любимый, наверное. Фреймворки никогда не меняются».

Олег: А сохраняется тенденция, что каждый должен написать свой собственный фреймворк?

Евгений: Мне кажется, что война уже закончилась.

Дмитрий: Svelte передает тебе привет!

Может, что-то в ближайшее время выстрелит. Артём: Нет, ну как, каждый второй не пишет фреймворк, но периодически выстреливают какие-то фреймворки как по типу Svelte.

Они выстреливают из-за того, что найден какой-то фундаментальный принцип, и это прорыв. Михаил: Выстрелит не из-за того, что это не очередной какой-то фреймворк.

Олег: Вопрос, какие самые большие прорывы были последних лет? 

Он будет рассказывать про то, как использовать FSM на примере xstate на практике. Дмитрий: Давайте немного вспомни про Farzad YousefZadeh. Все больше и больше внимания начинают обращать не просто на управление состоянием, а на то, как делать это более системно.

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

Олег: Это доклад о формальной верификации?

На HolyJS 2019 Piter был один из авторов (David Khourshid) достаточно популярного решения в этой нише, который как раз сделал библиотеку xstate. Дмитрий: Нет, там инструмент, который позволяет описать переходы вашего состояния в виде машины состояний и чуть ли не визуально это накидать. с React проектом) эту библиотеку использовать. И вот Farzad как раз будет показывать, как в максимально практических условиях (т.е. Наверно, это из больших прорывов.

Сейчас «server-side render is new black», как говорится. И опять же, Guillermo Rauch. И вообще подходы к рендерингу пытаемся максимально миксовать — и server-side, и не server-side. Мы возвращаемся к корням и очень много говорим про server-side рендеринг. Соответственно, доклад обещает быть весьма интересным с точки зрения очень обширного взгляда на это все. Guillermo является сооснователем ZEIT, конторы, которая пишет Next.js, который является сейчас одним из основных решений для динамических вещей на React, которые хотят рендериться на сервере. И Guillermo, конечно, можно будет позадавать вопросы про Next.js.

Они кардинально поменяли то представление, было внутри рендеринга. Артём: Я бы хотел добавить, что мы забыли самый большой прорыв в Angular-сообществе — это Ivy. А доклад Eliran Eliassy заходит с другой стороны, то есть будет рассказывать не что быстро, а почему. И штука в том, что доклады про Ivy в основном строятся как — человек берёт, рассказывает, показывает метрики: «Смотрите, раньше было вот так, а сейчас вот так». В докладе будет сравнение предыдущего представления, которое присутствовало в Angular, и текущего, и так далее. Eliran, скорее всего, больше полезет во внутренности.

И в этот раз мы решили сделать доклад для тех, кто интересуется Angular глубоко и прямо чтобы было интересно и хардкорно. Евгений: Наши доклады про Angular упрекали, что они слишком лайтовые, ничего интересного.

Олег: У нас есть ещё доклад по React?

Василий: У нас есть и доклад, и воркшоп, и оба про performance в React.

Олег: Можно подробнее?

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

Причем там базово всего 4 техники, но при этом их можно еще миксовать. И, собственно, Miguel Angel Duran Garcia собирается рассказывать про то, как можно влиять на скорость получения контента пользователем, используя разные техники рендеринга. И он собирается рассказывать про то, в каком случае какую технику рендеринга лучше использовать.

Причем это приводится на примере React, но по факту это framework-агностик, этот же подход можно применить к Angular, к любой другой библиотеке рендеринга, просто для конкретики взят React.

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

Он будет рассказывать, как можно что-то активизировать, посмотрев на рендеринг просто с другой стороны. Ну и все это дело завязано на объяснении, каким образом это влияет на rendering pass-ы и так далее, но в целом он не будет рассказывать, как лезть в недра фреймворка.

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

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

Олег: Ещё у нас должно быть что-то про GraphQL.

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

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

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

И если можно, расскажите, насколько это вообще актуально сейчас? Олег: Давайте посмотрим, какие у нас есть доклады про браузеры. То есть, мы уже поговорили о JS-движках, почему браузеры — это отдельная категория?

Такая функциональность, допустим, связана непосредственно с парсингом HTML, или с отображением стилей, или что будет в одном из докладов (с extension-ами), которые лежат где-то рядом с этим делом. Артём: Тут штука в том, что есть определенная функциональность, которая не касается непосредственно движков, которые исполняют JS.

И также JS приходится взаимодействовать как с окружением браузера, если мы говорим про extinction, dev tools и прочие вещи, так и с движком рендерера, которые, как мы знаем, живут отдельно. Дмитрий: Браузер сам по себе является некоторой экосистемой, в которой JS — это некоторая встроенная часть.

Пошли по очереди — это и дом API, который к нам приезжает, и куча всяких браузерных вещей, и специфические worker-ы, сам рендер. То есть, если мы говорим про Chrome — это Blink, ну и так далее. О чём и будет рассказывать Prashant Palikhe.

Он будет подробно раскрывать вопрос, который задают в большинстве приличных компаний на собеседовании: что происходит, когда ваша страница начинает грузиться. Артём: Тут соль в следующем: если у нас были fundamentals от Виталия Брагилевского, Nicolas Belmonte, Mathieu Henri, касающиеся в принципе инженерных практик, то Prashant будет рассказывать про базу, которая связана именно с фронтендерской частью. Здесь будет раскрыто от TCP-handshake и обмена TLS-пакетов до того, что уже происходит при парсинге HTML, при подсчете стилей, при построении блоков, которые будут отображаться в браузере, при наложении стилей на уже отстроенные блоки, и что будет происходить при взаимодействии пользователя с браузером. Что происходит в браузере под полой. То есть какие стадии ваш браузер будет повторять для изменения контента внутри.

Это будет именно тот фундаментальный вопрос, который стоит для фронтендера: «Что именно происходит в браузере, когда ваше приложение рендерится?».

будет рассказывать про проблемы extension-ов. Дмитрий: А Никита Мостовой будет рассказывать про то, какие проблемы вас ожидают, если вы просто пользуетесь браузером или разрабатываете сайты, т.е.

Это вообще некоторая боль, которую Google выпустил, открыв черный ящик, сделав extension-ы без review, и в политиках Google прямо сказано, что пользователи сами решают, ставить их или не ставить.

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

Евгений: На самом деле они могут сделать с вашей страницей абсолютно всё.

В некоторых моментах они могли встраиваться ещё и на сетевом уровне. Дмитрий: Они могут встроиться в страницу, в рантайм, и вот буквально недавно Google всё-таки начал чуть-чуть это рубить.

Олег: Да, весь этот скандал с блокировщиками рекламы.

Блокировщики — это самая добрая часть из extensions. Дмитрий: Да, и не только они. Имел опыт того, как их пытались ломать через extensions, потому что он работает в HeadHunter, а там есть некоторое количество важной информации для рынка. И Никита как раз поимел очень много опыта с этими штуками. И он расскажет, как с этим жить.

Design Systems

Олег: Круто. Следующая категория — дизайн-системы!

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

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

Есть такой инструмент для дизайнеров, называется Figma. Алексей: Будут Зар Захаров и Александр Каменяр. И вот ребята придумали, как взять и интегрировать тулу при помощи этого API для того, чтобы сделать бесшовную интеграцию между дизайном и имплементацией, конкретно имплементацией на React. Она на самом деле работает в онлайне, она выставляет наружу HTTP API, но не суть. Нам не нужно синхронизировать дизайн с имплементацией, мы это пытаемся сделать в автоматическом режиме, насколько это возможно. Получается, что мы можем помимо цветов выгружать, например, размеры, расстояния, и всё это держать в свежем виде.

Евгений: Ещё у нас будет Андрей Оконечников, достаточно известный спикер, который тоже будет говорить про дизайн системы, но о его докладе подробностей пока нет.

Дмитрий: Андрей имеет свою компанию по дизайн-системам, и он будет рассказывать, как их строить в целом на основе опыта построения множества систем в разных компаниях.

У нас два докладчика. Евгений: В целом, по дизайн-системам всё, следующий наш раздел — это языки программирования.

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

Евгений: Да ты что!

Олег: Ну можно начать перечислять: Kotlin.js, Clojure, Elm, ReasonML…

И называется он «ReasonML for skeptics» от Eric Schaefer. Михаил: Вот как раз про ReasonML и будет доклад. Eric будет продавать ReasonML людям, которые не верят технологию ReasonML.  Было уже похожее название, ClojureScript for skeptics, про это рассказывал другой человек.

Он занимается этим профессионально. Он не просто попробовал tutorial с «Hello World» и пришел на докладе рассказать, какой Reason классный, чистые функции и все такое. Он будет как-то оспаривать и нивелировать аргумент, что в ReasonML мало решений, которые можно использовать, и естественно, покажет плюсы языка.  Он писал инструменты с этим стеком для Google, для Red Bull и прочих больших компаний в потребительской индустрии.

Учитывая, что новый React ложится под ReasonML идеально. Я не курировал этот доклад, и не могу быть уверенным, но он, по крайней мере, покажет, как React с GraphQL подружить под ReasonML. Ну и да, маленький нюанс, что ReasonML разрабатывает Facebook и использует внутри себя.

При этом написал один компонент на ReasonML, не сильно меняя всю существующую кодовую базу. Михаил: Да, про Эрика ещё хочу добавить, очень важный момент, что я не уточнил, но это должно быть сказано, что человек не просто будет показывать, что «Давайте построим компонент, типа строку, которая рендерит Hello World», а будет показывать, как в существующей кодбазе с React-ом потихоньку её переводить на ReasonML. Такой вот интересный кейс.

Он является core team member в Babel и будет рассказывать, как вам сделать собственный плагин под Babel, чтобы попробовать ваш proposal, прежде чем его предложить, ну или имплементировать, то, что вот сейчас обсуждается на каком-нибудь стейдже. Дмитрий: Второй представитель секции языков программирования — это Nicolò Ribaudo.

Это будет вообще самый первый доклад Никола, ему ещё 20 лет. Он покажет, как все устроено внутри Babel, какие там есть основные инструменты, и покажет, как правильно читать спецификацию, чтобы ее имплементировать на основе какого-нибудь конкретного proposal. И с ним ещё скоро выйдет интервью. Поддержите его!

Алексей: Если говорить про различные языки и их использование в браузере, то как не вспомнить про Андрея Роенко и его доклад про WebAssembly.

Как водится, вокруг этого очень много мифов. Вообще, для обывателя WebAssembly кажется чем-то магическим. Андрей в своем докладе попытается разложить все по полочкам. Кто-то говорит о том, что скоро JavaScript будет не нужен и все можно писать на своем любимом языке, кто-то говорит о сверхпроизводительности. Почему сторонний код не может перехватить управление программой посредством переполнения стека? Что на самом деле делает Emscripten? Тоже вполне себе про языки в вебе и их применение. И конечно поделится практическим боевым опытом применения в Yandex-картах.

Роман Дворнов в своём докладе расскажет, что такое definition syntax, почему важно понимать его в целом, и особенно, в преддверии Houdini. Дмитрий: Ну и в разделе про языки нельзя забыть про CSS. Его инструмент CSSTree лежит в основе многих других интересных инструментов. Роман уже давно и основательно работает с CSS с точки зрения парсинга и оптимизации, а иногда и коммитится в спецификацию CCS. В докладе Роман поделится огромным количеством информации о технической стороне CSS как языка и расскажет, почему важно это понимать.

Insiders

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

Артём: Да, доклады, которые в принципе не вписываются ни в какие границы или категоризацию, потому что они уникальны сами по себе.

Олег: Давайте начнём с Romulo Cintra.

Ты задавал вопрос: «Как TC39 влияет на жизнь рядового разработчика?», и вот этот доклад — пример того, как TC39 влияет на жизнь того, кто пишет ПО для конечных пользователей. Алексей: Про Romulo Cintra. Везде нужна интернационализация плюс-минус и, к сожалению, в JS долгое время не было никаких стандартных подходов, как это реализовать, поэтому появилась куча библиотек, которые решают все либо часть проблем, но по-разному. Сейчас есть актуальная проблема, что в принципе уже никто не разрабатывает приложение на одном-единственном языке.

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

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

Идея в том, чтобы договориться о том, какое решение они смогут включить в состав языка для решения проблемы интернационализации. Они начали двигаться в эту сторону, создав namespace Intl, ну, а сейчас там только работа с датами и сортировками, и списками (сортировкой списков). И тут самая большая проблема в том, что, понятно,  можно взять любое решение из тех, которые есть, либо придумать новое, и просто сказать, что вот теперь это — часть стандарта, и мы будем ей следовать. 

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

Он будет раскрывать проблему, будет рассказывать, какие варианты решений, и на какие ключевые моменты они сейчас обращают внимание, и в принципе расскажет про будущее двух методов, которые можно будет использовать для шаблонизации при интернационализации. Собственно, Romulo является делегатом TC39 и занимается тем, что двигает эту тему в TC39 и является председателем MessageFormat Working Group.

Фишка здесь в том, что как только его предложение перейдет на какой-то плюс-минус стабильный stage — это будет означать, что можно создавать полифил этого решения, и фактически, половина инструментов, которые есть сейчас на рынке JS для решения этой проблемы, уйдет в никуда.

Ты мог бы взять какую-то библиотеку вроде Fluent, но зато в будущем потенциально ты этот полифил просто выпилишь, а твои задачи будут решаться максимально быстро средствами нативной среды, будет это браузер или Node.js — неважно. Просто потому что, если ты стартуешь новый проект, то заинтересован в том, чтобы взять полифил. Доклад будет про вот это светлое будущее, которое нас ждет.

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

Олег: Вы про Артёма Арутюняна?

В чем суть: типизация захватила умы фронтендеров и в принципе умы JavaScript разработчиков. Артём: Да-да, про Артёма. Что TypeScript, как платформа, постепенно забирает рынок себе. Это не просто громкие слова, это, допустим, показывает статистика, которая была собрана в State of JavaScript последней редакции. Но в чем интересность: человек, который писал на TypeScript в любом случае в рантайме видел TypeError.

Потому что есть вещи, которые, во-первых, TypeScript не может никак гарантировать, потому что, скажем так, система типов не очень выразительна. Почему? Пример — это обычный ответ от сервера. А второй момент — что в принципе есть вещи, которые невозможно типизировать в ahead of time.

И вот Артём будет рассказывать про то, как вот такие проблемы решать с помощью иного подхода построения типизации. Естественно, мы можем описать тип, который будет приходить, но если на бэкенде все поменяется, то легко схватить Cannot read property of undefined и тому подобные ошибки, при том, что по типам все сошлось.

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

А реально выразительная система, которая будет и описывать то, что нам приходит, и верифицировать то, что нам приходит. Но, именно по тем двум причинам выше нам нужен какой-то выразительный подход для описания типов в runtime, а не просто type guards, которые будут состоять из кучи функций и 15 if-ов, и проверять, что все property совпадают с вашим response. Собственно, про это и будет доклад Артёма.

Олег: Дальше нужно обсудить доклад Anna Herlihy.

На самом деле, им наверное надоело делать многочисленные коннекторы или ORM для Mongo, ведь по сути им нужно такое делать для каждого языка. Евгений: Anna работала над Мongoose для MongoDB, и сейчас они делают некую универсальную штуку. Поэтому они решили закрыть этот вопрос решительно и сделали универсальный коннектор для всего!

Олег: Есть ли доклады, за которые вы переживаете больше всего?

У нас будет доклад, за который мы, отчасти, очень переживаем, но считаем, что он абсолютно имеет место быть с точки зрения и фундаментальности вопроса и чистого искусства в целом. Дмитрий: Что-то типа того. Это будет доклад Дениса Радина о том, может ли компьютер молиться.

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

Кейноуты

Олег: Расскажите немного о кейноутах и других выделяющихся из программы активностях?

Артём: У нас будет три кейноута: это будет Guillermo Rauch, Дмитрий Волошин и Денис Радин.

То есть если вы являетесь участником конференции, у вас есть возможность подать доклад и выступить с lightning talk в конце первого дня. Дмитрий: После основной программы нельзя не отметить то, что мы ввели на прошлой HolyJS —  это lightning talks. Заявки мы уже принимаем. Открывать lightning talk будет сопредседатель TC39 Aki Rose Braun, вот, собственно, после нее вы можете выступить с вашей темой.

После каждого доклада у нас будет дискуссионная зона — это место, где вы можете без всяких записей, что очень важно, например, вследствие компании многих спикеров, поговорить с ними и позадавать им вопросы уже лично, а не через MC. Также, имея такое количество интереснейших спикеров — было бы глупо не продумать некоторые активности с ними. Большинство наших спикеров, я думаю, все 100%, очень рады общаться в дискуссионных зонах, и они очень любят это. Ну и раскрыть все ваши темы.

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

По фидбэкам это очень понравилось аудитории. Алексей: На прошлой HolyJS мы вместе с коллегами из Honeypot по инициативе Алексея Конунникова показали премьеру документального фильма про Ember на русском языке. И переводить его помогал Павел Черторогов и ещё набор активистов СНГ-сообщества GraphQL. В этом сезоне мы покажем дублированный фильм тех же коллег из Honeypot, опять же при поддержке Алексея, про GraphQL.

Также будут MC — Виталий Фридман, Илья Климов и Евгений Кот. Таня: Также у нас будут классные интервью, которые будут проходить при поддержке Максима Юзвы, известного в СНГ-комьюнити, ведущего передачи FrontSpot.

И в прошлый раз нам помогал его оценивать бывший сопредседатель TC39 Daniel Ehrenberg. Дмитрий: Традиционно на нашей конференции проходит конкурс TCXX, который последние два раза проходит при поддержке приглашенного эксперта TC39 Сергея Рубанова. Поэтому участвовать в нём просто необходимо. Он помогал удалённо, а в этот раз у нас будет довольно много делегатов из TC39, и мы надеемся, что они присоединятся в оценке и помогут нам с награждениями.

Полное описание программы и воркшопов можно найти на официальном сайте, там же можно приобрести билеты. HolyJS 2019 Moscow состоится 8-9 ноября в Москве.

Показать больше

Похожие публикации

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Кнопка «Наверх»