- PVSM.RU - https://www.pvsm.ru -

Бесплатная YouTube-трансляция DotNext 2017 Moscow: Перформанс .NET, AI, микросервисы и немного F#

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

И кстати, у нас есть для вас одна такая. В это воскресенье и понедельник проходит DotNext 2017 Moscow — крупнейшая в России конференция, посвященная разработке на платформе .NET. Три десятка спикеров выступят с докладами о настоящем и будущем платформы .NET, об оптимизации производительности и многопоточности, о внутреннем устройстве платформы .NET и CLR, о профилировании и отладке .NET-кода, и так далее.

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

Бесплатная YouTube-трансляция DotNext 2017 Moscow: Перформанс .NET, AI, микросервисы и немного F# - 1

Changelog

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

И мы действительно многое улучшили. В последнее время прошло несколько конференций, таких как Joker [1], DevOops [2], SmartData [3], технология обкаталась, и сейчас на DotNext 2017 Moscow [4] можно будет наблюдать текущий этап эволюции:

  • Улучшенное качество звука. Микрофоны правильно стоят и лучше работают, продумана акустика зала, решены мелкие технические проблемы;
  • Видео в 1440р — дополнительное пространство используется для одновременного отображения спикера и FullHD слайдов (или экрана ноутбука для live coding) в на одном экране;
  • Инфраструктура для работы с видео переехала в облако, что понизило вероятность отказов оборудования. (На самом деле, в основном, этим занимаются в SBTG.ru [5], которые помогают в записи конференции, а мы только пожинаем плоды их работы);
  • В перерывах между докладами, когда спикеры и участники на площадке удаляются в дискуссионные зоны, зрителям онлайн-трансляции мы показываем репортажи и интервью со спикерами и спонсорами. На этот раз интервью должны быть живее, вести их будут два ведущих (@phillennium [6] и @olegchir [7] — наши посты вы можете регулярно видеть на Хабре);
  • Решено много мелких технических проблем, которые большинство даже не заметило, но они там были. В целом, ощущение от просмотра трансляции должно быть лучше.

Как подключиться

Просто сохраните себе эти ссылки на YouTube. Обратите внимание, два дня — две разные ссылки:

День первый, 12 ноября, воскресенье

День второй, 13 ноября, понедельник

Доступные материалы

В открытой трансляции доступен только первый зал, включая открывающий [8] и завершающий [9] кейноут.

Отдельный вопрос в том, как формировалась программа этого зала. Конечно, мы используем ConfPlanner [10], созданный при участии Владимира Ситникова [11]. ConfPlanner работает на основе OptaPlanner [12] и автоматически пытается сделать так, чтобы все непосредственные участники конференции попали на те доклады, которые они указали в опросе. Но тем не менее, результаты работы автоматики творчески анализируется организаторами, исходя из понимания, что первый зал будут смотреть участники открытой трансляции. У последовательности докладов первого зала есть своя собственная внутренняя логика.

Вопросы участников (тех, кто смотрит бесплатно — тоже) учитываются, задавать их можно в официальном телеграм-канале [13] конференции. Разобраться с Telegram рекомендуется заранее. Вот прямо сейчас пойдите и установите [14] его!

Ограничения

  • Трансляция предоставляется по принципу as is: мы уверены, что все будет хорошо, но если вдруг что – не обессудьте!
  • Видеозаписей не будет. То есть они, конечно, будут, но только для участников конференции, оставивших фидбэк. А для всех остальных мы традиционно выложим их через 3-4 месяца.
  • Вы не сможете смотреть, что происходит в других залах. А там будет много интересного. В следующий раз регистрируйтесь и смотрите все без ограничений.

Программа

День первый, 12 ноября, воскресенье

Кейноут: Поговорим про performance-тестирование [8]

Андрей DreamWalker [15] Акиньшин, JetBrains

Бесплатная YouTube-трансляция DotNext 2017 Moscow: Перформанс .NET, AI, микросервисы и немного F# - 2 У кейноута есть несколько целей, в том числе — передать дух и суть того, что будет твориться ближайшую пару дней. Этот доклад будет посвящен типичным проблемам тестирования производительности и возможным подходам к их решению. Андрей Акиньшин работает над проектом Rider [16], является мантейнером BenchmarkDotNet [17] и вообще — знает толк в микрооптимизациях.


Побеждая инъекции [18]

Владимир VladimirKochetkov [19] Кочетков, Positive Technologies

