pgurtovaya

11 января 2021

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

Всем привет. На этой неделе с вами будет @pgurtovaya . Я занимаюсь фронтом примерно пять лет, несколько из них в Зл… twitter.com/i/web/status/1…

8:05

Немножко расскажу о себе:
Долгое время программирование было моим хобби и мне даже не приходило в голову заниматься этим профессионально.

8:05

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

8:05

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

8:23

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

8:23

Полезный скилл номер раз – умение правильно и быстро понимать свою задачу. Круто переходить от вопроса "Что мне нуж… twitter.com/i/web/status/1…

8:49

Распространенный пример: "Нам нужна сотка на Lighthouse!111". Мой первый вопрос – "зачем?". Часто оказывается, что… twitter.com/i/web/status/1…

8:49

Lighthouse отличный инструмент (об этом мы поговорим чуть позже), но это всего лишь инструмент. pic.twitter.com/POkCku50Sh

9:05

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

10:32

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

10:32

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

10:32

Заодно можно найти там страшных монстров, типа layout recalculate на mousemove без тротлинга, заботливо скопипасчен… twitter.com/i/web/status/1…

10:32

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

12:10

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

12:10

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

12:10

Если вам хочется запилить новую фичу, то хорошее объяснение будет звучать примерно так:
"Давайте выкинем эту ужасну… twitter.com/i/web/status/1…

12:10

Дальше вы проводите эксперимент, и у вас есть циферки, которые вы можете сравнить. Циферки это всегда хорошо :)

12:10

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

14:35

Чаще всего вам предстоит создавать новый интерфейс вместе с дизайнерами. Редко дизайнер может продумать все за вас.… twitter.com/i/web/status/1…

14:35

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

14:35

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

14:35

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

14:35

Как можно прокачать чувство прекрасного?
Для меня самый лучший способ – поучиться у людей которые в этом разбираютс… twitter.com/i/web/status/1…

15:05

Полезно посмотреть какие-нибудь курсы или почитать книжки (типа The Design of Everyday Things)
Можно сделать пет-пр… twitter.com/i/web/status/1…

15:05

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

15:05

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

15:05

Полезный скилл номер три – конвертация мысли => текст. Наверное, вы уже заметили, что у меня с этим не очень хорошо… twitter.com/i/web/status/1…

16:52

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

16:52

Кроме сообщений в чатах я пишу комментарии к своему коду, комментарии к чужому коду (code review), технические док… twitter.com/i/web/status/1…

16:52

Поэтому прочитать несколько книг по теме кажется мне неплохой идеей. Больше всего мне понравилось "On Writing Well:… twitter.com/i/web/status/1…

16:52

Если читать не хочется, то вот несколько простых правил:
* Перечитать написанное и выкинуть половину.
* Перечитать… twitter.com/i/web/status/1…

16:52

Для текстов на английском лучше использовать Grammarly.

16:52

Не будьте как я и ставьте правильные кавычки :)

16:52

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

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

7:35
@jsunderhood В целом академический бэкграунд дает хорошую основу для "исследовательского" взгляда на мир - методоло… twitter.com/i/web/status/1…
11:38

Интересно что вариант "Ничего не нужно" набрал так мало голосов :)

11:44

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

12:14

Узнаете картиночку?) pic.twitter.com/1xdtOkgfM0

12:14

^ кривые Безье это не только easing для анимаций.
Ими еще можно рисовать стрелочки. Я нарисовала очень много стрело… twitter.com/i/web/status/1…

12:53

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

13:02

Школьная физика тоже очень помогает. Например если вам нужно запилить взрывающиеся конфети... или вертолеты :)

13:03
@jsunderhood Мне однажды теория графов пригодилась. Я делал что-то типо редактора разветвленных диалогов для игры в… twitter.com/i/web/status/1…

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

@jsunderhood Мне однажды теория графов пригодилась. Я делал что-то типо редактора разветвленных диалогов для игры в… twitter.com/i/web/status/1…

13:27

Для рисования часиков и pie-chart пригодится тригонометрия.

13:32

Старая, но очень полезная статья на MDN в которой есть все что нужно про кривые developer.mozilla.org/en-US/docs/Web…

13:32

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

15:28

Всегда можно посмотреть что-то по теме от MIT
ocw.mit.edu/courses/mathem…

15:49

И последняя тема на сегодня – зачем же фронтендам Data Science?
Сразу предупреждаю – я не настоящий сварщик :)

19:07

Первая причина – ML/DL это жутко весело. Просто попробуйте и вы поймете о чем я говорю.
Есть множетсво способов нач… twitter.com/i/web/status/1…

19:07

А вот очень классный курс atcold.github.io/pytorch-Deep-L… (но он немножко академический)

