Недавно я провел прекрасную неделю в Ванкувере, слушая разговоры и болтая с некоторыми фантастическими разработчиками 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:
- Важно иметь надлежащую справочную документацию,
- Предпочитайте флаги аргументам,
Интерфейс командной строки может принимать два типа входных данных оболочки: флаги и аргументы. Флаги требуют немного большего набора текста, но делают интерфейс командной строки более понятным.
Например, в интерфейсе командной строки 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 и куда движется сообщество, чем кто-либо другой.
Он представил доклад в трех частях:
- Что нужно знать о npm,
- Что npm знает о вас, и
- Будущее 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 за спонсирование моей поездки на это замечательное мероприятие.
И я также хотел бы порекомендовать другим технологическим компаниям сделать то же самое, дав возможность своим инженерам тесно сотрудничать с известными инженерами отрасли по всему миру. Я думаю, что это раскрасит наше местное сообщество в Индонезии и улучшит нашу техническую культуру во многих отношениях в долгосрочной перспективе.