TGViewer
Channel Public Channel
🦜 on the web

🦜 on the web

@parrotontheweb

Мысли и код.

Подписывайтесь на гитхаб, ставлю звезды интересным репозиториям: https://github.com/popuguytheparrot
Subscribers
2.06K
Photos
82
Videos
23
Links
198
Recent Posts 19 shown
Post #559 4.23K
Сайт: появляется в интернете.
Веб-краулер: ну здравствуй.
  • 😁 39
  • 🔥 5
  • ❤ 2
Post #558
Channel photo updated
Post #557 2.08K
Планирую посетить HolyJS 23–24 октября в Санкт-Петербурге.

В этот раз особенно интересно посмотреть, как разработчики используют AI-агентов уже не на уровне «попросить написать код», а как часть полноценного процесса разработки.

Из программы отметил доклад Вы недоиспользуете агентов: путь вверх по лестнице. Интересно посмотреть на переход от простых промптов и skills к субагентам, оркестрации и более автономным воркфлоу. Хочется сравнить этот подход с тем, как я сам сейчас использую агентов в разработке.

Еще один доклад на эту тему — Spec-Driven Backend с Claude: Node.js, Clean Architecture и OpenSpec на практике. Здесь интересен именно инженерный процесс вокруг агента: спецификации, архитектура, тесты, Skills, Worktrees и Agent Teams. Хочу посмотреть, насколько Spec-Driven Development помогает получать от агентов более предсказуемый результат на реальных задачах.

Про React тоже не забываю. Пойду на доклад Всё, что нужно знать о React Compiler. Как раз недавно подключил React Compiler в проекте, поэтому особенно интересно послушать про накопившиеся за год корнер-кейсы, ограничения и практический опыт его использования.

И отдельно советую доклады Виктора Хомякова. Мне нравятся его выступления про производительность и DevTools, а в этот раз у него Self-Profiling API: как узнать, почему у пользователя всё тормозит — про профилирование производительности уже непосредственно на устройствах пользователей.

Если тоже будете на HolyJS — подходите нетворкаться.

🌟За билетами по специальным условиям для подписчиков канала пишите в лс: @tozxspb
  • ❤ 6
  • 👍 3
  • 🔥 2
  • 🤪 1
Post #556 2.08K

This post (sticker, poll or similar) has no web preview. Open in Telegram

  • 🔥 10
  • 👍 5
  • 🤪 3
  • ❤ 2
Post #555 1.86K
HYPERBLAM — это попытка переосмыслить создание музыки в браузере. Его главный тезис сформулирован в слогане: «Make music, not Javascript». Автор предлагает отказаться от императивного программирования аудиографа через JavaScript и описывать музыку декларативно с помощью HTML.

По сути, HYPERBLAM декларативная обёртка над Web Audio API, которая использует Web Components. Вместо написания кода вроде:

const oscillator = audioContext.createOscillator();
const filter = audioContext.createBiquadFilter();
const gain = audioContext.createGain();

oscillator.connect(filter);
filter.connect(gain);
gain.connect(audioContext.destination);

Описываем через композицию примерно так:
<blam-sampler>
<blam-sequence>
...
</blam-sequence>
</blam-sampler>

То есть музыка становится частью разметки документа, примерно так же, как HTML описывает интерфейс страницы.

Во-первых, декларативность вместо программирования. Автор пытается перенести философию HTML на создание музыки. HTML теги хорошо подходят для описания того, что должно быть создано, а не как именно это создавать. HYPERBLAM использует тот же подход для аудио. Вместо создания графа узлов через JavaScript разработчик описывает структуру музыки через вложенные элементы.

Во-вторых, независимость от экосистемы. Проект не использует большие фреймворки и внешние зависимости. Это довольно типичная идея современного веба последних лет возвращение к платформенным API. Браузер уже умеет работать со звуком через Web Audio API, поэтому библиотека выступает лишь тонким слоем абстракции над ним.

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