Бесплатная YouTube-трансляция DotNext 2017 Moscow: Перформанс .NET, AI, микросервисы и немного F# - 3 Второй доклад про безопасность, и он имеет точно такую же практическую направленность. Рекомендуем прочитать на сайте [18] биографию спикера чтобы понять — это лучший эксперт в области безопасности и очевидный кандидат для общения в дискуссионной зоне после доклада.

Доклад посвящен проблеме уязвимостей .NET-приложений к атакам инъекций в языки различных грамматик (HTML, JavaScript, URL, SQL, Path и т.п).

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

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


From dependency injection to dependency rejection [20]

Mark Seemann, blog.ploeh.dk [21]

Бесплатная YouTube-трансляция DotNext 2017 Moscow: Перформанс .NET, AI, микросервисы и немного F# - 4 У функционального программирования есть одна большая проблема — о нем очень непросто рассказывать. Попытки донести людям что-то с использованием терминов типа «зигохистоморфный препроморфизм» легко сводят неподготовленного слушателя с ума.

Марк — автор популярной книги Dependency Injection in .NET [22], автор бесчисленных блог-постов [21], и спикер на таком количестве конференций, что ему пришлось завести публичное расписание [23] на своем сайте. Причем рассказывает он каждый раз все больше и больше нового. Если кто и может рассказать о ФП, так это он.

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

В этом докладе Марк рассмотрит применение dependency injection в классическом объектно-ориентированном дизайне и объяснит, почему его необязательно (даже нежелательно) использовать в функциональном программировании. Следом за этим будет наглядно показано, как использование приемом функционального программирования устраняет необходимость в использовании моков и стабов в модульном тестировании, и позволяет полностью выбросить мусор из прямого перечисления зависимостей.


 High performance Networking in .NET Core [24]

Karel Zikmund, Microsoft

Бесплатная YouTube-трансляция DotNext 2017 Moscow: Перформанс .NET, AI, микросервисы и немного F# - 5 В топе, посвященном производительности, есть два доклада про производительность сети.

Первый из них ведет англоязычный спикер Karel Zikmund, известный тем, что является Software Engineering Manager в командах .NET Framework team и .NET Core, и является менеджером CoreFX по направлениям Networking, Crypto, Collections, Process, и т.п.

Karel расскажет об архитектуре и конкретной реализации сетевого стека .NET Core, в особенности — о производительности и переносимости. Будут освещены следующие темы:

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

Искусственный интеллект и нейросети для .NET-разработчиков [25]

Дмитрий shwars [26] Сошников, Microsoft

Бесплатная YouTube-трансляция DotNext 2017 Moscow: Перформанс .NET, AI, микросервисы и немного F# - 6 Искусственный интеллект сейчас является одной из самых обсуждаемых тем и главным двигателем цифровой трансформации бизнеса. Стратегия Microsoft в области ИИ включает в себя демократизацию ИИ для разработчиков, т.е. предоставление простых в использовании фреймворков и сервисов для решения интеллектуальных задач.

Дмитрий —  технологический евангелист компании Майкрософт,  специализирующийся в области интернета вещей, в разработке универсальных приложений Windows и в области функционального программирования.

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


I have a microservices architecture and I didn't know [27]

Dino Esposito, JetBrains

Бесплатная YouTube-трансляция DotNext 2017 Moscow: Перформанс .NET, AI, микросервисы и немного F# - 7 Как вы уже знаете, микросервисы — вертикальные слои функциональности, независимые друг от друга с точки зрения технологий, парадигм, и даже, в какой-то мере — данных. Как и любой другой изолированный модуль, микросервис можно легко заменить или переписать, или даже горизонтально масштабировать без риска возникновения регрессий. Микросеврисы могут являться слабосвязанной частью распределенной архитектуры, но их можно использовать и по-отдельности, сами по себе. У такой архитектуры множество плюсов, и не так много минусов. Что важнее, она встречается гораздо чаще, чем об этом принято говорить. «Микросервисы» — это просто специальное название для чего угодно, что не является хорошо проработанной, всеобъемлющей системой.

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

Дино — известный тренер, консультант и евангелист, CTO быстро развивающейся IT-компании. Он написал множество известных книг для Microsoft Press. Этот доклад продолжает славную традицию, по которой Дино рассказывает, как правильно превозмогать весь этот беспорядок, который мы сами наворотили.

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


День второй, 13 ноября, понедельник

Debugging and Profiling .NET Core Apps on Linux [28]

Sasha goldshtn [29] Goldshtein, Sela Group

Бесплатная YouTube-трансляция DotNext 2017 Moscow: Перформанс .NET, AI, микросервисы и немного F# - 8 В нашей хардкорной «низкоуровневой» секции есть два доклада, касающихся отладки. И оба — про кроссплатформенные приложения.

