Недавно я провел прекрасную неделю в Ванкувере, слушая разговоры и болтая с некоторыми фантастическими разработчиками Javascript со всего мира. Я впервые посетил конференцию Node + Javascript Interactive 2018; мероприятие было направлено на объединение специалистов по сопровождению, конечных пользователей, поставщиков и компаний, направленных на развитие экосистемы Node.js и Javascript.

Это был действительно классный опыт, вдобавок ко всему, это был мой первый визит в Канаду, который проводился в одном из лучших конференц-центров в мире. И я ушел с мероприятия, чувствуя себя глубоко вдохновленным и уверенным в проектах Node.js, Javascript и сообществе, стоящем за ними.

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

Бессерверность, безопасность, диагностика, машинное обучение и Интернет вещей - вот лишь некоторые из множества различных тем, которые были рассмотрены в Node + Js Interactive.

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

Город

Я не понял, когда наткнулся на канадцев, которые живут в Ванкувере и шутят о том, что они живут в иглу. Чудо сразу же появилось, когда мы с друзьями приземлились в международном аэропорту Ванкувера. Это были самые жаркие часы дня, и температура всего 13 ° C.

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

Недалеко от моего отеля есть общественный парк Stanley Park. Это было грандиозно. Я серьезно, это было похоже на гигантский парк стероидов. Дорожка вокруг парка - самая длинная в мире непрерывная набережная. Из-за вида на побережье с одной стороны и лес с другой было сложно сдержать побуждение не бежать через него.

Все еще адаптируясь к новой погоде, я сначала не был уверен в себе. Учитывая, что я никогда не бегал на длинные дистанции в такую ​​погоду, я, честно говоря, не знал, был ли это мудрый выбор или глупый 😂. Но я подумал: «К черту, давай сделаем это», потом я охнул, взял кроссовки, потянул быка за рога и все равно побежал.

Зато получился настоящий восторг… 😃

Место проведения

Мероприятие проходило в Ванкуверском конференц-центре, одном из крупнейших конференц-центров Канады. В здании размещался Международный центр вещания зимних Олимпийских игр 2010 года и Зимних Паралимпийских игр 2010 года.

Он был огромным и красивым, конференц-зал был просторным, Wi-Fi адекватным, и персонал был услужливым. И прямо у входа есть гигантская пиксельная статуя дельфина:

Переговоры

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

При этом я все еще был засыпан таким большим количеством отличного контента, что вот некоторые из моих основных моментов.

Вступительное слово

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

Программисты не любят людей?… Или нет?

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

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

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

Она начала объяснять, почему этот вопрос так важен. Вот мои основные выводы:

  • В индустрии программного обеспечения много страданий: стрессы и выгорание, «нехватка талантов», отсутствие разнообразия, плохой UX, неэтичные продукты, неудачные проекты и т. Д.
  • Мы недостаточно заботимся о людях,
  • Сострадательное программирование: сознательный бизнес, привносящий эмоциональный интеллект и этику в технологическую отрасль посредством обучения, коучинга, консультирования, устной речи и письма.
  • Определение сострадания: «Чувство, которое возникает, когда вы сталкиваетесь с чужим страданием и чувствуете мотивацию облегчить это страдание»,
  • Преимущества сострадания: радость, стойкость, душевное спокойствие, удовлетворение от работы и меньшая вероятность выгорания.

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

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

Создание отличного интерфейса командной строки в Node

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

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

Интерфейсы командной строки являются мощными, потому что они могут предоставить:

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

Некоторые принципы, которые следует учитывать при создании следующего приложения CLI:

  1. Важно иметь надлежащую справочную документацию,
  2. Предпочитайте флаги аргументам,

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

Например, в интерфейсе командной строки Heroku есть команда heroku fork. Требовалось исходное приложение для копирования и целевое приложение для копирования. Изначально здесь использовались флаг и аргумент вроде этого:

$ heroku fork FROMAPP --app TOAPP

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

$ heroku fork --from FROMAPP --to TOAPP

3. Убедитесь, что вы можете получить версию интерфейса командной строки одним из следующих способов:

$ mycli version # multi only
$ mycli --version
$ mycli -V

4. Следите за потоками.

5. Постарайтесь исправить ошибки, сделав свои ошибки информативными,

6. Будьте фантазией! : D

7. Делайте подсказки, если можете.

8. Используйте таблицы для получения выходных данных.

9. Интерфейсы командной строки должны запускаться быстро. Используйте $ time mycli для тестирования вашего интерфейса командной строки.

  • ‹100 мс: очень быстро (к сожалению, это невозможно для языков сценариев)
  • 100–500 мс: достаточно быстро, цельтесь сюда
  • 500 мс-2 с: можно использовать, но никого не впечатлит
  • 2s +: вялый, пользователи предпочтут избегать вашего интерфейса командной строки на этом этапе

10. Поощряйте взносы, держите свой код открытым.

11. Четко объясните подкоманду.

12. Следуйте спецификации XDG.

От скобок к восприятию: как ваш код становится чужой реальностью

Дженна Зейген отправила нас в увлекательное путешествие по тому, как код превращается в нейроны, запускаемые в чужом мозгу. Уникальная часть этого выступления состоит в том, что слайды содержат тексты песен, которые так или иначе отражают идеи каждого слайда. Я не понимаю, как она это сделала.

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

