Firefox 152: полезна для форм field-sizing, showNotification() с экшенами и импорт текстовых модулей { type: “text” } — Новые браузерные фичи от Mozilla: CSS-свойство field-sizing автоматически подбирает высоту <textarea> под контент — больше никаких min-height танцев; showNotification() наконец-то поддерживает экшены прямо из API; requestPointerLock() получил unadjustedMovement, чтобы курсор не «прилипал» к краям экрана; getAnimations() теперь возвращает информацию о псевдоэлементах через параметр pseudoElement.
Проекты
stdlib: как AI делает новичков невидимыми для open-source сообществ — Длинное эссе по итогам сотен интервью в рамках NSF POSE: когда вопросы перестали задаваться публично (на Stack Overflow, в GitHub issues), исчезла видимость — механизм привлечения новых участников сломан. Органический трафик в комьюнити-спейсы упал на ~30%. AI ускоряет этот процесс, но корень проблемы шире: model-based discovery вместо community-based discovery. И автор, и читатель больше не знают, кто там, за внешней оболочкой ПО.
Статьи, мнения, туториалы
JS/TS
HowProgrammingWorks/WebComponents — SPA на чистом Node.js, веб-компонентах и Shadow DOM без фреймворков — Proof of concept: полноценное CRUD-приложение редактирования профилей полностью без зависимостей из npm — чистый Node.js + ES-модули + Template API + Navigation API + Shadow DOM. Автор доказывает, что фронтенд-фреймворки — не обязательность, а выбор. Trade-off понятен: меньше DX и синтаксического сахара, но ноль bundle-зависимостей, нет проблем с tree-shaking и old vulnerabilities. Код лаконичный, структура прозрачная, LLM помогает быстро дописывать недостающие абстракции.
Performance
Сатурация libuv thread pool в Node.js: crypto, fs и dns.lookup ломают p99 latency — В Node.js async ≠ без очередей: 4 потока в пуле по умолчанию (UV_THREADPOOL_SIZE=4) делятся между тяжёлым crypto, fs и DNS. Один heavy password-hashing вызов в логине + hot-path чтение config’а = сотни миллисекунд ожидания при здоровом event loop lag. Решение: выносить crypto в worker_threads или отдельный сервис, кэшировать файлы заранее, использовать DNS cache или dns.resolve* (через c-ares). Увеличивать UV_THREADPOOL_SIZE только после load test — CPU-bound задачи могут ухудшить контекстный свитч.
Дизайн/Продукт
Every frame perfect: почему недоработанные анимации разрушают доверие к продукту — Аналогично философии Wayland «every frame is perfect», каждое промежуточное состояние анимации должно быть осмысленным. Белые вспышки между экранами, незаблокированный релэйаут, рассинхронизированные placeholder-анимации — всё это подрывает впечатление качества. Автор приводит примеры из Safari и YouTube и называет такие случаи «технология обыграла программиста». Ключевая мысль: если в начале и конце анимации всё выглядит хорошо, значит у команды было время отполировать — и скорее всего код тоже в порядке. Плохие кадры передают обратное.