Первый доклад ведет Саша Гольдштейн — выдающийся перфоманс-инженер, неизменно занимающий топовые позиции на всех конференциях, где бы он ни выступал. Мы несколько раз брали у него интервью, советую ознакомиться: пара видеозаписей 2015 года [30]видеозаписи 2016 года [31]интервью о работе с перфомансом [32] и обзор инструментов .NET перфоманс-инженера [33].

В этом докладе Саша расскажет примерно о следующем. Представьте, что-таки удалось запустить на Linux ваше любимое ASP.NET-приложение или даже что-то с консольным интерфейсом. Что дальше? Счастливый конец? О, нет. По факту, придется встретиться с утечками памяти, странными падениями, проблемами с производительностью и многими другими неприятностями — и что делать, когда всё это происходит на продакшне? На Windows у нас есть куча интересных инструментов, но в Linux они работать не будут, и простых альтернатив пока не существует. В этом докладе Саша расскажет о том как сейчас выглядит отладка и профилирование приложений .NET Core на Linux. Как проводить расследования с помощью perf, как LTTNG используется в качестве замены для событий ETW, как собирать и понимать трейсы LTTNG, и многое другое. Саша расскажет о сборе core dumps, и как достать из них интересную для .NET-разработчика информацию с помощью lldb и SOS. Этот доклад будет очень непростым путешествием сквозь дебри недоделанных утилит и особой магии командной строки, но в конце концов мы приедем к счастливому концу! (но это не точно).


Patterns for high-performance C#: from algorithm optimization to low-level techniques [34]

Federico Lois, Corvalius

Бесплатная YouTube-трансляция DotNext 2017 Moscow: Перформанс .NET, AI, микросервисы и немного F# - 9 В этом докладе мы рассмотрим техники и паттерны, используемые для написания высокопроизводительного кода — начиная с анализа и вплоть до конкретного воплощения оптимизации. Разберемся, как понять, какие оптимизации нужно использовать, и какие проблемы обычно возникают при оптимизации кода базы данных. Многие из этих приёмов были придуманы и заполированы до зеркального блеска при разработке RavenDB 4.0 — свежей версии NoSQL движка для платформы .NET. RavenDB — это довольно сложная штука, в которой оптимизации давно идут на наносекунды, и оптимизировать приходится по времени, IO и процессору одновременно. Большинство обсуждаемых в этом докладе приемов можно применить где угодно, вне зависимости от языка или фреймворка.

Федерико прошел большой путь, чтобы иметь возможность рассказать о своих открытиях. Он не только является сооснователем компаний Corvalius и Codealike, но и реально работал над перфомансом алгоритмов последние десять лет, в качестве железа используя как CPU, так и всевозможное хитрое железо вроде GPU. Это человек, которого не пугает работа с бинарными данными, регистрами и низкоуровневой оптимизацией, и одновременно увлеченный технологиями параллелизма и современной компьютерной графикой. В общем, если кто и может рассказать доклад о низкоуровневых оптимизациях на C#, то это именно он.


Runtime code generation techniques in real life scenarios [35]

Raffaele Rialdi, Vevy Europe

Бесплатная YouTube-трансляция DotNext 2017 Moscow: Перформанс .NET, AI, микросервисы и немного F# - 10 Генерация кода в рантайме — очень мощная и хорошо изученная техника, но многие разработчики все еще неохотно её используют. Обычно изучение Expression Trees [36] начинают с какого-нибудь простого примера типа создания предиката (фильтра) или математического выражения. Но не Expression Trees единым жив .NET разработчик. Совсем недавно появилась возможность генерировать код, используя сам компилятор — это делается с помощью API библиотек Roslyn/CodeAnalisys, предоставляющих, кроме всего прочего, еще и парсинг, обход и генерацию исходников.

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

Рафаэль — практикующий архитектор, консультант и спикер, имеющий MVP в категории Developer Security начиная с 2003 года, который прямо сейчас занимается бэкендами enterprise-проектов, специализируясь на генерации кода и кроссплатформенной разработки для C# и C++. Иначе говоря, Рафаэль именно тот человек, которому в дискуссионной зоне можно задать почти любой вопрос про кодогенерацию, и не только про .NET, и с большой вероятностью он ответит.


Life, liberty and the pursuit of APIness: the secret to happy code [37]

Dylan Beattie, Spotlight

