ilialesik

30 ноября 2020, Tver, Russia

# Понедельник 49 твитов

Всем привет! На этой неделе с вами @ilialesik. Поговорим про опен-сорс, организацию ИТ-сообществ, как интегрировать… twitter.com/i/web/status/1…

7:59

Немного про меня:

8:01

Основатель и Software Engineer в компании @lessmessdev. Занимаемся IT-аутсорсингом и консалтингом.

8:02

Организатор эвентов сообщества @_tverio

8:03

Опен-сорс разработчик, мой основной проект: github.com/react-figma/re…

8:04

Квалифицированный преподаватель-исследователь. Изучал исследование операций и экономику общественного благосостояни… twitter.com/i/web/status/1…

8:07

Редко, но метко выступаю на конференциях holyjs-moscow.ru/2020/msk/talks…

8:08

Хочу постепенно трансформироваться из аутсорсера в продукт, поэтому пробую себя в стартапах:

8:10

Интенсивы по 3D печати + образовательная настольная игра additivka.ru

8:11

b2b маркетплейс для ИТ-консультантов brainhub.network @brainhubinc

8:12

Родился и живу в городе Тверь и являюсь его неформальным амбассадором.

8:14

Микробиблиотек тред

11:12

Микробиблиотека - это пакет, который
1) Решает какую-то одну небольшую проблему
2) Экстремально мало весит

11:13

Примеры моих собственных библиотек:

11:14

Реакт хук для того чтобы, фетчить данные:
github.com/ilyalesik/reac…

11:15

Реакт хук для медиа-выражений: github.com/lessmess-dev/r…

11:15

Модуль для работы с localStorage для библиотеки @EffectorJS github.com/lessmess-dev/e…

11:16

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

11:19

Производительность - однозначно тренд это года.

11:20

А начиная с марта 2021-года Гугл будет использовать производительность на мобильных девайсах как основную метрику д… twitter.com/i/web/status/1…

11:21

Как же сделать свою микро-библиотеку?

11:22

Если есть возможность - лучше писать на es5 без транспилиции

11:23

Для того, чтобы случайно не написать что-то на современном ES, можно использовать ESLint

11:24

Мой конфиг для микробиблиотек: github.com/lessmess-dev/e…, использует плагины es5/no-es2015, es5/no-es2016 под капотом

11:25

И, конечно, нужно настроить size-limit @andrey_sitnik на CI/CD, чтобы контролировать размер бандла. Конфиг выглядит… twitter.com/i/web/status/1…

11:27

Типы можно подкладывать отдельно, в виде .d.ts и .js.flow файлов.

11:29

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

11:30

Но, конечно, есть смысл написать тесты.

11:30

Еще примеры микро-библиотек:

11:31

Wouter - роутер для React и Preact, автор @mlfrg github.com/molefrog/wouter

11:35

eo-locale - интернационализация для приложений, автор @smartass3000 github.com/ibitcy/eo-loca…

11:36

react-colorful - колор-пикер, автор @Omgovich github.com/omgovich/react…

11:38

tinyhttp - веб-фреймоворк, автор @v1rtl
github.com/talentlessguy/…

11:40

И множество библиотек @andrey_sitnik, который является основным популяризатором этого подхода:

11:42

Стейт-менеджер
github.com/storeon/storeon

11:42

Генерация идентификаторов
github.com/ai/nanoid

11:43

Есть еще хорошие примеры? Скидывайте в тред

11:44
@jsunderhood 3 неделю подряд (а может и не подряд) рассказывают про микробиблиотеки. Что так наболело?

Рассказывают много, но до сих пор для многих нужд нет хороших микро-библиотек!

@jsunderhood 3 неделю подряд (а может и не подряд) рассказывают про микробиблиотеки. Что так наболело?

11:47

Множество библиотек для реакта берут начало в 2015 году и не соответствуют современным требованиям.

11:48

Что уж там говорить, я даже не видел нормального слайдера. До сих пор приходится тащить react-slick, кодовая база которого тянется из jquery

11:49

Мне кажется, это отличный способ вкатиться в опен-сорс - написать микро-версию с контролем размера с помощью size-limit

11:54

webpack-bundle-analyzer на проектах потом скажет вам "спасибо". 🙂

11:56
@jsunderhood извиняюсь за самопиар, но я ещё помимо tinyhttp писал (очень маленький) парсер запросов:… twitter.com/i/web/status/1…

🔥

@jsunderhood извиняюсь за самопиар, но я ещё помимо tinyhttp писал (очень маленький) парсер запросов:… twitter.com/i/web/status/1…

13:23
Мне вот кажется, что вместо библиотек для функций на 5 строчек (а-то и на одну), лучше бы в каждый проекте их самом… twitter.com/i/web/status/1…

Немного поясню. Для меня микробиблиотека это не про оборачивание однострочника в пакет, а про контроль размера банд… twitter.com/i/web/status/1…

Мне вот кажется, что вместо библиотек для функций на 5 строчек (а-то и на одну), лучше бы в каждый проекте их самом… twitter.com/i/web/status/1…

13:45

Возможно терминологически это не совсем корректно, но библиотеки вроде Wouter и eo-locale, которые, мягко говоря, н… twitter.com/i/web/status/1…

13:46
@jsunderhood Сам Preact в некотором роде микробиблиотека :) Плюс у Джейсона много других хороших штук есть… twitter.com/i/web/status/1…

Да! Preact это тема

@jsunderhood Сам Preact в некотором роде микробиблиотека :) Плюс у Джейсона много других хороших штук есть… twitter.com/i/web/status/1…

16:20

Раз уж заговорили про микробиблиотеки, то давайте обсудим микрофронтенды. Сам не разу не пробовал. Кто что думает?

22:11

На эту тему на последнем @HolyJSconf был отличный доклад Павла @nodkz Черторогова. holyjs-moscow.ru/2020/msk/talks…

22:12

# Вторник 85 твитов

