«У меня только один метод обучения: просто работать» — интервью с Ryan Dahl (Node.js, Deno)
27 мая исполнится 10 лет с того момента, как Ryan Dahl выпустил самую первую версию Node.js. За прошедшее десятилетие проект стал более чем успешен, но сам Райан уже переключился на другие вещи. Чем он занимается теперь? Чем его новый проект может помочь JavaScript-разработчикам? Что он думает о разных языках, образовании и смене поколений?
25 мая, за два дня до круглой даты, Райан выступит в Санкт-Петербурге на нашей конференции HolyJS. А пока что участники программного комитета HolyJS Евгений bunopus Кот и Дмитрий dmitrymakhnev Махнёв расспросили его подробно обо всём перечисленном. На Medium мы опубликовали англоязычную версию интервью, а для Хабра сделали русскоязычный вариант.
Евгений: Многие читатели уже знают вас благодаря Node.js, но не могли бы вы немного рассказать о себе?
Райан: Я родом из Сан Диего, Калифорния. В университете я изучал математику, а моей специальностью в аспирантуре в Рочестерском университете была алгебраическая топология. Но через три года я подумал: «На что я трачу свою жизнь? Это слишком странные и абстрактные вещи».
Поэтому я ушёл из аспирантуры, отправился путешествовать, а через какое-то время меня затянуло программирование. Думаю, подобный путь проделали многие. В середине 2000-х я втянулся в веб-разработку. Поначалу мне больше всего нравился Ruby on Rails и вообще Ruby. Что касается Node, то тут повезло оказаться в правильном месте в правильное время. Так совпало, что я задумался о соответствующих проблемах как раз тогда, когда Node стал возможным.
Евгений: То есть это была удача? Или у вас было некое видение этого проекта, и вы с самого начала предполагали, что он будет суперуспешным?
Райан: Разве человек будет работать над проектом, если не надеется, что он будет успешным? Конечно, чаще всего эти надежды не оправдываются. Мы сдаёмся и начинаем заниматься чем-то другим — так произошло со всеми моими проектами, кроме одного. С Node мне определённо повезло. Тогда как раз вышел Chrome (а вместе с ним V8), а я много думал о неблокирующем вводе/выводе и как они могут быть представлены со стороны веб-фреймворков, и всё это отлично подошло JavaScript.
Евгений: Сейчас вы занимаетесь Deno. Можете рассказать о текущей работе и планах на будущее?
Райан: Мы с моим давним соратником Бертом Белдером пытаемся создать стартап. За последние года полтора мы с ним поработали уже над несколькими проектами, один из них — Deno. Берт сыграл большую роль в развитии Node, он проделал большую часть работы по портированию Node на Windows. Кроме того, он — один из авторов Libuv.
Евгений: Как вы думаете, ожидает ли Deno крупный успех в ближайшем будущем? Будете ли вы продолжать работу над ним, скажем, через пять лет?
Райан: Я понятия не имею, будет ли Deno существовать через пять лет — скорее всего, нет, потому что большинство проектов заканчиваются ничем. Но пока что Deno захватывает меня и даёт удовлетворение от работы.
Думаю, в данный момент я не удовлетворён состоянием, в котором находятся динамические языки. Мне не хватает быстрого, удобного и в достаточной степени универсального инструмента. И Node, и Python хороши, но я считаю их неоправданно сложными или плохо спроектированными в некоторых отношениях. Так что в конечном итоге я пытаюсь сделать инструмент для своего собственного рабочего процесса.
Евгений: Пока мы готовили вопросы, прочитали интервью на сайте Mapping the Journey. Там вы говорили, что работаете с машинным обучением. А вскоре после этого на JSConf EU взяли и презентовали Deno. То есть ваши интересы сместились?
Райан: В последние годы я баловался с алгоритмами машинного обучения. Не буду сейчас вдаваться в подробности проекта, над которым я работал, но это был фреймворк для машинного обучения на JavaScript. Из-за этого я впервые за годы попробовал использовать Node, и это прояснило некоторые мои проблемы с Node. Это и привело к той презентации на JSConf, в которой был показан прототип Deno. Тогда к проекту проявили громадный интерес, так что Берт присоединился. И мы продолжили работу над ним. А позже я ещё вернусь к тем ML-проектам.
Особенно мне хочется подключить Deno к WebGL. Как вы, наверное, знаете, Deno работает на V8, который, в свою очередь, является частью огромного мира софтовой инфраструктуры Chrome. В Chrome есть библиотека Angle, которая реализует WebGL. Подключиться к этому позволило бы Deno программировать GPU. А GPU необходимы для обучения моделей многих современных нейронных сетей. Я бы очень хотел, чтобы Deno обеспечил мне желаемый процесс работы с математическим программированием. Я считаю, что значительная часть задач в статистике и математике в целом сводятся к своего рода играм с данными, и это очень удобно делать именно с динамическими языками.
Вообще говоря, динамических языков в мире не так-то много, в особенности если говорить о популярных и быстрых. Так что JavaScript отлично подходит для определения модели. Во многих случаях вычисления будут перенесены на GPU, поэтому скорость динамического языка или вашего рантайма окажется не так уж и важна. В общем, я планирую рано или поздно вернуться ко всем этим вещам, но пока что моё внимание сосредоточено на Deno.
Дмитрий: Готов ли сейчас Deno для использования в продакшне? Известны ли вам интересные случаи реального использования Deno?
Райан: Мне кажется, у разных людей разный болевой порог. Если вы готовы жить с багами, нехваткой документации и меняющиеся API, то для некоторых задач Deno можно использовать хоть сегодня. Но в целом он пока что не готов к продакшну. Он сейчас в версии 0.3, а я обозначу как 1.0 ту версию, которую посчитаю подходящей для использования другими людьми. Это довольно масштабный проект, мы создаём новую платформу. Для этого нужно проделать много работы, и мы стараемся сделать её как следует. Впрочем, если вы хакер, не боитесь испачкать руки и оставлять issue или пулл-реквест при столкновении с проблемой — тогда это можно использовать.
Евгений: Что нужно добавить к Deno, чтобы компании начали использовать его в продакшне?
Райан: В случае с Deno мы ориентируемся на иные ситуации, чем с Node.js. Мы стараемся предоставить более низкоуровневый доступ к компьютеру. В частности, мы хотим, чтобы Deno можно было импортировать как Rust crate и чтобы его можно было встраивать в другие системы.
Предположим, у вас есть свой веб-сервер или бессерверная система, и вы хотите предоставить клиентам возможность исполнять JavaScript. Возможно, до уровня V8 вы при этом не хотите спускаться, сырой V8 вам предоставит немногое. Нужна некоторая инфраструктура, но полномасштабный рантайм, который может быть у кого-то на десктопном компьютере — это уже слишком. Мы надеемся покрыть этот «embedding»-сценарий. Мы всё ещё работаем над тем, как в таком случае должен выглядеть API. Также у нас есть проблемы с производительностью, за которыми мы следим. Нам надо предоставить документацию получше. В общем, есть над чем поработать.
Дмитрий: Одна из задач Deno — встроенная поддержка TypeScript. В последнее время TypeScript довольно широко распространился, многие компании стали его использовать не только в браузере, но и для Node.js. Я слышал, что люди из Node.js сore team тоже его хвалили. Как вы считаете, может ли TypeScript когда-нибудь заменить JavaScript в браузерах и обзавестись собственным рантаймом (возможно, с виртуальной машиной)?
Райан: Одно из преимуществ TypeScript в том, что он является надмножеством JavaScript, так что его не заменит. Что я действительно могу представить, так это что TypeScript попадёт в стандарты, и в JavaScript появятся опциональные типы, но произойдёт это ещё очень нескоро.
Динамические языки очень полезны для начального этапа разработки, например, когда прототипируешь что-то. Достоинство TypeScript (и идеи опциональных типов в целом) в том, что по мере постепенного созревания прототипа можно постепенно «закручивать» имплементацию, аннотируя код типами. Это не обязательно должно происходить одномоментно, так что сохраняется возможность двигаться очень быстро и очерчивать новые идеи на JavaScript.
Насчёт того, возможно ли использовать типы в виртуальной машине V8 для оптимизации рантайма, я не знаю. Звучит очень сложно, и у меня недостаточно компетенции сказать, будет ли здесь значимый выигрыш. В Deno мы используем компилятор TypeScript, реализованный на JavaScript. Можно представить Rust-имплементацию компилятора, которая транспилирует в JavaScript быстрее. Такое возможно, над этим работает проект swc.
Евгений: А сможет ли TypeScript заменить JavaScript? Предположим, в версии ES 2020 TypeScript будет объединён в один язык с JavaScript.
Райан: Да, типы вполне могут быть добавлены к стандарту. Кажется, TC 39 регулирует стандарты JavaScript? Насколько мне известно, пока что такая возможность не обсуждалась. Но думаю, до этого ещё долго, хоть это и возможно.
Евгений: А вы знакомы с Dart? Приходилось ли вам его использовать? Что вы о нём думаете?
Райан: Я пробовал его из любопытства, но это было уже давно. Цели Dart схожи с TypeScript — это динамический язык с необязательными типами. Как я уже говорил, это позволяет очень удобно организовать рабочий процесс. Но, в отличие от TypeScript, Dart не является надмножеством JavaScript, это другой язык. Возможно, из-за этого он распространяется значительно медленнее.
Правда, сейчас определённую популярность обрёл Flutter, так что, возможно, я тут отстал от жизни. Так или иначе, TypeScript удалось достичь той же цели без создания нового языка.
Когда появляется новый язык, ему легко вызвать любопытство, а вот добиться того, чтобы люди стали им пользоваться, значительно сложнее. Нужно, чтобы преимущества были очень весомыми. Например, я очень долго со скепсисом относился к Rust. Мне казалось, что всё, что он умеет, уже есть в C++, которым я активно пользуюсь. Лишь совсем недавно я познакомился с Rust поближе, и стало ясно, что для меня он легко может заменить C++. В общем, чтобы новый язык стал успешным, ему нужно быть на порядок лучше старого.
Евгений: С языками — как с машинами, всё равно иногда будешь ездить на автобусе.
Райан: Точно.
Евгений: При всей популярности TypeScript, JavaScript сейчас вообще повсеместно: на бэкенде, фронтенде, в мобильных устройствах, в React Native, Raspberry Pi и так далее. Судя по всему, у нас произошла революция, и появился один язык, способный делать всё. Действительно ли это так? Или всегда будут оставаться специальные языки для особых задач?
Райан: JavaScript как раз тем и интересен, что работает везде. Но тут стоит отметить, что пока многие воспринимают TypeScript отдельным языком, он компилируется в JavaScript. Так что, с моей точки зрения, TypeScript тоже работает везде. В общем, я согласен с вашим утверждением. Безусловно, в обозримом будущем JavaScript будет оставаться языком браузеров и множества устройств. Поэтому я и продолжаю им пользоваться — он даёт очень широкий спектр возможностей.
Дмитрий: А вам не кажется, что эта популярность JavaScript может быть к худшему? Веб сейчас стал обязательной платформой для любого сервиса, а JavaScript — единственный язык, на котором можно писать веб-сервисы в продакшн. Быть может, было бы лучше, если бы у нас был выбор, и все платформы не были заточены под один язык? Возможно, нам нужны разные виртуальные машины в браузерах?
Райан: Я думаю, именно этим вызвана популярность Wasm. На нём можно скомпилировать, скажем, Rust в код, который можно выполнить в браузере.
Это звучит потрясающе, но мне интересно, насколько хорошо это работает для языков со сборкой мусора или другими инструментами рантайма. Хотя технически может быть возможно использовать Python через Wasm для создания сайта, подозреваю, что результат будет громоздким и медленным. Думаю, тут покажет только опыт.
Дмитрий: То есть если я хочу использовать что-то вместо JavaScript, нужно учить язык, который можно транспилировать в Wasm?
Райан: Или в JavaScript. Дело в том, что у JavaScript есть сборщик мусора и много чего другого. Поэтому, если вы используете динамический язык, разумнее выглядит вариант транспилировать в JavaScript, чем компилировать в Wasm, а заодно компилировать весь ваш рантайм, включая сборщик мусора и прочее. Вам придётся вложить очень много ресурсов, хотя V8, вероятно, лучше справится со сборкой мусора. Но да, Dart компилируется в JavaScript, и на нём можно писать веб-сайты. Есть и другие языки, которые делают то же самое.
Дмитрий: Раз мы заговорили о разных языках, какой старый или новый язык вам кажется интересным для изучения в 2019 году?
Райан: Мне очень нравится Rust. В нём много интересных находок, например, идея единого изменяемого объекта. У него отличный компилятор, который даёт предельно оптимизированный код. Но разобраться в Rust весьма непросто. Мне понадобилось несколько месяцев, чтобы понять, что там происходит. В общем, Rust очень интересный язык, но отнюдь не универсальный.
Если вы просто пишете приложение, то, скорее всего, вы его будете писать не на Rust, а на чём-то более простом: Ruby, JavaScript или Python. Но есть некоторые ситуации, где Rust свою работу выполняет блестяще. Например, он отлично подходит для написания баз данных, веб-серверов или, в нашем случае, виртуальных машин. Он даёт полный контроль над всем, что происходит в вашем коде, но ценой сложности, которая оказывается открыта разработчику.
Rust — новое слово в написании низкоуровневого кода, у него есть существенные преимущества по сравнению с Go. У Go есть сборщик мусора, поэтому он отлично подходит для высокопроизводительных серверов, он лаконичный и писать на нём очень просто. Тем не менее, есть случаи, когда наличие сборщика мусора может быть минусом, а не плюсом. У Deno, например, такой случай. Мы оборачиваем V8, у которого уже есть сборщик мусора. Получилось бы два сборщика в одном процессе, и их взаимодействие может оказаться катастрофическим. V8 и так монструозно сложный сам по себе. В общем, для наших целей Rust прекрасно подходит. Будет интересно взглянуть, какие новые применения найдутся для Rust, когда его можно будет компилировать в Wasm.
Дмитрий: А что вы думаете о растущей популярности функциональных языков? Например, Elm для фронтенда, или Idris.
Райан: Я не пробовал ни тот, ни другой, так что о них ничего сказать не могу.
Евгений: А как насчёт функциональных языков в целом?
Райан: Функциональный стиль вполне неплох. Это не значит, что всё приложение должно быть состоять исключительно из map, reduce и тому подобного. Есть ситуации, когда в императивном стиле проще работать и его проще читать. В Rust и JavaScript очень удачно совмещены оба подхода, так что ограничивать себя только одним вовсе не обязательно. В конечном счёте CPU всё равно императивный, он работает на отправляемых ему инструкциях. Поэтому вполне разумно думать о коде в той же парадигме.
Евгений: А в каком стиле написан Deno? В объектно-ориентированном или функциональном?
Райан: Использованы оба. Всё зависит от конкретной цели, которую мы стараемся достигнуть.
Евгений: Мы уже обсудили, какие языки вы предпочитаете, а как насчёт инструментов? Какая ваша любимая IDE? Вы пишете на MacOS или на Linux?
Райан: Я пишу в vim, пользуюсь iTerm2, а мой компьютер — небольшой MacBook. Я много путешествую и из-за этого часто работаю на ноутбуке. В определённый момент я заметил, что после работы за большим монитором мне очень болезненно пересаживаться за ноутбук. Поэтому я приучил себя всё время работать за ноутбуком.
У меня дома стоит системный блок под управлением Linux, я подключаюсь к нему по SSH. Я довольно старомоден в выборе инструментов, в основном это UNIX-подобные вещи. Я использую LLDB для отладки.
Я работал в Visual Studio Code, но сейчас мы пишем свою собственную платформу, поэтому нет многих интеграций, которые привыкаешь ожидать от IDE. Обычно подобные вещи никак не связаны с тем, над чем я работаю, и в итоге меня всё это лишь отвлекает. Я привык работать с «голым кодом», это особенно удобно при разработке низкоуровневого софта. Думаю, если бы я писал сайт или приложение для популярной платформы, то использовал бы Visual Studio Code.
Евгений: В общем, вы программист старой школы.
Райан: Пожалуй, что да.
Евгений: Тогда следующий вопрос будет про школу. Судя по всему, базовые навыки программирования в ближайшем будущем будут изучаться в школе наряду с математикой, английским и другими предметами. Что вы об этом думаете? Быть может, в несколько более отдалённом будущем в школьную программу войдёт и машинное обучение?
Райан: Я занимаюсь программированием последние 15 лет, и за это время наше сообщество очень сильно выросло. В 2005 году мне казалось, что я пропустил всё самое важное, хотя по нынешнем меркам нас было ещё мало. А сейчас программисты повсюду. Очевидно, что программирование разрослось на большую аудиторию. Оно стало важным навыком для большого количества людей. И с учётом этого, да, программирование стоит преподавать в старшей школе. А вот про машинное обучение думаю, что для старшеклассников полезнее более фундаментальные вещи.
Мне кажется, что на уроках математики стоит более активно изучать статистику. В США в старшей школе ученики проходят алгебру, квадратные уравнения, начала матанализа, производные и тому подобное. Алгебра и матан занимают основную часть программы, а потом очень небольшая часть людей регулярно их использует. А вот уметь обрабатывать статистические данные требуется очень многим профессионалам.
Что касается машинного обучения, то оно пока что ещё на экспериментальной стадии. Вряд ли через десять лет там всё будет выглядеть так же, как сейчас — эта область слишком быстро меняется.
Евгений: Раз уж мы заговорили о подрастающем поколении, у нас в офисе где-то неделю назад была экскурсия из школы. Я говорил с ребятами, которым по 15 лет, и выяснилось, что один из них пробовал Python и Rust. Вы боялись, что опоздали в 2005 году, но, по-моему, новое поколение учится быстрее нас. У моих друзей трёхлетний ребёнок, который уже умеет искать ролики на YouTube и играть в игры. Мне кажется, я старею.
Райан: Мне тоже.
Евгений: Вам не кажется, что мы уже слишком старые и глупые для нового поколения?
Райан: Скорее всего, каждое поколение в определённый момент так считало. Наши родители точно так же думали про нас, когда мы были детьми. Но YouTube действительно многое изменил. Если меня вдруг заинтересовала физика, я могу там посмотреть лучшие лекции по этому предмету. Возможности для самообразования просто безграничные. Когда я был маленьким, у нас дома был набор энциклопедий, и когда я хотел что-то узнать, я искал ответ в них. А если в энциклопедии ответа не было, больше спросить было негде. Сейчас не так.
Дмитрий: В нашей отрасли важно всё время учиться, читать статьи, книги и так далее. Как вы с этим справляетесь? Можете что-нибудь посоветовать нам, старикам?
Райан: Мне кажется, что постоянно учиться нужно во всех технических отраслях, которые быстро развиваются. Ничего конкретного я посоветовать не могу, просто постоянно практиковаться. Я всегда говорю, что абстрактно с предметом не познакомишься, нужно написать проект. Если я кому-то просто расскажу про Rust, это не значит, что они теперь могут писать на Rust. У меня метод только один, и на самом деле это даже не метод: просто работать над своими проектами.
Дмитрий: Предположим, у меня есть проект, который я пишу в свободное время — как мне оценить мою работу? Я могу сделать что-то на Rust, но из моих коллег на нём больше никто не пишет. Что бы вы порекомендовали?
Райан: Даже не знаю. Познакомиться с кем-нибудь в сети?
Евгений: Это вариант. Но предположим, я начал проект на совершенно незнакомом мне языке, мой код однозначно будет жутким. Как сделать его лучше? Делать pull requests и тому подобные вещи? Как научиться работать с технологией, которую ты не знаешь?
Райан: Я тут не могу ничего посоветовать. Я сам в этих вещах не слишком силён.
Евгений: Нам действительно повезло в том плане, что у нас так много разных способов учиться. Мы уже обсудили YouTube, но помимо него есть много других медиа. Вы пользуетесь какими-либо из них? Что вы думаете о конференциях?
Райан: Конференции — вещь крайне полезная. Что касается YouTube, то я не смотрю там видео по программированию. Я читаю Hacker News и посты на Reddit, но главный источник информации для меня — всё-таки мои проекты. Правда, я уверен, что из-за этого много интересных технологий проходят мимо меня. Но видео по программированию на YouTube скорее ориентированы на новичков. Когда мне что-то бывает нужно, я открываю документацию. А вот по темам, в которых я не эксперт (например, по физике), я охотно смотрю видео с YouTube.
Евгений: А что вам кажется главным в конференциях?
Райан: Конференции очень полезны, и я всегда охотно на них хожу. Так получилось, что я всегда нахожу себе там собеседников, в особенности на конференциях по JavaScript. Лучший способ узнавать о новых технологиях — послушать доклад, а потом пригласить докладчика выпить пива. Они обычно с большим воодушевлением рассказывают о своей теме. Из таких разговоров и обсуждений в коридорах я чаще всего и узнаю о самых интересных вещах, в том числе о технологиях, про которые официально ещё ничего не заявлено. Так что я с нетерпением жду HolyJS. Сколько вы уже её проводите?
Дмитрий: Первый раз был в 2016 году, то есть три года.
Евгений: В другом интервью вы сказали, что писали NodeJS четыре года. Это очень большой промежуток времени. Как вам удавалось совмещать проект с работой? Это было ваше хобби? Есть ли у вас сейчас такое хобби?
Райан: Поначалу это действительно было хобби, но потом меня пригласили в Joyent. По большому счёту, мне позволили заниматься тем, что я и так уже делал, просто стали за это платить деньги. Сейчас меня интересует много вещей, не связанных с программированием, но код я пишу только для Deno, это очень большой проект. Правда, у меня есть своего рода подпроекты внутри Deno.
Евгений: А если не секрет, какими именно вещами за пределами программирования вы интересуетесь?
Райан: Я подумываю о том, чтобы ближе познакомиться с физикой, там много всего любопытного. Но в этом я, конечно, дилетант, специально я её не изучал. Ещё нравится читать и смотреть видео про машиностроение, металлообработку. Опять-таки, я сам никогда этим не занимался, но меня поражает то, какие мощные машины людям удаётся создать. Думаю, мой интерес к этому вызван сходством с программированием. Конечно, там всё происходит в физическом мире, но инженерам точно так же приходится решать задачи, проектировать, создавать инструменты для создания инструментов, делать точные измерения и так далее. Можно сказать, машиностроение — это физическое воплощение софта…
Евгений: Вроде того, чтобы поместить двигатель V8 в Volkswagen Beetle?
Райан: Именно так!
Евгений: Значит, мы снова вернулись к V8.
Райан: Во всех этих вещах я дилетант, я ничего про них не знаю, мне просто нравится о них читать. По большому счёту, в мире машинного обучения я тоже дилетант. Я немного исследовал эту тему, но далеко не так глубоко, как те, кто защитил на этом диссертацию.
Евгений: Давайте поговорим об опенсорсе. Есть ли смысл разработчику писать опенсорсный софт? Чаще всего мы его пишем просто потому, что это интересно. И всё же всегда хочется, чтобы твой проект был успешным. Есть ли для вас смысл этим заниматься?
Райан: Конечно, есть. Я всю мою карьеру занимался опенсорсными проектами, и мне очень нравится этот мир. В нём можно познакомиться и подружиться с отличными людьми со всего света. Этот аспект сейчас часто упускается из виду, потому что наша отрасль сильно выросла и в ней появились гиганты вроде Facebook и Google, которые вызывают у людей массу негатива. Но я по-прежнему верю в идеал опенсорса, в идеи в духе Ричарда Столлмана — о том, что мы строим более совершенный мир. Это бесплатный софт, который каждый может взять и использовать как хочет. Это делает сложные и интересные технологии доступными людям, и за них не нужно платить огромные суммы денег. Для меня это по-прежнему является тем, к чему хочется стремиться.
Евгений: Десять лет тому назад в IT работало значительно меньше людей, это был своего рода «закрытый клуб» для тех, кого увлекала технология. Сейчас он превратился в отрасль, и в ней множество новых людей. Есть ли у вас ощущение, что из частного клуба IT стал обычной работой, с маркетингом и прочими вещами?
Райан: Я не думаю, что это было «закрытым клубом» — он был вполне открытым, туда принимали всех желающих. Сейчас с некоторыми проектами у меня действительно возникает ощущение, что я просто работаю. Уверен, вы знаете, о чём я говорю. Но я просто стараюсь таких проектов избегать, перестаю на них работать. Поэтому я всё время занимаюсь интересными вещами.
Евгений: Ваш подход мотивирует. Я согласен, что программирование — это открытый клуб, и лучший способ в него попасть — это конференции. Даже если человек сам не программирует, всегда можно прийти и послушать доклад. Что для вас самое главное на конференциях?
Райан: Техническое содержание выступлений. Мне нравится вникать в подробности того, как устроены новые технологии. И в этом очень помогают личные разговоры после докладов.
Евгений: Последний вопрос. Как я понимаю, это будет ваша первая поездка в Россию?
Райан: Совершенно верно. Я жду её с нетерпением.
Евгений: Какие ваши ожидания от страны, от города, от конференции?
Райан: У меня стереотип, что российские программисты очень хардкорные. Возможно, это из-за того, что один из моих друзей — хардкорный программист из России. В общем, мне будет интересно к вам съездить и посмотреть на ваш город — говорят, он очень красивый.
Евгений: А мы будем рады послушать ваш доклад на конференции HolyJS 2019 в Санкт-Петербурге. Спасибо большое, что уделили нам время!
Райан: Спасибо вам, было здорово.
На майской HolyJS Райан ещё больше расскажет про Deno: он откроет мероприятие своим выступлением «Deno, a new Way to JavaScript». А кроме этого, на конференции будут десятки других докладов.
Из-за высокого спроса мы закрыли продажи билетов для личного посещения, но остаются доступными Online-билеты (дают доступ к онлайн-трансляции всех докладов во время конференции и к их видеозаписям после неё). Так что, даже если 24-25 мая у вас не получится оказаться в Петербурге, посмотреть выступления Райана и других всё равно возможно.