Отдельное направление проекта — генеративная музыка. Библиотека поддерживает работу со случайными последовательностями, полиритмией, случайными модуляциями параметров и различными способами генерации звуковых событий. Благодаря этому её можно использовать не только для написания музыкальных партий, но и для создания процедурного звука, например в играх или интерактивных веб-приложениях.

С точки зрения архитектуры фронтенда проект любопытен тем, что переносит идеи Web Components и декларативного UI в совершенно другую область. Если React описывает интерфейсы, то HYPERBLAM пытается описывать музыку. Его можно рассматривать не столько как музыкальную библиотеку, сколько как эксперимент по созданию языка описания звука поверх HTML и Web Audio API.
HYPERBLAM Hyperblam Docs Home Documentation for HyperBlam. Make HTML make music.
  • ❤ 1
Post #554 2.84K
Preview Next.js 16.3

TL;DR
Главная идея: server-driven приложение теперь может ощущаться как SPA, если на каждом async-await явно выбрать Stream / Cache / Block. Prefetching стал адекватным — один shell на роут вместо запроса на каждую ссылку.

Ден Абрамов присоединился к команде Next.js и Vercel. (на парт-тайме)

Решил две новости в одну совместить.

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

Как он говорит: —
the team has been working hard at fixing many of those gaps. i hope to provide an additional “casual Next.js user“ voice to help prioritize the ones that bite people the most.


Теперь про обновление.

16.3 приносит нам Мгновенную навигацию.

Проблематика: Навигация ощущается медленной, когда запросы на стороне сервера ожидаются для отрисовки страницы.
Для сохранения серверной модели и создание SPA-ощущений завозят следующие инструменты.

Cache Components
Всё работает за флагом cacheComponents: true в next.config.ts. В будущем мажоре станет дефолтом. Курс на «dynamic by default, без скрытого кеширования».

Три стратегии для async-операций
Когда роут await-ит данные на сервере, теперь надо явно выбрать поведение:

* Stream через <Suspense> — юзер мгновенно видит loading-стейт, контент стримится.
* Cache через 'use cache' — мгновенно показывается закешированная UI.
* Block через export const instant = false на странице/лейауте — осознанно говорим «эта навигация ждёт сервер» (например, для блог-постов, где не хочется shell-а).

Stream/Cache → навигация мгновенная. Block → явный opt-out. Медленные навигации без Block теперь подсвечиваются как ошибки в dev через панель Instant Insights.

Partial Prefetching (отдельный флаг partialPrefetching: true)
Раньше Next делал prefetch-запрос на каждую ссылку во вьюпорте — в Network вкладке был ад из запросов. Теперь:

* Prefetch-ится один переиспользуемый shell на роут, не на ссылку. 20 ссылок на /chat/[id] → один запрос на shell этого роута.
* Shell-ы кешируются на клиенте на сессию. Концептуально как code-splitting по роутам в SPA.
* Это же основа для будущей offline-навигации.

Если нужно prefetch-ить больше чем shell — <Link prefetch={true}> плюс 'use cache' на нужных кусках. По умолчанию ограничено build-time контентом; export const prefetch = 'allow-runtime' расширяет до request-time кеша (ценой нагрузки на сервер).

Тулинг

* Instant Insights — панель в devtools, помечает не-instant роуты ошибками в dev.
* Navigation Inspector — ставит навигацию на паузу на этапе shell, видно что реально prefetch-ится, что грузится после.
* instant() helper для Playwright (@next/playwright) — ассерт, что после клика что-то видно мгновенно, без ожидания network.
* Есть skill для агента для миграции существующих проектов на Cache Components.
nextjs.org Next.js 16.3: Instant Navigations A new suite of tools that brings the responsiveness of a single-page app to the server-centric model of Next.js.
  • 👍 9
  • ❤ 3
  • 👎 1
Post #553 2.44K
React Compiler на Rust уже почти готов