Бесплатная YouTube-трансляция DotNext 2017 Moscow: Перформанс .NET, AI, микросервисы и немного F# - 11 Это будет весьма философский, и вместе с тем — сугубо практический доклад. Его будет вести Dylan Beattie — человек с таким количеством рабочих достижений и интересных проектов, что полный список проще прочитать на нашем сайте [37]. В контексте доклада интересно, что Дилан — системный архитектор, который прямо сейчас занимается вопросами построения сложных современных распределенных приложений, и соответственно — вопросами разработки правильных API для них. А еще он, наверное, сыграет нам на гитаре, на вечеринке после первого дня DotNext вместе с Вагифом.

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

Осознаем мы или нет, каждый раз при создании новых программ мы создаем и user experience. Люди будут взаимодействовать с нашим кодом — как конечные пользователи, или может быть — как члены команды разработки. А может быть, они — разработчики мобильного приложения, использующие твое API, или это кто-то кому нужно ехать в ночь, чтобы исправлять возникшие проблемы. Со стороны это может казаться совершенно разными кейсами, но на самом деле у них есть кое-что общее. Дилан называет это словом «discoverability». (Я специально не перевожу это слово, потому что доклад все равно будет на английском языке, а в английском языке оно имеет больше значений, чем русский эквивалент «понятность»).

В этом докладе Дилан обрисует идеи и открытия, касающиеся user experience, дизайна API, психологии и психологии обучения, и покажет как можно интегрировать идею discoverability на всех архитектурных уровнях приложения. Будут иллюстрации на настоящих больших проектах, с объяснениями, как discoverability работает с различными парадигмами взаимодействия. Неважно, создаете ли вы базы данных или системные библиотеки, hypermedia API или мобильные приложения — однажды случится момент, когда кто-то начнет взаимодействовать с вашим кодом — и когда это произойдет — лучше чтобы они остались довольны, верно?


Провайдеры типов без боли и магии [38]

Роман nevoroman [39] Неволин, EPAM

Бесплатная YouTube-трансляция DotNext 2017 Moscow: Перформанс .NET, AI, микросервисы и немного F# - 12 Newtonsoft.Json — самый популярный пакет в NuGet. А рядом с ним, на третьем месте, — Entity Framework. Пожалуй, это неплохо демонстрирует, насколько часто .NET разработчики обрабатывают разнообразные данные. И для каждого типа данных — своя библиотека, а еще куча классов-оберток, которые приходится писать ради получения всех благ строгой типизации. И делать это нужно для каждого нового источника данных.

Однако F# предлагает нам другое решение вечной проблемы — провайдеры типов. Решение, которое позволяет максимально упростить работу с любыми типами данных, избавиться от написания и сопровождения классов оберток, а заодно и решить совсем другие проблемы, вроде рисования сложных графиков и работы с нейронными сетями средствами F#.

Если вы хотите узнать, как использовать провайдеры типов, какие проблемы они решают, как работают и как написать собственный провайдер для ваших задач, — приходите на этот доклад!

Знание F# не обязательно. Роман занимается исследованиями в области Machine Learning и разработкой собственных инструментов машинного обучения, поэтому умеет простыми словами объяснять сложные вещи.


Завершающий кейноут: Unchain my heart [9]

Dino Esposito, JetBrains

Бесплатная YouTube-трансляция DotNext 2017 Moscow: Перформанс .NET, AI, микросервисы и немного F# - 13 Представим себя в 2048 году. Что будет считаться искусством? Как мы будет заниматься привычными делами, как будем делать бизнес?

Дино расскажет нам историю — вымышленную историю — которую можно считать научной фантастикой. Или особой сотовой фантастикой. В 2008 году один парень сделал Bitcoin. Чтобы управлять Bitcoin, нужно использовать общий реестр — Blockсhain. Блокчейн — это публичный реестр для транзакций — в перспективе, транзакций любого типа. Представьте, что кто-то пошел дальше, на парочку уровней. Блокчейн распространился по миру, и стал основой для совершенно всего. Банки, нотариусы, органы государственного управления — короче, любые сторонние удостоверяющие органы — оказались на грани катастрофы.

Представьте, что в 2048 году весь мир оказался целиком основан на Блокчейне, и любая транзакция в нём видна, отслеживаема и проверяема кем угодно. Представьте мир, в котором люди одеваются в одежду, прочипованную RFID, подключенными к Блокчейну. За любым твоим шагом тоже следят (кстати, сейчас в 2017 они следят тоже!). Твое местоположение всем хорошо известно, все действия я записаны. Представьте мир, в котором компьютеры занимаются большинством наиболее нудных задач, которые ты когда-либо встречал в жизни — они делают за тебя решения, ведут за тебя машину, заказывают за тебя билеты на самолет, покупают для тебя разные вещи — и даже пишут за тебя программы.