Слайды доступны здесь.

Математика в JavaScript может быть потрясающей

Доминик Крамер открыл мне глаза на другой способ рассматривать математику в Javascript. Мы знаем, что TensorFlow.js (js.tensorflow.org) - мощные инструменты для использования машинного обучения в JavaScript. Однако их возможности выходят за рамки машинного обучения.

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

Создайте привлекательное мобильное приложение с Vue и NativeScript

Jen Looper представила информативный доклад о Nativescript. Если у вас есть веб-сайт, созданный с использованием Vue.js, с помощью этой платформы вы можете еще больше привлекать пользователей через собственное мобильное приложение с использованием той же технологии.

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

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

  • Внедрение Vue 2.0 виртуальной модели DOM обеспечивает нативный мобильный рендеринг (Angular 2+ аналогичен),
  • Vue предлагает веб-разработчикам отличный способ освоить мобильные платформы с помощью NativeScript или Weex,
  • Vue легкий, поэтому отлично подходит для мобильных устройств,
  • NativeScript и Vue обладают большим потенциалом совместного использования кода

Также интересны вопросы и ответы в конце беседы, например:

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

Есть и другие разговоры о Vue, но я не мог смотреть из-за нехватки времени, например:

  • Точка реакции Vue - Дивья Сасидхаран, Lucro Global LLC [презентация],
  • Мастерская Vue Vixens - Джен Лупер, Progress

GraphQL - ускоренный

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

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

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

Машинное обучение в браузере с deeplearnJS

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

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

Код, представленный в докладе, доступен здесь, на Github.

Стандартизация JavaScript - взгляд на Ecma и TC39

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

Выступление привело нас к краткой истории Javascript и введению в Ecma, орган стандартизации, где хранятся спецификации JavaScript и его усилия по стандартизации, что означает создание и внедрение открытых стандартов, а также описание роли и влияния TC39 на мир веб-стандартов. .

Джори Берсон открыл мне глаза на то, что то, как мы создаем технологии, так же важно, как и сама технология.

NPM и будущее Javascript

Лори Восс провел фантастический доклад о своих идеях, которые он собрал, изучая данные НПМ. У NPM более 10 миллионов пользователей, и они загружают 7 миллиардов пакетов в неделю. В своем выступлении он заявил, что это дает им больше данных о том, что делают пользователи JavaScript и куда движется сообщество, чем кто-либо другой.

Он представил доклад в трех частях:

  1. Что нужно знать о npm,
  2. Что npm знает о вас, и
  3. Будущее JavaScript

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

  • React замедляется,
  • Angular видит меньше загрузок,
  • Vue, скорее всего, станет следующей большой вещью (?),
  • Количество библиотек GraphQL растет,
  • Уроки истории: ничто не вечно,
  • Если люди начнут повторно использовать модули React, React будет жить вечно,
  • Веб-компоненты были бы прекрасны, если бы они работали, но пока нет ...

А вот несколько советовавшихся прогнозов на 2019 год:

  • Изучите GraphQL,
  • Вы будете связать, транспилировать и линтовать довольно долго,
  • Используйте машинописный текст,

Но что бы ни случилось дальше, будущее выглядит весело; D

Оптимизация производительности для прогрессивных веб-приложений

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

Наконец, он также рассказал о том, как создать собственный PWA с сервис-воркерами и установками приложений. Слайд доступен здесь https://bit.ly/2kYFOjk.

Некоторые другие доклады, которые также касались темы Progressive Web Apps:

  • Кросс-платформенные прогрессивные веб-приложения - от Саймона Макдональда, Adobe [слайды]
  • Преодоление разрыва между дизайнером и разработчиком, издание PWA - Антуанетт Янус, PBS Kids [слайды]

Оптимизируйте эффективность полезной нагрузки JSON в 10 раз

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

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

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

Еще один разговор, который также связан с масштабированием темы:

  • Искусство создания масштабных проектов Node.js - Раймон Фенг, IBM [слайды]

Масштабирование Webpack до тысяч одновременных сборок

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

В этом выступлении были рассмотрены проблемы (и решения) для масштабирования webpack и npm install до тысяч ежедневных сборок с высокими всплесками параллелизма в часы пик.

Быстрые переговоры

Перед заключительным словом у нас были «быстрые переговоры», это были 10-минутные беседы на самые разные темы.

Развитие кодекса, уверенности и сообщества

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

Управление Tesla Model 3 из Node.js

Затем, и мой любимый быстрый доклад был Алексом Ройтманом, продемонстрировавшим управление Tesla Model 3 с помощью Node.js и планшета.

JavaScript: внедрение и использование на предприятии

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

И, наконец, у нас был Гарт Хансен, который привел нас к рассмотрению некоторых препятствий, которые JavaScript преодолел, чтобы достичь своего текущего уровня принятия. А также обзор архитектуры и инструментов JavaScript, которые сегодня используются в The Walt Disney Company.

Последние мысли

Я подумал, что конференция прошла отлично. В нем участвовали великолепные спикеры, были привлечены спонсоры, и на нем собралось фантастическое сообщество - чего еще вы могли желать!

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

Некоторые другие выводы, которые могут быть полезны, если вы собираетесь на конференции относительно рассадки:

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

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

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

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