Команда React завершает перенос React Compiler с TypeScript на Rust. Новая реализация уже используется внутри компании и показывает хорошие результаты:

• 99.9% паритета с текущей TS-версией
• около 25% прироста производительности
• улучшенная интеграция с SWC и OXC

Разработчики отдельно отметили, что значительная часть портирования проходов компилятора была выполнена с помощью ИИ.

Сейчас идёт финальная полировка, тестирование и сбор обратной связи. Слияние ожидается в ближайшие недели.

Похоже, один из самых важных инструментов React-экосистемы скоро получит Rust версию.

https://github.com/oxc-project/oxc/pull/22942

https://github.com/oxc-project/oxc/issues/10048

https://github.com/facebook/react/pull/36173#issuecomment-4608356402
  • 🔥 18
  • 🤔 3
  • 👍 2
  • ❤ 1
Post #552 1.95K
За 13 лет React сильно изменился. Появлялись новые подходы, исчезали старые практики, менялась экосистема. Но если попытаться выделить главный урок, который я вынес за годы работы, то он будет довольно простым: хорошие интерфейсы получаются не из сложных компонентов, а из правильно собранных простых.
  • 👍 21
Post #551 1.95K
React исполнилось 13 лет — первый релиз состоялся 29 мая 2013 года.

Я использую React с 2017 года для создания самых разных приложений. За это время успел поработать как с проектами, которые проектировал сам, так и с теми, которые достались в наследство.

Сразу оговорюсь: тут не будет технических инсайдов или рассказов про новые API. Скорее это набор выводов и наблюдений, которые накопились за почти 10 лет работы.

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

Главная идея React при этом остается неизменной: из простых компонентов собирать более сложные системы. Концепция выглядит простой, но именно вокруг нее возникает большинство архитектурных проблем.

Не случайно существует статья Thinking in React. Многие команды читают документацию по API, но пропускают сам подход к проектированию интерфейсов. В проектах, которые мне приходилось поддерживать, основные сложности обычно возникали именно из-за этого. Появлялись чрезмерно сложные компоненты, неудобные API, неожиданные побочные эффекты и баги, связанные с ререндерами.

Отдельная проблема — структура проекта. Часто все компоненты складываются в одну папку независимо от назначения: общие, доменные, виджеты, страницы. Со временем навигация по такому проекту становится сложнее, а границы ответственности размываются.

Несколько принципов, которые я для себя вынес за эти годы.

Один файл — один компонент. То же касается функций и констант. Такой подход упрощает навигацию, улучшает переиспользование и помогает инструментам сборки эффективнее работать с tree shaking.
Линтеры на архитектурные границы тоже будет проще настроить и этим жанглировать.

Используйте композицию и слоты. Компонент должен предоставлять точки расширения, а не пытаться предусмотреть все варианты использования заранее.

Проектируйте API компонентов через поведение, а не через место использования. Когда в компоненте появляются пропсы вроде isAdmin, isMobile или другие флаги, описывающие контекст использования, это часто сигнал того, что ответственность оказалась не на своем месте. Решение о том, какой сценарий нужен, должно приниматься снаружи. Компоненту лучше сообщать, что делать, а не где он находится.

Должно получиться что-то "Я вставил компоненты из витрины, и он работает, а теперь докручу изменениями пропсов его вид"

Не бойтесь копировать композицию компонентов, если это делает код понятнее. Поддерживать несколько похожих сценариев зачастую проще, чем разбираться в большом универсальном компоненте с множеством условных веток. Раньше такой подход действительно вызывал вопросы о поддерживаемости. Сегодня рефакторинг через AST-кодмоды, автоматизацию и ИИ-инструменты заметно снижает стоимость подобных изменений описывая их на естественном языке.

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

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

Читайте раздел Escape Hatches на react.dev. Многие спорные решения уже подробно разобраны авторами React, и понимание этих ограничений помогает избежать архитектурных ошибок.

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

И последнее — следите за экосистемой и обновляйте зависимости вовремя.