Представьте мир, в котором только мысли и сны всё действительно твои, и они — единственная приятная вещь, которая у тебя еще есть. (Нет, я не думаю, что компьютеры будут заниматься за тебя сексом, даже в 2048!). Это будет утопия или анти-утопия? Мир без обмана, зависти и преступлений. Полный честности, свободы, любви. (И да, свободная любовь — типа той, о которой хиппи мечтали в 70х, но гораздо лучше). Время покажет, и время летит очень быстро.

Автор: Олег Чирухин

Источник [40]


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/c-2/267962

Ссылки в тексте:

[1] Joker: https://jokerconf.com/

[2] DevOops: https://devoops.ru/

[3] SmartData: https://smartdataconf.ru/

[4] DotNext 2017 Moscow: https://dotnext-moscow.ru/

[5] SBTG.ru: http://sbtg.ru/

[6] @phillennium: https://habrahabr.ru/users/phillennium

[7] @olegchir: https://habrahabr.ru/users/olegchir

[8] открывающий: https://dotnext-moscow.ru/2017/msk/talks/6a4afxs2sqmwws0yuoc06s/

[9] завершающий: https://dotnext-moscow.ru/2017/msk/talks/kjv46xmfskuq4eaaggyew/

[10] ConfPlanner: https://github.com/vlsi/confplanner

[11] Владимира Ситникова: https://jokerconf.com/#257Ie5gZvKGke0yy8ee8Is

[12] OptaPlanner: http://www.optaplanner.org/

[13] официальном телеграм-канале: https://t.me/dotnextconf

[14] пойдите и установите: https://telegram.org/

[15] DreamWalker: https://habrahabr.ru/users/dreamwalker/

[16] Rider: https://www.jetbrains.com/rider/

[17] BenchmarkDotNet: https://github.com/dotnet/BenchmarkDotNet

[18] Побеждая инъекции: https://dotnext-moscow.ru/2017/msk/talks/7alwdnxp0kayquoukwmky8/

[19] VladimirKochetkov: https://habrahabr.ru/users/vladimirkochetkov/

[20] From dependency injection to dependency rejection: https://dotnext-moscow.ru/2017/msk/talks/20wwzs2qeuuykg86cc6ams/

[21] blog.ploeh.dk: http://blog.ploeh.dk

[22] Dependency Injection in .NET: https://www.manning.com/books/dependency-injection-in-dot-net

[23] публичное расписание: http://blog.ploeh.dk/schedule/

[24] High performance Networking in .NET Core: https://dotnext-moscow.ru/2017/msk/talks/3hcuoycrw4egcs0mkewoio/

[25] Искусственный интеллект и нейросети для .NET-разработчиков: https://dotnext-moscow.ru/2017/msk/talks/3emvrfszfcuieigqe0cimq/

[26] shwars: https://habrahabr.ru/users/shwars/

[27] I have a microservices architecture and I didn't know: https://dotnext-moscow.ru/2017/msk/talks/4nzkhrbjcqqsiuwwcmamga/

[28] Debugging and Profiling .NET Core Apps on Linux: https://dotnext-moscow.ru/2017/msk/talks/2dfoltply8kscqeoa6444g/

[29] goldshtn: https://habrahabr.ru/users/goldshtn/

[30] пара видеозаписей 2015 года: https://habrahabr.ru/company/jugru/blog/283582/

[31] видеозаписи 2016 года: https://habrahabr.ru/company/jugru/blog/314224/

[32] интервью о работе с перфомансом: https://habrahabr.ru/company/jugru/blog/320620/

[33] обзор инструментов .NET перфоманс-инженера: https://habrahabr.ru/company/jugru/blog/328294/

[34] Patterns for high-performance C#: from algorithm optimization to low-level techniques: https://dotnext-moscow.ru/2017/msk/talks/3dzbwqxenm6eqkai4giygw/

[35] Runtime code generation techniques in real life scenarios: https://dotnext-moscow.ru/2017/msk/talks/1zii5rwvmmokc0wiigqaw8/

[36] Expression Trees: https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/concepts/expression-trees/

[37] Life, liberty and the pursuit of APIness: the secret to happy code: https://dotnext-moscow.ru/2017/msk/talks/4ptxeq6flmeeqekygw4iws/

[38] Провайдеры типов без боли и магии: https://dotnext-moscow.ru/2017/msk/talks/50ktyyngfsuoqeqmiykkw6/

[39] nevoroman: https://habrahabr.ru/users/nevoroman/

[40] Источник: https://habrahabr.ru/post/341910/?utm_source=habrahabr&utm_medium=rss&utm_campaign=best