@jsunderhood Если есть проблемы которые микрофронтенды решают, то отличная штука. У нас в Тинькофф активно использу… twitter.com/i/web/status/1…
9:11
@jsunderhood Есть рабочие кейсы у Genereal Electric (Predix Apphib) и у Swisscom. В Сбере похожая архитектура. Из п… twitter.com/i/web/status/1…
9:11

Попробую раскрыть тему, в которой довольно немало покопался, пока разрабатывал github.com/react-figma/re… - Реакт ренд… twitter.com/i/web/status/1…

9:30

Реакт силен тем, что был спроектирован так, что позволяет достаточно легко расширяться под платформы, отличные от веба.

9:32

Самый известный пример это React Native reactnative.dev - на котором можно разрабатывать приложения под iOS… twitter.com/i/web/status/1…

9:33

React Native это реакт-рендерер, который разрабатывается фейсбуком, но есть множество сторонних

9:34

Например, Ink github.com/vadimdemedes/i… - позволяет писать консольные утилиты на React

9:35

React Hardware github.com/iamdustan/reac… позволяет управлять железками (например, Arduino) с помощью React

9:37

github.com/pmndrs/react-t… - реакт рендерер для Three.js, позволяет крутить 3D-модельки

9:38

github.com/diegomura/reac… - рендерер реакта в PDF

9:39

Есть целое семейство рендереров в редакторы для дизайнеров, первым из которых был github.com/airbnb/react-s…

9:40

Более подробно о разных реакт-рендерарах можно почитать в моей статье dev.to/lessmess/react…

9:41

А наиболее полный их список есть тут github.com/chentsulin/awe…

9:41

Столь большую гибкость обеспечивает библиотека npmjs.com/package/react-…

9:43

Это пакет, который позволяет писать свои собственные рендереры. В нем хост средой называется среда, в которой долже… twitter.com/i/web/status/1…

9:45

Для того, чтобы описать, как работать с конкретной хост средой, требуется описать хост-конфиг pic.twitter.com/v6TOCzjmen

9:46

Библиотека react-reconciler использует паттерн Visitor, то есть при обходе дерева реакт-элементов будут вызываться… twitter.com/i/web/status/1…

9:48

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

9:51