Откладывать обновления удобно только в краткосрочной перспективе. Со временем накапливается технический долг, а очередное обновление React, библиотеки из стека или экосистемы начинает требовать обновления TypeScript, сборщика (переход на ESM), инфраструктуры и прикладного кода одновременно. В результате простая задача превращается в технические релизы.
  • ❤ 30
  • 💯 2
Post #550 1.85K
  • 😁 27
  • 🤔 3
  • 🤪 2
  • ❤ 1
  • 💯 1
Post #549 2.38K
Думаем.
  • 🤪 5
  • 👎 4
  • 👀 1
Post #547 2.21K
Ржу

Смотрите на hold и trial fsd
  • 🤔 10
  • 👀 1
  • 🤪 1
Post #546 1.93K
Второй день Holyjs.

Был уже на докладе про реактивный css. Полезный и крутой доклад.

Сейчас на докладе по LLM.
  • 👍 6
  • 🤪 5
Post #545 1.74K
Первые доклады начались.

Кто на конференции пишите, пообщаемся в перерывах.
  • 🔥 4
Post #544 2.21K
14-15 Мая буду на Holyjs 2026 Spring.

Есть интересные доклады для меня, плюс добавили ИИ трек. Вообще еще думаю залететь на дебаты, не помню, чтобы раньше было такое. В этом сезоне чувствуется, что было какое-то большое переосмысление.

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

Если тоже хотите на конфу, пишите мне в личку, подскажу как лучше это сделать.
  • 👍 6
  • 👎 2
  • 🔥 1
Post #543 2.59K
🤟 представляю лицо редакторов и дизайнеров, которые корпели над текстовками, чтобы они уместились в блок, а потом яндекс выкатывает эту имбу.

CLS нравится
  • 🤪 14
  • 👍 8
  • 👎 4
Post #542 2.73K
tiks

Процедурные звуки для веб интерфейса. Без аудиофайлов. Чистый синтез.

В нативных приложениях звук часть UX: клики тоглов, нажатия клавиш, нотификации. В вебе обычно тишина. tiks закрывает этот пробел через Web Audio API — все звуки генерируются на лету: осцилляторы, шум, кривые. Никаких mp3. Только математика.

Общий движок синтеза — получается единая «звуковая тема». Всё звучит консистентно, а не как набор случайных эффектов.

Размер:
core ~2KB
react hook ~300B
vue composable ~300B

Доступность:
— respects prefers-reduced-motion (можно автозаглушить)
— звук не заменяет визуал, только дополняет
— глобальный mute tiks.mute()
— дефолтная громкость 30%

https://github.com/rexa-developer/tiks
Демо
GitHub GitHub - rexa-developer/tiks: Procedural UI sounds for the web. Zero audio files. Pure synthesis. Procedural UI sounds for the web. Zero audio files. Pure synthesis. - rexa-developer/tiks
  • 👍 16
  • ❤ 4
  • 🔥 3
  • 👎 1
Post #541 2.18K
STORM — фреймворк для создания terminal UI
на основе композитора, который рассматривает терминал как display server, а не просто поток текста. Использует cell-level diff, typed arrays и Dual-speed rendering (React дает структуру, requestRender() — 60фпс) для высокой производительности и минимального GC. Написан на TypeScript, поддерживает flexbox и CSS Grid, но требует учитывать особенности собственного reconciler.
  • 🔥 5
  • 🤪 3
Older posts →

About this channel

How can I read @parrotontheweb without a Telegram account?
TGViewer shows the public web preview Telegram publishes for 🦜 on the web: recent posts, photos, videos and the subscriber count, with no app, login or account.
How many subscribers does 🦜 on the web have?
🦜 on the web (@parrotontheweb) has 2.06K subscribers on Telegram, refreshed roughly every 30 minutes.
Does 🦜 on the web know I viewed it here?
No. Public channel previews carry no viewer identity, and TGViewer has no accounts or tracking of what you look up.
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →