#заметка дня
Итак, в разработке пульта на Flutter случилось — конечно же — неожиданное.
И неожиданное это тот факт, что новые телевизоры Samsung не поддерживают получение списка приложений и их иконок. Выдают 401. Выходит, API-то есть, а вот разрешения на использование — нет. И его не получить, потому что Samsung сдвигает свою инфраструктуру в сторону полурабочего SmartThings-облака.
Ну как, новые. Года с 2020. Просто меня интересовал конкретно мой, а он 2019 и документации в принципе исчезающе мало. Tizen и Tizen.
Что же делать?
Да ничего особого не делать. Нужно где-то найти список приложений и их иконки, ведь запуск всё так же остался возможен: по id приложения.
Очевидно, в голову приходит мысль, что для Smart TV должно быть некое подобие аппстора. И действительно: https://www.samsung.com/us/tvs/smart-tv/samsung-tv-apps/
Надеюсь, оно хотя бы SPA? Да! Список приложений получается через эндпоинт
Выглядит шикарно! В ответ получаем JSON с полным числом приложений — total — и массивом из 24 позиций. Так, а остальное как?
И тут моя беспокойная голова зачем-то решила проверить, а что там по остальным странам, и я начал перебирать коды стран в адресе самого магазина.
Финский вообще не заработал, французского нет, а в российском не работала постраничная навигация.
Ладно, не первый же раз работаем. Смотрим на список параметров запроса, видим
Посмотреть, работает ли навигация в американском аппсторе, я не догадался. Поэтому решил абьюзить на полную и просто передал 3336 в
Вывод 1: защищайте свои API.
Ну и мне стоило все же посмотреть на работу американского аппстора. Потому что, как оказалось, offset у них — это страница! То есть, для получения приложений с 11 по 20 надо было передавать не
Вывод 2: играешь в CTF — хотя бы немного думай.
Впрочем, своей цели я добился. Списки приложений есть, иконки — там же. Осталось подготовить наборы самых популярных приложений разных стран — и вперёд.
…а ведь Samsung мог просто не закрывать API на телевизоре.
#api #ctf
Итак, в разработке пульта на Flutter случилось — конечно же — неожиданное.
И неожиданное это тот факт, что новые телевизоры Samsung не поддерживают получение списка приложений и их иконок. Выдают 401. Выходит, API-то есть, а вот разрешения на использование — нет. И его не получить, потому что Samsung сдвигает свою инфраструктуру в сторону полурабочего SmartThings-облака.
Ну как, новые. Года с 2020. Просто меня интересовал конкретно мой, а он 2019 и документации в принципе исчезающе мало. Tizen и Tizen.
Что же делать?
Да ничего особого не делать. Нужно где-то найти список приложений и их иконки, ведь запуск всё так же остался возможен: по id приложения.
Очевидно, в голову приходит мысль, что для Smart TV должно быть некое подобие аппстора. И действительно: https://www.samsung.com/us/tvs/smart-tv/samsung-tv-apps/
Надеюсь, оно хотя бы SPA? Да! Список приложений получается через эндпоинт
/list с вполне однозначным набором параметров: https://vdapi.samsung.com/tvs/tvpersonalize/api/tvapps/appserver/list?country_code=US&language_code=en&offset=0&size=24&order=asc&category=all Выглядит шикарно! В ответ получаем JSON с полным числом приложений — total — и массивом из 24 позиций. Так, а остальное как?
И тут моя беспокойная голова зачем-то решила проверить, а что там по остальным странам, и я начал перебирать коды стран в адресе самого магазина.
Финский вообще не заработал, французского нет, а в российском не работала постраничная навигация.
Ладно, не первый же раз работаем. Смотрим на список параметров запроса, видим
offset и size. Это у нас типичный случай оконной пагинации (помимо курсорной и постраничной). В таких случаях просто передаем что-то вида загрузить 48 приложений начиная с 96. И… не работает. Какой вывод я сделал? Правильно: API сломано. Посмотреть, работает ли навигация в американском аппсторе, я не догадался. Поэтому решил абьюзить на полную и просто передал 3336 в
size с offset 0. Число 3336 не случайно — API сам отдает его с пустой категорией. И, внезапно, я получил ответ, содержащий все приложения. Ждать пришлось весьма долго, я ожидал, что для таких вещей нужен токен. Но нет. Вывод 1: защищайте свои API.
Ну и мне стоило все же посмотреть на работу американского аппстора. Потому что, как оказалось, offset у них — это страница! То есть, для получения приложений с 11 по 20 надо было передавать не
offset=10&size=10, а offset=1&size=10. Сбивает с толку, спасибо, что хотя бы не курсор. Вывод 2: играешь в CTF — хотя бы немного думай.
Впрочем, своей цели я добился. Списки приложений есть, иконки — там же. Осталось подготовить наборы самых популярных приложений разных стран — и вперёд.
…а ведь Samsung мог просто не закрывать API на телевизоре.
#api #ctf
❤10👍8
#ссылка дня
Coinbase Design System (CDS) — это библиотека интерфейсных компонентов от Coinbase для React и React Native, которая задаёт единый визуальный язык во всех их продуктах.
Основная цель — консистентность и кроссплатформенность: те же компоненты работают и в вебе, и в мобильных приложениях, без боли с адаптацией.
В арсенале поддержка тёмной и светлой темы, кастомизация через темы и атомарные стили для скорости.
Анимации у них забавные. И, ожидаемо, различные рекламные блоки аж хорошо вышли.
Крипта упадёт, а дизайн-система останется: cds.coinbase.com
#design #system
Coinbase Design System (CDS) — это библиотека интерфейсных компонентов от Coinbase для React и React Native, которая задаёт единый визуальный язык во всех их продуктах.
Основная цель — консистентность и кроссплатформенность: те же компоненты работают и в вебе, и в мобильных приложениях, без боли с адаптацией.
В арсенале поддержка тёмной и светлой темы, кастомизация через темы и атомарные стили для скорости.
Анимации у них забавные. И, ожидаемо, различные рекламные блоки аж хорошо вышли.
Крипта упадёт, а дизайн-система останется: cds.coinbase.com
#design #system
👍10
#статья дня
В Chrome 139 появилась возможность писать собственные функции прямо в CSS. Теперь можно не дублировать
Уна Кравец показала 5 примеров:
—
—
—
—
—
Дальше — больше: в будущем появятся
una.im/5-css-functions
#css #function
В Chrome 139 появилась возможность писать собственные функции прямо в CSS. Теперь можно не дублировать
calc() и clamp(), а объявлять их один раз и вызывать как в JS.Уна Кравец показала 5 примеров:
—
--negate() — переворачивает знак числа;—
--opacity() — задаёт прозрачность цвета;—
--fluid-type() — делает адаптивную типографику;—
--conditional-radius() — убирает скругления у края экрана;—
--layout-sidebar() — строит сетку с сайдбаром без медиазапросов.Дальше — больше: в будущем появятся
@mixin и @apply, и CSS наконец-то получит свои настоящие функции. Ну хоть в Хроме теперь будет счастье.una.im/5-css-functions
#css #function
❤14🫡2🤩1
#статья дня
Джейк Арчибальд решил проверить, как браузеры сегодня показывают картинки «по частям» — ту самую прогрессивную отрисовку, где сначала видишь мутное пятно, а потом — полную версию.
Когда-то это было базовой оптимизацией. При медленном интернете пользователю хотелось показать хоть что-то. Кто помнит, что картинки когда-то могли грузиться как сверху вниз, так и снизу вверх? :)
Формат JPEG буквально изобрёл прогрессивную загрузку и до сих пор работает — но Safari показывает картинку пикселями и заметно грубее, чем Chrome и Firefox, где изображение обновляется плавно.
Прогрессивный JPEG также немного дольше декодируется, но разница в миллисекунды.
JPEG XL должен был стать преемником — и вроде умеет прогрессивный рендеринг, но на практике:
— в Safari его нет вообще;
— в Chromium он пока экспериментальный;
— а декодится формат пугающе медленно.
Арчибальд отмечает, что в тестах JPEG XL показывал результат в 2–5 раз хуже AVIF, что делает его пока что малопригодным для реального веба.
Зато на горизонте появился прогрессивный AVIF.
В Chromium уже можно использовать слои. Этот режим разбивает изображение на два слоя — первый лёгкий, размытый и почти мгновенный, второй — финальный, с полным качеством. Правда, для этого надо пересобрать libavif и собрать изображение заново.
При этом информация с размытого слоя переиспользуется в качественном слое. Такой себе SQIP для богатых.
Safari и Firefox пока это не поддерживают, но сам подход перспективный: он даёт ту же визуальную плавность, что и старый прогрессивный JPEG, при гораздо лучшем сжатии.
Арчибальд подчеркивает: прогрессивность не решает проблему responsive изображений — браузеру всё равно нужно заранее знать, какой размер подгружать, иначе можно легко скачать лишние мегабайты.
Так что, возможно, будущее не в прогрессивных кодеках, а в умных форматах, где превью и финальное изображение встроены вместе, но управляются логикой загрузки.
В статье прекрасные имитаторы загрузки, можно прям байт за байтом отследить всю историю демонстрации изображения. Очень круто.
Ну и будьте готовы — лиса с иллюстрации успеет вам надоесть.
https://jakearchibald.com/2025/present-and-future-of-progressive-image-rendering/
#jpeg #img #avif #img
Джейк Арчибальд решил проверить, как браузеры сегодня показывают картинки «по частям» — ту самую прогрессивную отрисовку, где сначала видишь мутное пятно, а потом — полную версию.
Когда-то это было базовой оптимизацией. При медленном интернете пользователю хотелось показать хоть что-то. Кто помнит, что картинки когда-то могли грузиться как сверху вниз, так и снизу вверх? :)
Формат JPEG буквально изобрёл прогрессивную загрузку и до сих пор работает — но Safari показывает картинку пикселями и заметно грубее, чем Chrome и Firefox, где изображение обновляется плавно.
Прогрессивный JPEG также немного дольше декодируется, но разница в миллисекунды.
JPEG XL должен был стать преемником — и вроде умеет прогрессивный рендеринг, но на практике:
— в Safari его нет вообще;
— в Chromium он пока экспериментальный;
— а декодится формат пугающе медленно.
Арчибальд отмечает, что в тестах JPEG XL показывал результат в 2–5 раз хуже AVIF, что делает его пока что малопригодным для реального веба.
Зато на горизонте появился прогрессивный AVIF.
В Chromium уже можно использовать слои. Этот режим разбивает изображение на два слоя — первый лёгкий, размытый и почти мгновенный, второй — финальный, с полным качеством. Правда, для этого надо пересобрать libavif и собрать изображение заново.
При этом информация с размытого слоя переиспользуется в качественном слое. Такой себе SQIP для богатых.
Safari и Firefox пока это не поддерживают, но сам подход перспективный: он даёт ту же визуальную плавность, что и старый прогрессивный JPEG, при гораздо лучшем сжатии.
Арчибальд подчеркивает: прогрессивность не решает проблему responsive изображений — браузеру всё равно нужно заранее знать, какой размер подгружать, иначе можно легко скачать лишние мегабайты.
Так что, возможно, будущее не в прогрессивных кодеках, а в умных форматах, где превью и финальное изображение встроены вместе, но управляются логикой загрузки.
В статье прекрасные имитаторы загрузки, можно прям байт за байтом отследить всю историю демонстрации изображения. Очень круто.
Ну и будьте готовы — лиса с иллюстрации успеет вам надоесть.
https://jakearchibald.com/2025/present-and-future-of-progressive-image-rendering/
#jpeg #img #avif #img
1👍11❤3
#ссылка дня
Сначала Bun сделал вызов Node.js и Deno, впихнув невпихуемое и сделав рантайм быстрым. Теперь он выходит на территорию фронтенд-сборщиков, где позиции Node.js и сопутствующих сборщиков казались весьма стабильными.
С Bun 1.3 можно сёрвить HTML-файлы напрямую, а JavaScript, TypeScript, JSX и CSS обрабатываются автоматически. Горячая перезагрузка позволяет видеть изменения мгновенно, а для проектов на React достаточно
Внутри появились новые возможности: поддержка MySQL наряду с PostgreSQL и SQLite, встроенный Redis-клиент, улучшенная маршрутизация, WebSocket, работа с cookies и новые механизмы изолированных установок пакетов. Всё это делает Bun 1.3 полноценной средой, где фронтенд, бэкенд и сборка объединены в одном инструменте.
Теперь Bun действительно бандлит, простите
https://bun.com/blog/bun-v1.3
#bun #node #bundle #webpack
Сначала Bun сделал вызов Node.js и Deno, впихнув невпихуемое и сделав рантайм быстрым. Теперь он выходит на территорию фронтенд-сборщиков, где позиции Node.js и сопутствующих сборщиков казались весьма стабильными.
С Bun 1.3 можно сёрвить HTML-файлы напрямую, а JavaScript, TypeScript, JSX и CSS обрабатываются автоматически. Горячая перезагрузка позволяет видеть изменения мгновенно, а для проектов на React достаточно
bun init --react, чтобы получить готовую среду. Сборка для продакшн стала проще: bun build --production оптимизирует проект без лишних конфигов.Внутри появились новые возможности: поддержка MySQL наряду с PostgreSQL и SQLite, встроенный Redis-клиент, улучшенная маршрутизация, WebSocket, работа с cookies и новые механизмы изолированных установок пакетов. Всё это делает Bun 1.3 полноценной средой, где фронтенд, бэкенд и сборка объединены в одном инструменте.
Теперь Bun действительно бандлит, простите
https://bun.com/blog/bun-v1.3
#bun #node #bundle #webpack
1❤19👎4👍3
#дайджест недели, чуть не забыл!
Понедельник
Telegram на Swift внезапно сделал свои «iOS26-виджеты» под iOS18, не дожидаясь будущего.
https://www.tgoop.com/htmlshit/3841
Вторник
Вытаскиваем список приложений для телевизоров Samsung, рассматривая API магазина приложений.
https://www.tgoop.com/htmlshit/3842
Coinbase Design System (CDS) — единая библиотека для React и React Native.
Общий визуальный язык, темы, атомарные стили, адаптивность.
https://www.tgoop.com/htmlshit/3844
Среда
В Chrome 139 появились функции в CSS — можно объявлять свои
Уна Кравец показывает, как обойтись без бесконечных calc() и clamp().
Следом придут
https://www.tgoop.com/htmlshit/3845
Четверг
Джейк Арчибальд проверил, как браузеры рендерят картинки по частям.
Прогрессивный JPEG жив, Safari груб, AVIF умеет слои.
https://www.tgoop.com/htmlshit/3847
Пятница
Bun 1.3 вышел из роли рантайма — теперь он ещё и сборщик.
Поддержка MySQL, Redis, WebSocket, cookies, горячая перезагрузка и
https://www.tgoop.com/htmlshit/3849
Суббота
Apple Macintosh, 1984: руководство объясняет пользователю, что такое «скроллинг».
Картинки — лучше любых слов.
https://www.tgoop.com/htmlshit/3850
Понедельник
Telegram на Swift внезапно сделал свои «iOS26-виджеты» под iOS18, не дожидаясь будущего.
https://www.tgoop.com/htmlshit/3841
Вторник
Вытаскиваем список приложений для телевизоров Samsung, рассматривая API магазина приложений.
https://www.tgoop.com/htmlshit/3842
Coinbase Design System (CDS) — единая библиотека для React и React Native.
Общий визуальный язык, темы, атомарные стили, адаптивность.
https://www.tgoop.com/htmlshit/3844
Среда
В Chrome 139 появились функции в CSS — можно объявлять свои
--negate(), --opacity(), --fluid-type().Уна Кравец показывает, как обойтись без бесконечных calc() и clamp().
Следом придут
@mixin и @apply.https://www.tgoop.com/htmlshit/3845
Четверг
Джейк Арчибальд проверил, как браузеры рендерят картинки по частям.
Прогрессивный JPEG жив, Safari груб, AVIF умеет слои.
https://www.tgoop.com/htmlshit/3847
Пятница
Bun 1.3 вышел из роли рантайма — теперь он ещё и сборщик.
Поддержка MySQL, Redis, WebSocket, cookies, горячая перезагрузка и
bun build --production без конфигов.https://www.tgoop.com/htmlshit/3849
Суббота
Apple Macintosh, 1984: руководство объясняет пользователю, что такое «скроллинг».
Картинки — лучше любых слов.
https://www.tgoop.com/htmlshit/3850
❤3🫡1
#заметка дня
Давайте за жизнь поговорим, пока AWS us-east-1 лежит.
Я весьма люблю стендап разного толка. Когда наблюдаешь за развитием персонажей годами (а для особо давних представителей жанра процесс может длиться десятилетия), вполне можно выработать отношение к лирическому герою автора.
Да-да, давайте не забывать, что личность автора и его продукт — вещи разные. Хотя, конечно, без переноса личности автора на личность героя зачастую не обходится.
Ладно, это я к чему. Мне весьма по душе приходится работа Джимми Карра с аудиторией, а особенно — его поздние тейки о жизни, детях и работе. Очень неожиданно получать рабочие советы от автора чаечки, если вы понимаете, о чём я.
Один из таких: «Жизнь, которую ты хочешь получить, лежит за работой, которую ты не хочешь делать».
Где-то здесь кто-то кричит «чекни привилегии», но мы сейчас не об этом.
Так вот, наверное, многие из вас уже прочитали откровение Дмитрия Свиридкина — автора книги про Undefined behaviors в C++ — об уходе из Amazon: https://nekrolm.github.io/blog.html
Я, наверное, никогда не достигну уровня инженеров, подобных Дмитрию, но уровень стресса прекрасно понимаю, ибо кто из нас не пытался яростно рваться наверх, ступая по головам как близких, так и переступая через себя. Стресс, ночная работа, оправдание ночной работы, SMS об упавшем сервере за рулём.
И в моём случае это не то чтобы было совсем в никуда, но точно стоило слишком дорого. И теперь, в почти уже 38, довольно сложно забрутфорсить карьеру. Приходится быть более эффективным.
И тут, собственно, и встаёт вопрос: «А действительно ли я правильно понимаю объём работы, которую я не хочу делать, ради получения той жизни, которую хочу?»
Но при этом есть и люди, которые и в большем возрасте продолжают ловить кайф от подобной скачки. И у них при этом получается! И я очень за них рад.
А мне же остаётся использовать полученный во времена скачек опыт в свою пользу и поднимать планку иначе.
Ведь... Bar is sooooooooo high
А вы, котаны, всё ещё наводите суету или уже иначе карабкаетесь?
Давайте за жизнь поговорим, пока AWS us-east-1 лежит.
Я весьма люблю стендап разного толка. Когда наблюдаешь за развитием персонажей годами (а для особо давних представителей жанра процесс может длиться десятилетия), вполне можно выработать отношение к лирическому герою автора.
Да-да, давайте не забывать, что личность автора и его продукт — вещи разные. Хотя, конечно, без переноса личности автора на личность героя зачастую не обходится.
Ладно, это я к чему. Мне весьма по душе приходится работа Джимми Карра с аудиторией, а особенно — его поздние тейки о жизни, детях и работе. Очень неожиданно получать рабочие советы от автора чаечки, если вы понимаете, о чём я.
Один из таких: «Жизнь, которую ты хочешь получить, лежит за работой, которую ты не хочешь делать».
Где-то здесь кто-то кричит «чекни привилегии», но мы сейчас не об этом.
Так вот, наверное, многие из вас уже прочитали откровение Дмитрия Свиридкина — автора книги про Undefined behaviors в C++ — об уходе из Amazon: https://nekrolm.github.io/blog.html
Я, наверное, никогда не достигну уровня инженеров, подобных Дмитрию, но уровень стресса прекрасно понимаю, ибо кто из нас не пытался яростно рваться наверх, ступая по головам как близких, так и переступая через себя. Стресс, ночная работа, оправдание ночной работы, SMS об упавшем сервере за рулём.
И в моём случае это не то чтобы было совсем в никуда, но точно стоило слишком дорого. И теперь, в почти уже 38, довольно сложно забрутфорсить карьеру. Приходится быть более эффективным.
И тут, собственно, и встаёт вопрос: «А действительно ли я правильно понимаю объём работы, которую я не хочу делать, ради получения той жизни, которую хочу?»
Но при этом есть и люди, которые и в большем возрасте продолжают ловить кайф от подобной скачки. И у них при этом получается! И я очень за них рад.
А мне же остаётся использовать полученный во времена скачек опыт в свою пользу и поднимать планку иначе.
Ведь... Bar is sooooooooo high
А вы, котаны, всё ещё наводите суету или уже иначе карабкаетесь?
🤩8❤4
#новость дня
React наконец-то съехал от родителей: https://engineering.fb.com/2025/10/07/open-source/introducing-the-react-foundation-the-new-home-for-react-react-native/
Когда-то это был домашний проект Facebook, призванный подлатать их новостную ленту и упростить генерацию мешанины в текстах рекламных объявлений (вы ещё помните такое? рассказать?). Потом код открыли — и случайно изобрели современный фронтенд. JSX, компонентный подход, декларативность — пропаганда вот этого вот всего.
Но чем популярнее становился React, тем нелепее выглядело, что он всё ещё приписан к Meta. Комьюнити писало RFC, спорило в GitHub-тредах, Дэн наше всё писал длинные эссе, а потом всё равно все ждали, пока кто-нибудь из Menlo Park скажет «одобрено». React давно жил как независимый проект — просто юридически оставался семейной реликвией.
Пока запрещенная в России террористическая организация Meta занималась метавселенными, React-мир крутился вокруг Vercel и Next.js. Именно они сделали React пригодным для продакшена: собрали все фичи в удобную платформу и задали курс для всей экосистемы. По сути, Vercel уже несколько лет пишет реальную «дорожную карту» React, а теперь это просто оформилось официально.
Так что да — теперь есть React Foundation, под крылом Linux Foundation. В совете — Meta, Microsoft, Amazon, Vercel, Expo и прочие большие люди. Meta оставляет три миллиона долларов на карманные расходы и обещает не мешать.
Linux Foundation, гы-гы, вот так и настанет вендекапец. Слышали, там уже поиск на React Native?
Ну что, котаны, давно пора было? Или надо было в Apache Foundation? :)
P. S. а ещё я забыл написать что ещё 7 октября вышел React Compiler 1.0, но я его сам что-то ещё не опробовал.
#react #meta #linux
React наконец-то съехал от родителей: https://engineering.fb.com/2025/10/07/open-source/introducing-the-react-foundation-the-new-home-for-react-react-native/
Когда-то это был домашний проект Facebook, призванный подлатать их новостную ленту и упростить генерацию мешанины в текстах рекламных объявлений (вы ещё помните такое? рассказать?). Потом код открыли — и случайно изобрели современный фронтенд. JSX, компонентный подход, декларативность — пропаганда вот этого вот всего.
Но чем популярнее становился React, тем нелепее выглядело, что он всё ещё приписан к Meta. Комьюнити писало RFC, спорило в GitHub-тредах, Дэн наше всё писал длинные эссе, а потом всё равно все ждали, пока кто-нибудь из Menlo Park скажет «одобрено». React давно жил как независимый проект — просто юридически оставался семейной реликвией.
Пока запрещенная в России террористическая организация Meta занималась метавселенными, React-мир крутился вокруг Vercel и Next.js. Именно они сделали React пригодным для продакшена: собрали все фичи в удобную платформу и задали курс для всей экосистемы. По сути, Vercel уже несколько лет пишет реальную «дорожную карту» React, а теперь это просто оформилось официально.
Так что да — теперь есть React Foundation, под крылом Linux Foundation. В совете — Meta, Microsoft, Amazon, Vercel, Expo и прочие большие люди. Meta оставляет три миллиона долларов на карманные расходы и обещает не мешать.
Linux Foundation, гы-гы, вот так и настанет вендекапец. Слышали, там уже поиск на React Native?
Ну что, котаны, давно пора было? Или надо было в Apache Foundation? :)
P. S. а ещё я забыл написать что ещё 7 октября вышел React Compiler 1.0, но я его сам что-то ещё не опробовал.
#react #meta #linux
1👍11❤3
Сегодня делюсь с вами авторским каналом, на который уже давно подписан сам.
Александр Григоренко — опытный фронтенд-архитектор и продуктовый инженер. Он пишет о зрелом инженерном подходе, архитектуре, лидерстве и продуктовой разработке. Ещё у него есть проект Web Audio Lab — образовательная платформа для обучения Web Audio API и синтезе звука, которую он делает с нуля и открыто показывает процесс.
Узнать Александра лучше можно в его постах о ценностях в профессии:
- Личный взгляд на профессиональные ценности в разработке
- Почему я отказался внедрять тёмные паттерны и не получил оффер на фронтенд-лида
- Как я пришёл к цифровому минимализму и приручил хаос
Также он пишет полезные посты про технологии:
- CSS-in-JS умер — да здравствует CSS-in-JS!
- Как построить свою UI-библиотеку на базе Vanilla Extract
- Как я стал официальным переводчиком книги издательства O'Reilly про Web Audio API
Знакомьтесь, подписывайтесь.
Ссылка на канал
Александр Григоренко — опытный фронтенд-архитектор и продуктовый инженер. Он пишет о зрелом инженерном подходе, архитектуре, лидерстве и продуктовой разработке. Ещё у него есть проект Web Audio Lab — образовательная платформа для обучения Web Audio API и синтезе звука, которую он делает с нуля и открыто показывает процесс.
Узнать Александра лучше можно в его постах о ценностях в профессии:
- Личный взгляд на профессиональные ценности в разработке
- Почему я отказался внедрять тёмные паттерны и не получил оффер на фронтенд-лида
- Как я пришёл к цифровому минимализму и приручил хаос
Также он пишет полезные посты про технологии:
- CSS-in-JS умер — да здравствует CSS-in-JS!
- Как построить свою UI-библиотеку на базе Vanilla Extract
- Как я стал официальным переводчиком книги издательства O'Reilly про Web Audio API
Знакомьтесь, подписывайтесь.
Ссылка на канал
Telegram
alexgriss.tech
Я — Александр Григоренко, фронтенд-архитектор и продуктовый инженер.
Пишу о зрелом инженерном мышлении, лидерстве, архитектуре и продуктовой разработке, создаю образовательный проект Web Audio Lab.
Сайт: https://alexgriss.tech
ТГ: @astroscientist
Пишу о зрелом инженерном мышлении, лидерстве, архитектуре и продуктовой разработке, создаю образовательный проект Web Audio Lab.
Сайт: https://alexgriss.tech
ТГ: @astroscientist
👍9
#видео дня
Алекс Ильин и Алена Батицкая (Дока) выкатили весьма интересный формат короткого видеоподкаста, больше напоминающий теннисный матч: Code Cleanup.
Подкаст будет посвящён рефакторингу кода. Почему будет? Ну, потому что вот только-только первый выпуск вышел, посвящённый рефакторингу форм в React 19: https://youtu.be/JdMGSgh9uHA
Не просто «а давайте всё поменяем», а почему конкретно и зачем. Ведущие подкидывают друг-другу вопросы и предложения, подхватывая на лету. Потому, собственно, и теннисный матч.
Я очень надеюсь, у них хватит сил продолжать, поскольку получилось весьма забавно и по делу. А ещё я тут сдул пыль с одного старого проекта, потому для меня ещё и вовремя.
#react #podcast #refactoring
Алекс Ильин и Алена Батицкая (Дока) выкатили весьма интересный формат короткого видеоподкаста, больше напоминающий теннисный матч: Code Cleanup.
Подкаст будет посвящён рефакторингу кода. Почему будет? Ну, потому что вот только-только первый выпуск вышел, посвящённый рефакторингу форм в React 19: https://youtu.be/JdMGSgh9uHA
Не просто «а давайте всё поменяем», а почему конкретно и зачем. Ведущие подкидывают друг-другу вопросы и предложения, подхватывая на лету. Потому, собственно, и теннисный матч.
Я очень надеюсь, у них хватит сил продолжать, поскольку получилось весьма забавно и по делу. А ещё я тут сдул пыль с одного старого проекта, потому для меня ещё и вовремя.
#react #podcast #refactoring
👍14
#инструмент дня
Нашел тут ESLint-плагин eslint-plugin-react-you-might-not-need-an-effect, вдохновлённый одноимённой статьёй из официальной документации React.
Он пытается отучить нас пихать
React, впрочем, не стоит на месте: в версии 19.1 появился useEffectEvent, который позволяет выносить логику из эффектов и вроде бы делает их чище и предсказуемее.
Но к этому моменту все уже слегка устали от того, что каждый релиз приносит ещё один способ «наконец-то правильно» писать эффекты.
Плагин же решает вопрос просто: он показывает, где
#react #eslint
Нашел тут ESLint-плагин eslint-plugin-react-you-might-not-need-an-effect, вдохновлённый одноимённой статьёй из официальной документации React.
Он пытается отучить нас пихать
useEffect везде, где что-то меняется, и напоминает, что часто эффекты просто не нужны — всё можно выразить данными и рендером.React, впрочем, не стоит на месте: в версии 19.1 появился useEffectEvent, который позволяет выносить логику из эффектов и вроде бы делает их чище и предсказуемее.
Но к этому моменту все уже слегка устали от того, что каждый релиз приносит ещё один способ «наконец-то правильно» писать эффекты.
Плагин же решает вопрос просто: он показывает, где
useEffect вам, скорее всего, не нужен. Без философии — только суровая плётка погонщика.#react #eslint
👍13❤1
#фишка дня
«Как компьютер стал современным» журнала 8БИТ от Яндекс Образования
Классная серия статей, в которой просто и понятно рассказывают, как мы смогли от сорокатонных компьютеров прийти к современным MacBook. Главные инженерные, физические и математические открытия, детальные (но простые!) пояснения как работает ПО, программы и интернет.
Отличный контент для тех, кто хочет детальнее понять как работает железо. Почитать можно по ссылке
«Как компьютер стал современным» журнала 8БИТ от Яндекс Образования
Классная серия статей, в которой просто и понятно рассказывают, как мы смогли от сорокатонных компьютеров прийти к современным MacBook. Главные инженерные, физические и математические открытия, детальные (но простые!) пояснения как работает ПО, программы и интернет.
Отличный контент для тех, кто хочет детальнее понять как работает железо. Почитать можно по ссылке
👍7❤3
#инструмент дня
Когда Mac засыпает посреди сборки или загрузки — не обязательно ставить сторонние приложения, чтобы этого избежать. В macOS уже есть встроенный инструмент:
Основные ключи:
Можно запустить команду вместе со своей задачей:
Альтернатива для любителей GUI — старая утилита Caffeine, или другие «keep awake» приложения из Mac App Store.
Накидайте в комментарии вариантов для других ОС.
#mac #sleep #tool
Когда Mac засыпает посреди сборки или загрузки — не обязательно ставить сторонние приложения, чтобы этого избежать. В macOS уже есть встроенный инструмент:
caffeinate
Он мешает системе уснуть, пока вы этого не захотите.Основные ключи:
-d — не гасить дисплей-i — не переходить в сон-m — не «усыплять» диски-s — держать систему бодрой при подключённом питании-u — эмулировать активность пользователяМожно запустить команду вместе со своей задачей:
caffeinate -i npm run build
Пока идёт сборка — Mac не уснёт.Альтернатива для любителей GUI — старая утилита Caffeine, или другие «keep awake» приложения из Mac App Store.
Накидайте в комментарии вариантов для других ОС.
#mac #sleep #tool
🤩9👍4
Последняя неделя, чтобы успеть подать заявку на Yandex Cup 2025 — международный чемпионат по программированию с призовым фондом в 12 млн рублей.
Для участников доступно 6 направлений: аналитика, фронтенд и бэкенд, мобильная разработка, машинное обучение и спортивное программирование. Последние два направления международные и задачи по ним будут доступны на русском и английском языках. Принять участие могут взрослые разработчики со всего мира и юниоры 14-18 лет из России.
До 29 октября участников ждет пробный тур для знакомства с платформой и решением задач прошлых лет, а уже 2 ноября пройдет квалификация для большинства направлений. Отборочный тур по машинному обучению продлится до 5 ноября.
Очный финал и церемония награждения пройдут 5-7 декабря в Стамбуле — городе, где веками оттачивали мастерство рукоделия и искусства. Участники смогут примерить на себя роль мастеров крафта, чьим инструментом станет код, а материалом — технологии.
Успейте зарегистрироваться на чемпионат до 29 октября.
Для участников доступно 6 направлений: аналитика, фронтенд и бэкенд, мобильная разработка, машинное обучение и спортивное программирование. Последние два направления международные и задачи по ним будут доступны на русском и английском языках. Принять участие могут взрослые разработчики со всего мира и юниоры 14-18 лет из России.
До 29 октября участников ждет пробный тур для знакомства с платформой и решением задач прошлых лет, а уже 2 ноября пройдет квалификация для большинства направлений. Отборочный тур по машинному обучению продлится до 5 ноября.
Очный финал и церемония награждения пройдут 5-7 декабря в Стамбуле — городе, где веками оттачивали мастерство рукоделия и искусства. Участники смогут примерить на себя роль мастеров крафта, чьим инструментом станет код, а материалом — технологии.
Успейте зарегистрироваться на чемпионат до 29 октября.
🤡9❤1
#фишка дня
Если вам нужны более мягкие градиентные переходы, но лень возиться с easing-формулами, попробуйте комбинировать их. Например, радиальные градиенты в прозрачность: https://codepen.io/alinaki/pen/eYRBbYj?editors=1100
Во многих случаях это именно то, что нужно. Менее насыщенная середина с двумя акцентами по краям.
Про то, что же такое easing-градиенты я писал тут: https://www.tgoop.com/htmlshit/581
#css #gradient #radial #бородач
Если вам нужны более мягкие градиентные переходы, но лень возиться с easing-формулами, попробуйте комбинировать их. Например, радиальные градиенты в прозрачность: https://codepen.io/alinaki/pen/eYRBbYj?editors=1100
Во многих случаях это именно то, что нужно. Менее насыщенная середина с двумя акцентами по краям.
Про то, что же такое easing-градиенты я писал тут: https://www.tgoop.com/htmlshit/581
#css #gradient #radial #бородач
❤3👍2
#статья дня
Каждый, кто хоть раз поручал задачу джуну, знает это чувство: вроде бы всё объяснил, а результат — что-то странное. В статье The AI Coding Trap Крис Лой пишет, что работа с ИИ похожа именно на это. Только теперь джуниор не человек, а алгоритм — послушный, быстрый, но без интуиции и контекста. И если человеку можно сказать «подумай ещё», то ИИ просто перегенерирует тот же бред, но с другим форматированием.
Все знакомые мне лиды, которые действительно активно используют агентов в работе, давно пришли к тому же выводу: LLM-агенты — это потрясающе быстрые и усердные джуны. Они не устают, не спорят, не теряют мотивацию и могут за ночь сделать объём, на который у человека ушла бы неделя. Но — как и с живыми джунами — ключевое слово тут «под присмотром». Им нужен контекст, ревью и здравый смысл наставника. И статья Лоя отлично это подтверждает: ИИ может безупречно исполнять, но не способен осознанно решать.
Мы делегируем людям, потому что они умеют сомневаться и уточнять смысл. Делегируем ИИ — потому что он не спорит. И это очень даже удобно, пока не оказывается, что спорить всё-таки было нужно. Настоящая сила инженера, как пишет Лой, — в умении делегировать осмысленно: оставить машине то, что механично, а себе — то, что требует понимания.
ИИ не чувствует, где проходит граница между «работает» и «правильно». Он не понимает компромиссов между качеством и скоростью, простотой и гибкостью. И если человек может сказать: «решение плоховато, но временно сгодится», то ИИ просто создаст что-то, что выглядит убедительно — и этим опасно.
Так что главный вызов сейчас — не научиться кодить с ИИ, а научиться управлять им. Не пытаться отдать машине мышление, а использовать её как инструмент исполнения уже продуманных решений. Машина может писать быстро, исправно и без усталости. Но думать за вас — всё ещё не умеет.
#llm #ai #agent #junior
Каждый, кто хоть раз поручал задачу джуну, знает это чувство: вроде бы всё объяснил, а результат — что-то странное. В статье The AI Coding Trap Крис Лой пишет, что работа с ИИ похожа именно на это. Только теперь джуниор не человек, а алгоритм — послушный, быстрый, но без интуиции и контекста. И если человеку можно сказать «подумай ещё», то ИИ просто перегенерирует тот же бред, но с другим форматированием.
Все знакомые мне лиды, которые действительно активно используют агентов в работе, давно пришли к тому же выводу: LLM-агенты — это потрясающе быстрые и усердные джуны. Они не устают, не спорят, не теряют мотивацию и могут за ночь сделать объём, на который у человека ушла бы неделя. Но — как и с живыми джунами — ключевое слово тут «под присмотром». Им нужен контекст, ревью и здравый смысл наставника. И статья Лоя отлично это подтверждает: ИИ может безупречно исполнять, но не способен осознанно решать.
Мы делегируем людям, потому что они умеют сомневаться и уточнять смысл. Делегируем ИИ — потому что он не спорит. И это очень даже удобно, пока не оказывается, что спорить всё-таки было нужно. Настоящая сила инженера, как пишет Лой, — в умении делегировать осмысленно: оставить машине то, что механично, а себе — то, что требует понимания.
ИИ не чувствует, где проходит граница между «работает» и «правильно». Он не понимает компромиссов между качеством и скоростью, простотой и гибкостью. И если человек может сказать: «решение плоховато, но временно сгодится», то ИИ просто создаст что-то, что выглядит убедительно — и этим опасно.
Так что главный вызов сейчас — не научиться кодить с ИИ, а научиться управлять им. Не пытаться отдать машине мышление, а использовать её как инструмент исполнения уже продуманных решений. Машина может писать быстро, исправно и без усталости. Но думать за вас — всё ещё не умеет.
#llm #ai #agent #junior
👍14❤3
#ссылка дня
Laws of UX — это коллекция законов, которые объясняют, почему одни интерфейсы ощущаются естественными, а другие — ломают голову пользователю. Каждый принцип описан просто и наглядно, с иллюстрациями, ссылками на статьи и книги, так что сайт отлично подходит и как справочник, и как учебник.
Там можно вспомнить и проверить себя на классике:
‣ Эффект эстетики и полезности — красивый интерфейс воспринимается как более удобный.
‣ Перегрузка выбора — чем больше опций, тем сложнее принять решение.
‣ Закон Фиттса — время, чтобы попасть в цель, зависит от её размера и расстояния.
Это, кстати, причина, по которой меню в macOS единое и наверху.
‣ Закон Миллера — человек может удерживать в памяти около семи элементов.
‣ Закон Паркинсона — работа занимает всё отпущенное на неё время.
‣ Эффект последовательности — люди запоминают начало и конец взаимодействия, забывая середину.
Каждый закон сопровождается кратким объяснением, визуальными примерами и источниками, если хочется копнуть глубже — от Нормана до Канемана.
Отличное место, чтобы прокачать UX-интуицию и вспомнить, почему «меньше» часто значит «понятнее».
https://lawsofux.com/
Laws of UX — это коллекция законов, которые объясняют, почему одни интерфейсы ощущаются естественными, а другие — ломают голову пользователю. Каждый принцип описан просто и наглядно, с иллюстрациями, ссылками на статьи и книги, так что сайт отлично подходит и как справочник, и как учебник.
Там можно вспомнить и проверить себя на классике:
‣ Эффект эстетики и полезности — красивый интерфейс воспринимается как более удобный.
‣ Перегрузка выбора — чем больше опций, тем сложнее принять решение.
‣ Закон Фиттса — время, чтобы попасть в цель, зависит от её размера и расстояния.
Это, кстати, причина, по которой меню в macOS единое и наверху.
‣ Закон Миллера — человек может удерживать в памяти около семи элементов.
‣ Закон Паркинсона — работа занимает всё отпущенное на неё время.
‣ Эффект последовательности — люди запоминают начало и конец взаимодействия, забывая середину.
Каждый закон сопровождается кратким объяснением, визуальными примерами и источниками, если хочется копнуть глубже — от Нормана до Канемана.
Отличное место, чтобы прокачать UX-интуицию и вспомнить, почему «меньше» часто значит «понятнее».
https://lawsofux.com/
👍8
#такое дня
А вы знали, что «долой» переводится как «down with the»?
«Долой короля» — «Down with the king» и так далее. Так вот, это я к чему.
У меня теперь все коммиты в гит называются так:
Я не знаю, зачем вам эта информация. Как вы называете ваши коммиты? :)
#git #work
А вы знали, что «долой» переводится как «down with the»?
«Долой короля» — «Down with the king» и так далее. Так вот, это я к чему.
У меня теперь все коммиты в гит называются так:
down with the bootstrap
down with the enzyme
down with the reselect
down with the react-async
Я не знаю, зачем вам эта информация. Как вы называете ваши коммиты? :)
#git #work
🤩15👍1🫡1