Например, createInstance будет вызван, когда требуется создать новый элемент. На вход придет тип элемента (например… twitter.com/i/web/status/1…

9:52

Можно ли написать реакт рендерер без библиотеки react-reconciler?

9:54

В теории да, в mvp библиотеки react-figma и в старых рендерарах вроде react-sketchapp (на момент ее создания еще да… twitter.com/i/web/status/1…

9:55

Когда мы только, начинали разрабатывать свой рендерер, первая наивная реализация выглядела примерно так:… twitter.com/i/web/status/1…

10:01

После того, как babel (или ts-компилятор) трансиплирует jsx, получится множество вложенных вызовов функций React.createElement

10:02

React.createElement будет возвращать разные вид данных в зависимости от ситуации, но в целом это уже самый обычный джаваскрипт

10:04

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

10:05

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

10:06

Такую реализацию можно даже попытаться усложнить, но в целом нет смысла - react-reconciler сразу поддерживает множество вещей

10:07

Например, там уже заложена поддержка регидратации (когда рендерер запускается снова и не должен пересоздавать созда… twitter.com/i/web/status/1…

10:09

Более подробно про то, как написать свой рендерер можно послушать в докладе Софи Альперт youtube.com/watch?v=CGpMlW…

10:11

В докладе Ярослава Лосева @losyear на Tver.io youtube.com/watch?v=E1G2rM…

10:12

И на последнем @HolyJSconf, есть слайды holyjs-moscow.ru/2020/msk/talks…

10:13

Одним из самых серьезных челенджей при написании рендерера была реализация HMR - для ее реализации пришлось менять архитектуру

10:14

После перехода на react-reconciler схема выглядела так: pic.twitter.com/WXwp9sHUjU

10:17

Мы запускали рендерер в мейн треде и создавали в методах хост-конфига ноды сразу, с помощью плагинного API фигмы figma.com/developers

10:19

Это отлично работало, тем что методы хост-конфига не могут быть асинхнронными, а апи фигмы - более-менее синхронно

10:21

За исключением HMR. Дело в том, что main-тред в Фигме надежно изолирован в песочнице и не позволяет использовать пр… twitter.com/i/web/status/1…

10:22

В фигма main трейд запускается с помощью движка QuickJS, написанном на C. Что само по себе создавало немало проблем… twitter.com/i/web/status/1…

10:25

Написан на C, но ведь Фигма web-based, скажете вы. Так вот, они ранят этот движок с помощью WASM. Более подробно по… twitter.com/i/web/status/1…

10:27

Так вот, для нормальной работы HMR нам нужен был WebSocket. WebSocket в фигме можно использовать только из UI-треда… twitter.com/i/web/status/1…

10:29

Архитектура стала выглядеть примерно так, вместо того, чтобы создавать объекты непосредственно в методах хост конфи… twitter.com/i/web/status/1…

10:31

К счастью, есть реализация rpc для фигмы, которая частично облегчила эту задачу: github.com/Lona/figma-jso…

10:32

Но все равно, реакт реконсилер с промизами не работает, поэтому пришлось генерить айдишники, чтобы связывать ноды pic.twitter.com/B1CTc4w6jv

10:33

Потому что реакт-реконсилер аппендидит за один проход, для этого по сгененрированным id находим ноды и соединяем их pic.twitter.com/lp28fy0MaP

10:35

Итоговый реквест выглядел примерно так github.com/react-figma/re…

10:36

Это же позволило достаточно легко реализовать поддержку React DevTools чуть позже github.com/react-figma/re…

10:37

На всякий слуйчай еще приведу такую картинку, main тред предназначен для работы с документом, UI - для того чтобы р… twitter.com/i/web/status/1…

10:39

Не мало хлопот также доставила поддержка стилизации с помощью Yoga Layout. Эта библиотека обеспечаивает поддержку л… twitter.com/i/web/status/1…

10:42

Поскольку нам было важно обеспечить совместимость по API с реакт нейтив, мы взяли именно ее react-figma.dev/docs/styling

10:43

Проблема была с тем, что Yoga не хотела запускаться внутри main-треда, пришлось ее загонять в UI-тред.

10:44

На вход - JSON-дерево c элементами и их стилями, на выходе абсолютные координаты, которые применяются к фигма-нодам

10:45

В Фигма постепенно развивается Auto-layout, все больше новых фич. Я думаю, постепенно мы сможем выпилить Yoga Layou… twitter.com/i/web/status/1…

10:47

Итог: реакт рендереры это жутко интересно, но местами бывает хардкорно и сложно. Стоит попробовать, если хотите луч… twitter.com/i/web/status/1…

10:50
@iGontarev @jsunderhood @lukeed05 Ну даже 10 строк не всегда желательно копипастить. А библиотека - это не просто к… twitter.com/i/web/status/1…

☝️

@iGontarev @jsunderhood @lukeed05 Ну даже 10 строк не всегда желательно копипастить. А библиотека - это не просто к… twitter.com/i/web/status/1…

11:59

Кто как относится к react-native? Мне самому кажется не самым плохим выбором для кроссплатформенной разработки по нескольким причинам:

13:57

Достаточно много специалистов и низкий порог вхождения для React разработчиков под веб

13:58

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

13:59

Поддержка крупного вендора - React Native разрабатывается фейсбук

14:00

Это JS и можно использовать привычные библиотеки и подходы.

14:00
@jsunderhood Для бизнеса react-native это подарок. Потому что разработка гораздо дешевле и быстрее. Для большинства… twitter.com/i/web/status/1…
16:14
@jsunderhood В фейсбук это давно просекли. underjs.ru/podcast/2020/1…
На 1:10:13 Абрамов говорит, что больше 700 экран… twitter.com/i/web/status/1…
16:14

Поговорим за стейт-менеджмент? Кто что использовал для управления стейтом?

21:18

Помимо понятного всем Redux, который до сих преследует в кошмарах и легаси-коде я использовал:

21:19

Apollo Client - пожалуй самый энтерпрайзный вариант из не-redux. Энтерпрайзный за счет того, что код на нем получае… twitter.com/i/web/status/1…

21:21

Я состовлял awesome-list по Эффектору github.com/effector/aweso…

21:24

И писал статью: dev.to/lessmess/react…

21:25

Использовал также Стореон github.com/storeon/storeon - офигенно для маленьких проектов

21:26

Тысячу лет назад использовал MobX - но не зашло, магия + декораторы (фу-фу-фу) + слишком здоровый бандл

21:27

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

21:29

Что еще интересно?

21:29

github.com/artalar/reatom - выглядит очень круто, но я сам, к сожалению, не пробовал. Автор - Артем @artalar_dev

21:30

У Артема также есть список с разными стейт-менеджерами gist.github.com/artalar/e5e8a7…

21:31

github.com/pmndrs/zustand - мне просто нравится иллюстрация, не пробовал

21:32

Интересная встреча по стейт-менеджерам была на @_tverio
youtube.com/watch?v=cUSyJk…

21:33

Самый проблемный момент - никто не знает, где же должна находиться бизнес-логика проекта. (Копий на эту тему было с… twitter.com/i/web/status/1…

21:37

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

21:41

Например, Firebase, в котором можно подписываться на изменения firebase.google.com/docs/database

21:42

Можно написать врапер над RxJS rxjs-dev.firebaseapp.com/guide/overview. Уже есть реактивность, надо просто где-то накапливать стейт… twitter.com/i/web/status/1…

21:44

Логакс, вдохновленный CRDT logux.io

21:45
@jsunderhood Мало каким сайтам на самом деле нужен стейт менеджмент, если юзать react-query или… twitter.com/i/web/status/1…
21:45

Одно точно могу сказать: стоит выйти из зоны комфорта в виде Redux и попробовать какой-то альтернативный стейт-мене… twitter.com/i/web/status/1…

21:52
Одно точно могу сказать: стоит выйти из зоны комфорта в виде Redux и попробовать какой-то альтернативный стейт-мене… twitter.com/i/web/status/1…
21:52
@jsunderhood Что насчёт recoil? Я не пробовал, но выглядит интересно, и доклад крутой от автора тут… twitter.com/i/web/status/1…

Recoil, a new experimental state management library for React, was just open sourced at React Europe! recoiljs.org

21:54
У нас эффектор в продакшене, например. twitter.com/jsunderhood/st…

Так-то у нас тоже. Но мало, из-за того что куча легаси.

У нас эффектор в продакшене, например. twitter.com/jsunderhood/st…

22:02
@jsunderhood Если абстрагироваться от стейт-менеджеров и сконцентрироваться именно на хранении бизнес-логики, то м… twitter.com/i/web/status/1…
22:28

# Среда 63 твита

Мне всегда хотелось соединить дизайн и разработку, поэтому стартую тред по дизайн-системам, по мотивам моего доклад… twitter.com/i/web/status/1…

10:22

Основополагающей книгой по дизайну для меня является Атомик Дизайн Брэда Фроста bradfrost.com/blog/post/atom…

10:23

Его основной концепт - что дизайн должен идти от простого к сложному pic.twitter.com/8B4CVA7cBn

10:24

Если очень упрощать, то в соответствии с этим подходом в основе всего должен лежать стайл-гайд. Стайл гайд - это на… twitter.com/i/web/status/1…

10:27

В стайл-гайд обычно входят цвета, типографика, размеры/отступы pic.twitter.com/q3aPs1Huyg

10:27

Понятно, что одного стайл-гайда мало, и тут нам на помощь приходит UI-кит. UI-кит это набор базовых элементов - кно… twitter.com/i/web/status/1…

10:29

UI-кит пользуется значениями из дизайн-системы, например вот тут для компонента кнопки используется цвет: pic.twitter.com/Qj8gwp6tvZ

10:30

Как правило, UI-кит содержит множество разных состояний компонентов pic.twitter.com/YbZMxvBVYm

10:31

Поверх UI-кита и стайл-гайда также можем строить что-то еще, например сделать каталог компонентов в Storybook и наб… twitter.com/i/web/status/1…

10:33

По аналогии с подходом Infrastructure as Code можно использовать подход, который я бы назвал Design System as Code.

10:34

В принципе, все описанное выше можно положить в код.

10:35

Стайл-гайд - укладывается в обычный JS-конфиг, поскольку это в принципе просто значения

10:35

Визуальные элементы можно реализовать в виде компонентов на React. Для кроссплатформенности этот код лучше описывать сразу на react-native.

10:36

Такую дизайн-систему можно также будет отобразить в виде каталога компонентов, например, с помощью Storybook.

10:37

И отобразить в Figma, для того, чтобы продуктовые дизайнеры могли собирать из нее экраны. Для этого подойдет github.com/react-figma/re…

10:38

Как это выглядит и работает, можно посмотреть в примере github.com/react-figma/Pr…

10:39

В примере реализован кусочек дизайн-системы ГитХаба Primer styleguide.github.com/primer/

10:40

У меня не было задачи перенести задачи полностью, но зато продемонстрировано, как сделать так, чтобы код был single… twitter.com/i/web/status/1…

10:41

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

10:43

Это конечно несколько контр-интуитивно, что мы из кода помещаем что-то в Figma. Нам даже пришлось добавить строчку… twitter.com/i/web/status/1…

10:45

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

10:46

Есть множество неплохих плагинов, например github.com/bernaferrari/F…

10:47

Была демка даже у нас github.com/react-figma/co… - использует Babel для формирования AST дерева

10:48

Но большинство решений умеют генерить только под какой-то ограниченный стек, который не факт что вам подойдет

10:49

Не умеют работать с изменениями - вам банально захочется пробрасывать пропсы в компонент, для этого придется менять… twitter.com/i/web/status/1…

10:50

А потом все это мержить, если после этого на дизайне что-нибудь поменяется

10:51

По сути дела, нужно развитие искусственного интеллекта, развитие алгоритмов вроде GPT-3

10:52

Так что пока я вижу себе процесс следующим образом: дизайн-систему отрисовывает дизайнер -> переносится в код -> ис… twitter.com/i/web/status/1…

10:54

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

10:54

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

10:55

Код там не такой сложный - конфиг стайл-гайда + "тупые" компоненты. А разработчики могут ревьюить то что получается - это же код!

10:57

Слайды из доклада также можно полистать на Спикердеск speakerdeck.com/ilyalesik/kak-…

10:58
Using react-native syntax to make Figma components - I'm very impressed. twitter.com/jsunderhood/st…

Yep, react-figma made it possible. 😎

Using react-native syntax to make Figma components - I'm very impressed. twitter.com/jsunderhood/st…

11:43

Подход, который я изложил, не считаю единственно правильным. Но его можно расширять как в ширь так и в глубь с помо… twitter.com/i/web/status/1…

13:13

Для описания стайл-гайда я рекомендую использовать System UI Theme Specification github.com/system-ui/them…

13:14

С ним легко реализовывать темизацию, и он совместим со множеством уже существующих решений, например его использую… twitter.com/i/web/status/1…

13:15

Он без проблем интегрируется с react-figma и другими примитивами с помощью пакета github.com/react-figma/re…

13:16

Для описания дизайн-системы можно использовать MDX, вот пример:
github.com/react-figma/re…

13:18

Я за то, чтобы была гибкость в выборе инструментов и возможность их комбинировать.

13:19

Где вы пишите статьи? Я вот предпочитаю dev.to, потому что он совместим с маркдауном и опен-сорсный

20:08

Пробовал медиум, но на нем бесконечные пре-роллы

20:09

Интересным вариантом выглядит селф-хостед блог, потому что можно настроить все под себя и подключить любую аналитик… twitter.com/i/web/status/1…

20:10

Впрочем платформа может и не дать ничего

20:11

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

20:12

Частично помогает Grammarly и app.gramara.com, но много недочетов все равно остается

20:17

Мой английский далек от идеала, но написание статей помогает его учить

20:17

Обычно начинаю что-то писать на dev.to, потом выгружаю это в Notion (мардаун), даю кому-нибудь поч… twitter.com/i/web/status/1…

20:18

Мне помогает академический опыт, хоть и технологически там все совсем по-другому

20:20

Пишешь на LaTeX, потом передаешь это в журнал

20:20

Это если, конечно, сильно упрощать. Так-то между этим может быть миллион итераций и работы с научным руководителем.

20:21

И конечно же, рецензирование.

20:22

Вообще, IT - это в какой-то степени калька с научного мира. Статьи, конференции, доклады - все это уже там было и есть.

20:23

Можно даже спрогнозировать, что дальше появится в IT-среде, глядя на научную. Я думаю, постепенно появятся такие ве… twitter.com/i/web/status/1…

20:25

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

20:28

Не может не радовать, что появляются продукты на стыке - например, deepnote.com - переработанный ноутбук для вычислений

20:30
@jsunderhood А ещё лучше показать статистку где 4 последних поста имеют <25 views twitter.com/thekashey/stat…

Все как всегда - мало написать, надо еще и продвинуть.

@jsunderhood А ещё лучше показать статистку где 4 последних поста имеют <25 views twitter.com/thekashey/stat…

20:43
@jsunderhood После истории с деградацией Medium — только свои блоги

Путь настоящего самурая!

@jsunderhood После истории с деградацией Medium — только свои блоги

20:44
Вообще, IT - это в какой-то степени калька с научного мира. Статьи, конференции, доклады - все это уже там было и есть.
20:49

У меня еще конечно, всегда очень зависит то, как я пишу, от того, в чем я пишу. Это касается и статей и презентаций

20:51

Чем-то похоже на теорию о том, что язык может влиять на экономику - люди по разному думают на разных языках econs.online/articles/ekono…

20:52

Даже больше презентаций, в некоторых движках не могу выдавить и слайда

20:53

Для презентаций я в основном использую либо shower Вадима Макеева @pepelsbey

20:54

Либо Keynote - в нем проще накидывать, но в Шовер - это код, со всеми преимуществами, можно сделать любой эмбед

20:55

# Четверг 39 твитов

@jsunderhood @HolyJSconf . @ilialesik спасибо за рекомендацию!

Не у всех пока есть доступ к видео. Поэтому давайте… twitter.com/i/web/status/1…

🙏

@jsunderhood @HolyJSconf . @ilialesik спасибо за рекомендацию!

Не у всех пока есть доступ к видео. Поэтому давайте… twitter.com/i/web/status/1…

6:33
@jsunderhood @HolyJSconf . @ilialesik спасибо за рекомендацию!

Не у всех пока есть доступ к видео. Поэтому давайте… twitter.com/i/web/status/1…

Я попросил Пашу подробнее рассказать про #ModuleFederation, встречайте “гостевой” тред

@jsunderhood @HolyJSconf . @ilialesik спасибо за рекомендацию!

Не у всех пока есть доступ к видео. Поэтому давайте… twitter.com/i/web/status/1…

10:04

Стартую тред про опен-сорс разработку и ее проблемы, в продолжение последнего эвента на Tver.io. youtube.com/watch?v=ZnsRH9…

15:58

Как это часто бывает - мало что-то закодить, на это еще это как-то продвинуть.

15:59

Не то чтобы нужно быть каким-то гением маркетинга, чтобы продвигать опен-сорс, но если вы до этого занимались тольк… twitter.com/i/web/status/1…

16:00

На эту тему есть уже ставший классическим доклад Андрея @ai Ситника youtube.com/watch?v=DU0LiH…, что-то новое сказать сложно

16:02

Разумеется, нужно грамотно оформить ридми - люди оценивают прежде всего глазами, да и поисковую индексацию никто не отменял

16:04

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

16:05

Для этого подойдут чаты в телеграме, Reddit, имейл-рассылки. Важно попасть в тему - было бы странно рассказывать пр… twitter.com/i/web/status/1…

16:07

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

16:08

Прежде всего - непонятно, что с финансированием, "кто платит за банкет". На Tver.io мы ломали копья… twitter.com/i/web/status/1…

16:09

Вариантов вообщем-то несколько:

16:10

1) Разработчик пилит опен-сорс в свободное от работы время. Это обычная история на начальном этапе, но чревата тем,… twitter.com/i/web/status/1…

16:11

2) Опен-сорс под крылом крупной компании, которая его разрабатывает для своих нужд, которые как правило лишь отчаст… twitter.com/i/web/status/1…

16:14

Из минусов - сообщество в этом случае не влияет на развитие библиотеки, поскольку требования формируются из компани… twitter.com/i/web/status/1…

16:15

Выражаться это может в том, что пулл-реквест от стороннего разработчика почти не имеет шансов быть принятым, как ви… twitter.com/i/web/status/1…

16:17

Также, если библиотека станет не нужна компании - она вероятнее всего умрет.

16:17

3) Опен-сорс, который нашел способ как монетизироваться. Иногда очень даже неплохо монетизироваться - как в случае… twitter.com/i/web/status/1…

16:20

Как правило, речь о неких платных облаках. Так делает очень много кто. Например, ghost.org,… twitter.com/i/web/status/1…

16:22

К сожалению, возможно скатывание во вариант 2

16:23

4) Частные донаты - например, Open Collective + Pateron

16:24

  • мне кажется, работают не очень хорошо, трудно насобирать на сумму, которая хотя бы чуть-чуть была похожа на зп ра… twitter.com/i/web/status/1…
  • 16:26

    А тот же Патреон еще и требует дополнительных усилий на генерацию контента

    16:26

    5) Инвестиции компаний-пользователей данного опен-сорса + платные поддержка и консультирование

    16:28

    Это выглядит более интересно, но, конечно трудно осуществимо на ранних этапах. И точно также требует усилий - напри… twitter.com/i/web/status/1…

    16:29

    И отчасти похоже на вариант 3

    16:31

    6) Фонды и грантовая поддержка. Примеры - Apache и Linux

    16:33

    Этот вариант мне кажется наиболее перспективным в будущем, поскольку давно зарекомендовал себя в других сферах (нау… twitter.com/i/web/status/1…

    16:35

    Он похож на вариант 5, с той разницей, что появляется третья сторона, которая решает как должны распределяться средства

    16:36

    У этого есть как плюсы так и минусы.

    16:36

    Из минусов - могут возникать вопросы к тому, как именно распределяется финансирование - точно ли это справедливо

    16:37

    Из плюсов - компании спонсоры имеют меньше влияния на распределение средств, меньше соблазна погнаться за сиюминутн… twitter.com/i/web/status/1…

    16:39

    7) Государство. ИТ-сфера склонна не любить государство (и на то есть основание), но в конечном итоге именно оно печ… twitter.com/i/web/status/1…

    16:41

    Опен-сорс - это понятное общественное благо и довольно давно известно, что вложения в общественное благо идут на по… twitter.com/i/web/status/1…

    16:44

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

    16:46

    Развитие опен-сорса - это появление новых инструментов для разработки, которые в свою очередь позволяют работать бо… twitter.com/i/web/status/1…

    16:49
    @jsunderhood Наверно треть всего времени, что у меня уходит на konvajs.org я трачу на продвижение. В ос… twitter.com/i/web/status/1…
    16:51
    @jsunderhood Почти всё отстальное время работы над Open Source проектом - это поддержка сообщества. Ответы на комме… twitter.com/i/web/status/1…
    17:08
    Только 34% разработчиков на Гитхабе из Северной Америке. Почему же мы говорим только про политику США в опенсорсе?… twitter.com/i/web/status/1…
    20:01

    # Пятница 46 твитов

    Тред про локальные ИТ-сообщества, через призму моего опыта организации эвентов в Tver.io.

    13:04

    Локальные сообщества - это прекрасный пример того, что разработчики, которых раньше считали чуть-ли не социопатами… twitter.com/i/web/status/1…

    13:06

    Tver.io появилось почти 10 лет назад. Спойлер - в декабре планируем отмечать юбилей: pic.twitter.com/d62KWv5b40

    13:07

    При этом активно участвовать в организации сообщества я начал примерно 2.5 года назад

    13:08

    Начал я с того, что просто пришел и попросил дать возможность повести инстаграм сообщества. В то время я как раз ак… twitter.com/i/web/status/1…

    13:10

    Поскольку я визуал и эстетика для меня очень важна, через какое-то время я запустил редизайн сообщества. Первое, чт… twitter.com/i/web/status/1…

    13:12

    Дизайн обложек до: pic.twitter.com/HXHHqL2fjA

    13:13

    Первая обложка в редизайне, которую сделала дизайнер и (по совместительству моя жена) @Lera_Lesik, выглядел так: pic.twitter.com/PH2HOzmC4M

    13:16

    В то время мы называли события по названиям событий или по праздникам, которые были в этот день. 18 октября - Совет… twitter.com/i/web/status/1…

    13:18

    В марте 2021 года @Lera_Lesik сделала редизайн логотипа, он стал таким: pic.twitter.com/SwjzMH29By

    13:21

    И например, во варианте для стикеров: pic.twitter.com/NRXgPZWcMl

    13:22

    Постепенно события стали становится более специализированными, под конкретную тему, например… twitter.com/i/web/status/1…

    13:24

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

    13:26

    Начали делать разные эксперименты, например, на Tver.io Makers Meetup люди рассказывали исключитель… twitter.com/i/web/status/1…

    13:27

    Короновирус, который пришел в РФ в начале 2020-года, конечно, сильно вмешался в работу сообщества.

    13:30

    Первым пострадал Tver.io JavaScript Meetup meetup.com/tverio/events/…

    13:31

    Нам пришлось срочно переводить событие полностью в онлайн. Начали использовать сетап, который используем и до сих п… twitter.com/i/web/status/1…

    13:35

    Стало понятно, что классический формат митапов - 2-3 доклада + вопросы, не совсем хорош для онлайна.

    13:36

    Начали делать дискуссионные клубы по темам, первым из них стал No Code Talks meetup.com/tverio/events/…

    13:38

    Особое место у нас всегда занимала фронтенд разработка и JS. Такие события всегда набирали самое большое число зрит… twitter.com/i/web/status/1…

    13:40

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

    13:47

    Если совсем упрощать - делится на операционные вещи и на содержательную часть.

    13:48

    Операционная часть:

    13:50

    В доковидное время к этому еще добавлялись:

    13:51

    Содержательная часть:

    13:54

    Я много занимался выбором тем и приглашением и приглашением спикеров.

    13:57

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

    13:58

    Старался немного "заглянуть в будущее" и понять, что будет важно через год или два

    13:59

    Часто мне мог просто нравится какой-то спикер, а все остальное мероприятие проектировалось из "основного" доклада

    14:00

    Важная вещь, которую мы лишились из-за короновируса - это, конечно, afterparty.

    14:01

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

    14:02
    Тоже об этом думали. И сделали первую версию «общалки» для #jokerconf и других конференций

    Теперь конференции на… twitter.com/i/web/status/1…

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

    16:19

    Мой топ видео tver.io - на случай если будете искать, что посмотреть в выходные. 😀

    16:56

    Если наконец хотите узнать, что такое монады - доклад @_bravit
    youtube.com/watch?v=IkXg_m…

    16:58

    Про производительность Postrges, это скорее воршоп. На английском языке youtube.com/watch?v=xqTNce…

    17:00

    Продвижение опен-сорс проектов @ai youtube.com/watch?v=DU0LiH…

    17:01

    Доклад @_tikhon про типографику youtube.com/watch?v=_2VxlB…

    17:04

    Толком-то фронтенда нет, но ничего, сейчас наверстаем.

    17:07

    Доклад @ovrweb про асинхнронность youtube.com/watch?v=PZiEFH… - по длине и хардкорности скорее ближе к HolyJS.

    17:09

    Про Вебпак и линзы от @AntonK52 youtube.com/watch?v=qcj2bX…

    17:11

    Про стилизацию от @_lttb youtube.com/watch?v=b7vBKp…

    17:16

    Не совсем доклад, но все равно много полезного - в дискуссии про стейт-менеджемент: youtube.com/watch?v=cUSyJk…

    17:17

    Доклад "Семантика для циников" Вадима Макеева youtube.com/watch?v=z91F33…

    17:19

    Если что-то не попало в список, не значит, что оно было хуже. Всех спикеров кто у нас выступал, мы ценим.☝️

    17:21

    # Суббота 27 твитов

    Помимо дизайн-систем, у github.com/react-figma/re… есть еще интересные интерсные применения, о чем расскажу в треде ->

    10:44

    Библиотеку можно использовать для автоматизации рутинных дизайнерских операций, можно легко строить интеграции разл… twitter.com/i/web/status/1…

    10:48

    В addtivika.ru мы разрабатываем настольную игру для обучения 3D-печати, в которой есть множество карточк… twitter.com/i/web/status/1…

    10:50

    Карточек довольно много - 100 штук, но все они укладываются в 4 вида шаблонов. pic.twitter.com/B39SQVirOE

    10:53

    Дизайн делается в Фигма и по сути дела он двойного назначения:

    10:54

    1) Выгрузка карточек на печать в PDF

    10:55

    2) Возможность поиграть в игру прямо в Figma, перетаскивая карточки как компоненты из панели ассетов. Это стало оче… twitter.com/i/web/status/1…

    10:57

    Поддерживать кучу карточек в актуальном состоянии и тем более вносить изменения в их дизайн оказалось трудной задач… twitter.com/i/web/status/1…

    10:59

    Мы пришли к решению этой проблемы:

    10:59

    Сложили все карточки в виде строк в Airtable, каждый признак - это колонка. pic.twitter.com/98bNJMHBPh

    11:01

    Airtable удобен своим API, и большим числом типов данных для ячеек. Например, там есть файл-аплоад. airtable.com/developers

    11:03

    Для того, чтобы выгрузить данные в фигму, подняли проект из бойлерплейта github.com/react-figma/re…

    11:05

    Определили компоненты для карточек и их стили. Проект не в опен-сорсе, но могу показать, например, компонент для ка… twitter.com/i/web/status/1…

    11:08

    Визуально он выглядит вот так: pic.twitter.com/EfbytEq6f1

    11:09

    Выгрузить карточки из Аиртейбл достаточно просто, надо описать метод, который будет ходить в таблицу с принтерами: pic.twitter.com/U7bine72EE

    11:12

    А потом просто пробросить данные в компонент: gist.github.com/ilyalesik/ca34…

    11:14

    Для чего я использовал свою же библиотечку github.com/ilyalesik/reac…

    11:15

    После запуска плагина в фигме, будут все принтеры: pic.twitter.com/HMRcC34f4n

    11:16

    После переноса всех карточек картина выглядела так, больше всего карточек малых заказов: pic.twitter.com/nMJSuPojbe

    11:18
    Мне всегда хотелось соединить дизайн и разработку, поэтому стартую тред по дизайн-системам, по мотивам моего доклад… twitter.com/i/web/status/1…

    Помимо автоматизации мы получили еще возможность портирования игру на другие платформы, например в веб, поскольку б… twitter.com/i/web/status/1…

    Мне всегда хотелось соединить дизайн и разработку, поэтому стартую тред по дизайн-системам, по мотивам моего доклад… twitter.com/i/web/status/1…

    11:21

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

    11:23

    Но реальное применение способствовало и развитию самой библиотеки, поскольку в процессе я находил баги react-figma и сразу их правил.

    11:24

    Это потянуло за собой и улучшение DX, например фича с HMR (hot module replacement) была инспирирована именно опытом с Additivka.

    11:26

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

    11:27

    Или более сложные, например, когда при разработке новых экранов приложения используются реальные данные из АПИ

    11:28
    Решил дополнить отличный тред @sashasushko, инициированный @andrey_sitnik, и тоже рассказать о процессах и принципа… twitter.com/i/web/status/1…

    Интересный тред про процессы на удаленке.

    Решил дополнить отличный тред @sashasushko, инициированный @andrey_sitnik, и тоже рассказать о процессах и принципа… twitter.com/i/web/status/1…

    17:34
    Happy 25th birthday #JavaScript 🎉🎉🎉

    Incredible history timeline jetbrains.com/lp/javascript-… from Netscape to space by… twitter.com/i/web/status/1…

    21:58

    # Воскресенье 82 твита

    В воскресенье хочется чего-то лайтового, поэтому встречайте пленочной фотографии тред ->

    9:43

    Сразу скажу, что на мои снимки можно посмотреть у меня в инстаграме - instagram.com/ilialesik/

    9:45

    Мое увлечения пленкой началось в 2014 году, когда мне «по наследству» достался Зенит ЕТ с объективом Гелиос 44М. pic.twitter.com/HiuMUBK3LW

    9:47

    К нему также шел комплектный чехол и вспышка Электроника ФЭ-27 pic.twitter.com/YZzDne1kyv

    9:49

    Нем могу сказать, что советская фототехника отличалась особой надежностью - но весь комплект до сих пор в работоспо… twitter.com/i/web/status/1…

    9:53

    Немного снимков того периода, ламповость и фирменное "закручивание" Гелиоса на месте:

    9:55

    Тогда я использовал не дорогие позиции пленок - Kodak Color 200 и Fujicolor C200 и проявлял/сканировал их в местной фотолаборатории.

    10:00

    Снимал я довольно мало - примерно по одной пленке за полгода.

    10:02

    Но все поменялось в 2015-м - я купил камеру, на которую снимаю до сих пор:

    10:03

    Это Nikon F100 с автофокусным объективом 50mm 1:1.8D: pic.twitter.com/qQjTAuSzyt

    10:10

    Это автофокусная автоматическая модель 1999-года, которая позиционировалась как полупрофессиональная.

    10:13

    После механического Зенита эта камера с серийной съемкой 4.5 кадра в секунду выглядела как автомат. По эргономике о… twitter.com/i/web/status/1…

    10:15

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

    10:18

    Вот фотографии, которые я делал на него тогда:

    10:19

    Снимал я тогда уже на более дорогие пленки, например, Kodak Ektar, CineStill 800T.

    10:28

    Постепенно мне захотелось экспериментов и я начал пробовать снимать на черно-белую пленку. Первой, которую я взял - была ilford pan 100 ->

    10:31

    С ч/б пленкой было сложнее работать, поскольку фотолаборатория у нас в городе умела проявлять только цвет. Да и ска… twitter.com/i/web/status/1…

    10:34

    Даже интересные изначально снимки выглядели каким-то блеклыми, что-ли. Выправить сканы из лаборатории не получалось… twitter.com/i/web/status/1…

    10:37

    Я решил проявлять и сканировать пленки сам, чтобы иметь полный контроль над процессом.

    10:38

    Самое основное - бачок для проявки pic.twitter.com/5y0vyP7T46

    10:41

  • Набор склянок для растворов и термометр из местного магазина мед техники pic.twitter.com/qZ80TxZXyH
  • 10:44

  • Некоторые специализированные приспособления, рукав для зарядки пленки в бачок + экстрактор пленки из катушки pic.twitter.com/ROsaolKPVz
  • 10:47

  • химия - проявитель (я предпочитаю концентрат), фиксаж, стоп-ванна pic.twitter.com/Htx4fGTnY6
  • 10:50

    Вишенка на торте: сканер для пленок. У меня недорогая модель, plustek opticscan 8100 pic.twitter.com/4U4SMut2fE

    10:54

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

    10:55

    К нему идет программа SilverFast, которая хоть и довольно архаична, но вполне себе работает на последней мак-оси: pic.twitter.com/LkZz7ztjQx

    10:58

    Немного снимков после перехода на новый процесс pic.twitter.com/lJNtutlE4S

    11:03

    Основная пленка, которую я начал применять - ilford hp5+. Оно отлично работает с пуш-процессом - это когда, пленка… twitter.com/i/web/status/1…

    11:08

    Экспериментировал я и с пленками большой чувствительности, например, ilford delta 3200. На них как правило очень мн… twitter.com/i/web/status/1…

    11:13

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

    11:15

    В дополнительной обработке я не вижу ничего плохого, поскольку исторически снимки могли довольно сильно ретушироват… twitter.com/i/web/status/1…

    11:19

    Это часть творческого процесса. Немного жалею, что не попробовал оптическую печать, мой аналогово-цифровой процесс - конечно не совсем "тру"

    11:21

    Еще из интересного - на пленку можно делать мультиэкспозицию, это когда один кадр экспонируется несколько раз. Эксп… twitter.com/i/web/status/1…

    11:25

    Последние годы люблю снимать вертикально, вот кадры с последней пленки: pic.twitter.com/lT7yzgsErl

    11:27

    Фотографии я раньше выкладывал еще и вк, там также есть множество специализированных групп по пленки, в которые был… twitter.com/i/web/status/1…

    11:29

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

    11:30

    Последнее время пленочная фотография стало очень доступной - есть много специализированных магазинов и лабораторий,… twitter.com/i/web/status/1…

    11:31

    Например, лаборатория Среда sreda.photo/lab/develop_sc…

    11:31

    При этом сами камеры и пленки стали заметно дороже. Когда я покупал свой Никон в 2015 году, он стоил 6500. Сейчас т… twitter.com/i/web/status/1…

    11:32

    Еще из экспериментов, мне бы конечно, хотелось попробовать поснимать на средний формат. Например, на Mamiya c330 pic.twitter.com/z72rwrJzrp

    11:34

    Почему же я не перешел на цифру?

    11:41

    Так исторически сложилось - у меня уже выработался некий подход и видение того, что я хочу получать. При переходе н… twitter.com/i/web/status/1…

    11:43

    Для меня пленка - это способ борьбы с выгоранием и напряжением на работе. Ничего так не перезагружает, как пойти по… twitter.com/i/web/status/1…

    11:44

  • Сама пленочная фототехника, даже такой осовремененный вариант как у меня дает невероятные тактильные ощущения. Кр… twitter.com/i/web/status/1…
  • 11:45

    А еще даже на камеру из 60-х годов можно снять так, что айфон будет нервно курить в сторонке. Если вы были на выста… twitter.com/i/web/status/1…

    11:51

    У меня айфон 11 и он снимает как говно (простите)

    11:52

    Понятно, что если сравнивать с современными цифровыми камерами, малый формат пленки (35мм) проиграет. Но если взять… twitter.com/i/web/status/1…

    11:53

    Кроме того, пленка не накапливает шум на длинных выдержках, поэтому ее до сих пор активно применяют в астрофотографии.

    11:54

    Интересный факт - многие пленочные камеры могут стоит сотни тысяч рублей и сегодня. Небольшая подборка интересных камер:

    17:19

    Hasselblad XPan - позволяет фигачить вот такие широкие кадры. Стоимость - ~200к рублей. photosale.ru/sale/fotoappar… pic.twitter.com/IHVqlb4ohl

    17:22

    Contax T2 - компактная камера из титана с объективом Carl Zeiss 38/2.8. ~70к рублей на ибей pic.twitter.com/YWsvcKLk2h

    17:25

    Rollei 35 - одна из самых маленьких 35мм камер. pic.twitter.com/K0PbxgxbEX

    17:28

    Японская камера-пулемет времен второй мировой войны. Использовалась как симулятор для экипажей самолетов - по снимк… twitter.com/i/web/status/1…

    17:31

    <--- $5000 на ибей

    17:32

    Pentax 6x7, он же 67 - здоровенная и очень красивая среднеформатная камера (за счет деревянной ручки). Поговаривают… twitter.com/i/web/status/1…

    17:36

    Nikon F3 - оч красивая камера, дизайн разработан легендарным Джорджетто Джуджаро. Имеет съемную призму и кучу модиф… twitter.com/i/web/status/1…

    17:39

    Одна из модификаций, F3 NASA, с магазином на 250 кадров - летала в космос. pic.twitter.com/NKkQ3m4ePb

    17:41

    Hasselblad 500 C/M и похожие - еще одна легендарная камера, модификации которой летали в космос pic.twitter.com/BL7JWOCNhD

    17:45

    Это системная камера, есть куча разных "задников". Например, можно поставить задник, который будет снимать на кассе… twitter.com/i/web/status/1…

    17:47

    Одна из моих "аватарок" была снята на эту камеру: pic.twitter.com/GFJHER6yQw

    17:49

    Это средний, 120-й формат пленки, размер кадра 6x6см. Большинство сталкивалось с форматом 35mm, для сравнения, разм… twitter.com/i/web/status/1…

    17:52

    Еще одна красивая камера - Rolleiflex 2.8f. Это среднеформатная зеркальная камера с двумя объективами - верхний для… twitter.com/i/web/status/1…

    17:58

    Этот список я подытожу камерой Leica M3 - легендарная дальномерная камера, заточенная под уличную фотографию pic.twitter.com/L1t7iDXKhD

    18:04

    Всем спасибо за внимание, это была отличная неделя! С вами был @ilialesik, подпишитесь на меня в твиттере и во всем остальном --->

    20:51

    На ютуб канал Tver.io youtube.com/c/TverIO?sub_c…

    20:53

    В твиттере @_tverio

    20:54

    Поставьте звездочку github.com/react-figma/re… - до 1к осталось совсем чуть-чуть

    20:56

    По любому вопросу можно также постучаться в телеграм - t.me/ilialesik

    20:58

    Остальные явки/пароли на lesik.dev

    20:58

    Happy coding! 🙌

    20:59

    github.com

    www.youtube.com

    other