19:07

Используя ML/DL можно решать множество разнообразных задач.
Мне, например, как-то пришлось детектить лица прямо в браузере :)

19:07

Используя нейросеточки можно улучшать наши инструменты, например есть очень популярная история про DL-based autocom… twitter.com/i/web/status/1…

19:07

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

19:22

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

19:31

# Среда 8 твитов

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

7:54

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

7:54

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

7:54

В процессе могут возникнуть интересные performance – челенджи (ведь приходится генерить кучу элементов а потом их анимировать)

7:54

Не стоит экспериментировать на TODO-листах, лучше что-нибудь нарисовать :)

7:54

Теперь про архитектуру (кстати она победила в опросе про академический бекграунд :)
Разумеется, думать об архитекту… twitter.com/i/web/status/1…

11:44

А вот и State of JS. 2020.stateofjs.com/en-US/
Стало чуть больше Wasm ❤️. Количество знающих и юзающих WebRTC подросл… twitter.com/i/web/status/1…

14:05

Gatsby слегка теряет популярность (и мне кажется это неплохо, ибо он слишком сложен под крышкой)
Testing Library пр… twitter.com/i/web/status/1…

14:09

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

Сегодня поговорим про коммуникацию между людьми и сервисами.
Начнем с того что посложнее – общения с людьми и code… twitter.com/i/web/status/1…

9:14

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

9:14

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

9:14

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

9:14

В процессе разработки (особенно если пилится что-то большое или мы делаем какой-то сложный рефакторинг) история и с… twitter.com/i/web/status/1…

9:14

Я считаю хорошей практикой готовить свой код для ревью. И для этого нужна всего одна простая команда - `git rebase`

9:14

Я часто слышу что rebase и последующий forcepush это опасно и ужасно. На самом деле все ровно наоборот. Ребейзить и… twitter.com/i/web/status/1…

9:14
🚨 Онлайн-митап по фронтенд-перформансу докладами от @xufocoder и @mlfrg уже через неделю! Нажми "Я иду", подпишись… twitter.com/i/web/status/1…

Мне очень нравятся митапы @_tverio . В них прикольно участвовать как в качестве докладчика так и в качестве слушате… twitter.com/i/web/status/1…

🚨 Онлайн-митап по фронтенд-перформансу докладами от @xufocoder и @mlfrg уже через неделю! Нажми "Я иду", подпишись… twitter.com/i/web/status/1…

9:18

Я почти всегда делаю rebase c флагом --onto. Просто потому что не помню как работают другие варианты синтаксиса :)

9:47

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

9:47

Форспушить в общую с коллегой ветку тоже можно, но тут нужно быть аккуратнее и использовать флаг --force-with-lease… twitter.com/i/web/status/1…

9:47

Есть удобный трюк с флагом --fixup. Вы делаете коммит (когда угодно в вашей ветке) примерно так:
`git commit --fixu… twitter.com/i/web/status/1…

9:47

В отдельном тредике обсудим что делать, если фича которую предстоит отдать на ревью очень большая.
Если такое произ… twitter.com/i/web/status/1…

13:31

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

13:31

Ревью предыдущих итераций не блокер для дальнейшей разработки, ведь не обязательно открывать PR прямо в основную ветку.

13:31

Если фича состоит, скажем, из двух итераций: 'Компонент Вертолет' и 'Взрывающийся Вертолет', то можно открывать PR… twitter.com/i/web/status/1…

13:31

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

13:31

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

13:31

Иногда бывает удобно создать PR из основной ветки в пустой или какой-то специальный коммит. Эта ветка никогда никуд… twitter.com/i/web/status/1…

13:31

Вот еще несколько полезностей для code review

13:48

  • Настроить автоматический деплой всех веток. Обычно я провожу ревью в 2 этапа. На первом просто смотрю код, а на… twitter.com/i/web/status/1…
  • 13:48

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

    13:48

  • Настроить хуки и держать в страшной тайне флаг --no-verify.
    В марсианах мы так любим хуки, что даже запилили спе… twitter.com/i/web/status/1…
  • 13:48

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

    13:48

    Переходим к коммуникации с внешними источниками данных. Для начала общий опрос-вопрос: как бы вы описали бекенд(ы) вашего текущего проекта?)

    17:13

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

    Переходим к коммуникации с внешними источниками данных. Для начала общий опрос-вопрос: как бы вы описали бекенд(ы) вашего текущего проекта?)

    Круто что для многих бекенд это надежный источник данных! К сожалению это не всегда это так.

    Переходим к коммуникации с внешними источниками данных. Для начала общий опрос-вопрос: как бы вы описали бекенд(ы) вашего текущего проекта?)

    9:04

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

    9:04

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

    9:04

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

    11:19

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

    11:19

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

    11:19

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

    11:19

    Я всегда за максимально простую архитектуру и итеративное ее усложнение. Главное не пропустить момент когда действительно нужно усложнять :)

    11:19

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

    14:29

    1. Где-то есть асет, описывающий все что может прислать мне бекенд

    14:29

    2. Бекенд никогда не пришлет мне того, чего нет в описании. И мне никогда не придется искать null, спрятанный в мегабайтах JSONа

    14:29

    3. У фронта и бека есть контракт. Он распространяется на все их взаимодействия .

    14:29

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

    14:29

    Одна из технологий, которая выполняет все эти хотелки - GraphQL.
    Когда я говорю о GraphQL я подразумеваю 2 вещи: фо… twitter.com/i/web/status/1…

    14:29

    GraphQL не единственная технология, которая предоставляет строгий контракт. Так может делать RESTful апишка с OpenA… twitter.com/i/web/status/1…

    14:29

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

    14:29

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

    14:29

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

    14:29

    Самая крутая фишка GraphQL – автоматически генерируемая документация. Для генерации доков не надо делать вообще ничего.

    14:29

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

    14:29

    Когда мне надо предложить какое-нибудь новое изменение в GraphQL API я просто кидаю расширение схемы в чатик

    14:29

    И мне не надо спрашивать бекендов "Как мне получить вот эту сущность?". Я просто тыкаю нужную ссылочу. При этом я т… twitter.com/i/web/status/1…

    14:29

    GraphQL может использовать любой транспорт. Пересылать данные можно почтовыми голубями. Однако чаще это делается по HTTP или веб-сокетам.

    14:29

    В GraphQL есть Subscription, который описывает стрим событий от сервера. Чудесный строго-типизированный стрим :)

    14:29

    Валидация запросов зашита в GraphQL engine. Если вы прислали невалидный запрос, GraphQL engine заботливо подскажет… twitter.com/i/web/status/1…

    14:29

    Про схему и прикольные штуки которые можно с ней проделывать расскажу чуть попозже в отдельном тредике

    14:29

    Тред о том что прикольного можно сделать с GraphQL схемой. Схема это строготипизированное описание всего-всего что… twitter.com/i/web/status/1…

    18:09

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

    18:09

    Можно трекать историю изменений схемы (Apollo, например, предоставляет для этого удобный сервис)

    18:09

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

    18:09

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

    18:09

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

    18:09

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

    18:09

    Можно взять схему и сгенерировать из нее сервер-заглушку. Вся генерация занимает примерно 10 строчек кода

    18:09

    Совсем не обязательно использовать одну огромную схему. Ее можно разделить между вашими сервисами.
    А потом собрать… twitter.com/i/web/status/1…

    18:09

    Этот подход настолько прикольный что, возможно, вдохновил создателей webpack сделать свои федерации :) webpack.js.org/concepts/modul…

    18:09

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

    Суббота – самое время поговорить я красивостях, а именно о картиночках.
    Картиночки это огромная часть трафика на пр… twitter.com/i/web/status/1…

    11:52

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

    11:52

    Гайдов, докладов и выступлений о том как правильно готовить картиночки огромное количество. (Я тоже делала нескольк… twitter.com/i/web/status/1…

    11:52

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

    11:52

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

    11:52

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

    11:52

    Продолжаем тему про изображения. В этом тредике суперкоротко о losseless форматах.
    Loseless - сжатие без потерь. У… twitter.com/i/web/status/1…

    16:52

    Форматы, которые умеют сжиматься без потерь - gif, png, webp и всякая экзотика типа JPEG 2000. На всякий случай: jp… twitter.com/i/web/status/1…

    16:52

    gif самый древний формат. Ему аж 33 года. В основе gif лежит алгоритм LZW, который сжимает 256-цветовую палитру. К… twitter.com/i/web/status/1…

    20:11

    Прикольно то, что иногда относительно древний LZW алгоритм дает лучшие результаты чем тот что используется в PNG

    20:11

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

    20:11

    Еще PNG умеет добавлять фильтры к каждой строчке пикселей в изображении (predictive coding). Если правильно угадать… twitter.com/i/web/status/1…

    20:11

    webp это на самом деле 2 формата. Эти форматы просто пакуются в одинаковые RIFF контейнеры. В этих контейнерах есть… twitter.com/i/web/status/1…

    20:11

    lossless webp активно использует predictive coding, умеет учитывать корреляцию между разными цветовыми каналами и х… twitter.com/i/web/status/1…

    20:11

    В статьях часто встречаются утверждения типа: "формат изображений X лучше Y" или "X сжимает изображения на 23% лучш… twitter.com/i/web/status/1…

    20:21

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

    20:21

    Есть методы оценки визуального качества изображений на основе нейросеточек. Вот от Netflix например github.com/Netflix/vmaf

    20:21

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

    20:21

    А это тредик про сжатие картинок с потерями. Тут все намного интереснее и разнообразнее. У сжатия с потерями нет ни… twitter.com/i/web/status/1…

    23:45

    С потерями умеют сжиматься jpeg, webp и avif. Стоит также отметить, что все форматы без потерь тоже можно сжимать с… twitter.com/i/web/status/1…

    23:45

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

    23:45

    Для начала каждый канал изображения разбивается на кусочки. На какие – зависит от кодека (от формата). Получается ч… twitter.com/i/web/status/1…

    23:45

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

    23:45

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

    23:45

    Потери это просто зануление коэффициентов для определенных частот.

    23:45

    Древние форматы (jpeg) пилились индивидуально. Более новые – lossy webp и avif это побочное следствие того как круто развились видеокодеки.

    23:45

    avif и lossy webp это просто фреймы видео, пережатого для avif - AV1 кодеком, а для webp - VP8 кодеком, уложенные в… twitter.com/i/web/status/1…

    23:45

    Все сказанное выше про частотное разложение актуально для avif и lossy webp. А в качестве промежуточной трансформац… twitter.com/i/web/status/1…

    23:45

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

    23:45

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

    23:45

    Способы разбиения на блоки и набор режимов предсказаний отличаются для avif и webp. avif более фичастый. Например,… twitter.com/i/web/status/1…

    23:45

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

    23:45

    На низких качествах остальные форматы начинают распадаться на блоки, а avif выглядит очень круто. pic.twitter.com/lfGkN55hcN

    23:45

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

    23:45

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

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

    7:54

    Тред про шеринг знаний внутри компании и вообще везде :)
    Знания и навыки становятся намного полезнее если ими подел… twitter.com/i/web/status/1…

    9:36

    Мое мнение насчет "ой, ну это очевидная штука, зачем о ней говорить" – лучше говорить чем не говорить. То что приго… twitter.com/i/web/status/1…

    9:36

    Как мы делимся знаниями внутри компании:

    9:36

    Еще у нас есть канал где мы обсуждаем интересные события с участием или без участия марсиан.

    9:36

  • Мы пишем чекины где рассказываем об интересных технологиях/книжках/курсах или просто описываем хорошие решения, к… twitter.com/i/web/status/1…
  • 9:36

  • У нас есть специальный временной слот где можно рассказать о чем-нибудь интересном, не обязательно техническом. В… twitter.com/i/web/status/1…
  • 9:36

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

    9:36

  • Есть еще один слот где можно пообщаться или просто включить зум и послушать разговоры фоном. Это мой самый любимы… twitter.com/i/web/status/1…
  • 9:36

  • Есть еще два тематических слота. У дизайнеров – дизайн-час, у фронтов фронтенд-час. Мы предварительно собираем сп… twitter.com/i/web/status/1…
  • 9:36

  • Мы часто экспериментируем с форматами. Сейчас, например, появилась идея складывать куда-нибудь идеи небольших про… twitter.com/i/web/status/1…
  • 9:36

    В общем – получив прикольное знание лучше выпустить его на волю :) Форматов огромное количество: короткое сообщение… twitter.com/i/web/status/1…

    9:42

    И последний тредик – рандомные оклофронтовые штуки :)

    10:44

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

    10:44

    Чтобы лениво грузить картинку ставим ей атрибут loading=lazy. В хроме это гарантирует только то, что картинка на ра… twitter.com/i/web/status/1…

    10:44

    JS-парсер V8 очень ленивый. Он не будет парсить тело функции если вы ее не вызываете.

    10:44

    Советы по улучшению продуктивности:

    10:44

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

    12:03

    Внутрь SVG можно закинуть JS-строку и она будет выполняться

    13:06

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

    13:06

    WebAssembly или Wasm. Не WASM

    13:06

    Поражаюсь что изучая Rust можно найти gitbook на каждый топик. Вот, например, про rust-компилятор

    rustc-dev-guide.rust-lang.org/overview.html

    13:10

    В macOS есть программка - Color Sync Utility. Там можно посмотреть на 3D визуализации цветовых пространств

    13:20

    Осталось еще много всего, чем хочется поделиться, но нужно себя останавливать :)

    Спасибо всем большое-прибольшое 🤗… twitter.com/i/web/status/1…

    13:44

    Меня можно найти вот здесь @pgurtovaya или в телеграмчике t.me/polina_gurtova…

    13:44
    @jsunderhood Также надо сказать, что это работает в обе стороны, поэтому дизайнеру надо не бояться приходить к разр… twitter.com/i/web/status/1…
    14:42

    other