Pikaday: A friendly guide to front-end date pickers 🔥 Горячее
В статье утверждается, что JavaScript-библиотеки для выбора даты, такие как Pikaday, часто не нужны и могут приводить к ошибкам и брошенным формам. Вместо этого рекомендуется использовать нативные HTML-инпуты: date для дат, time для времени и datetime-local для их комбинации. Эти решения требуют всего одной строки кода, обеспечивают лучшую доступность, производительность и интернационализацию, работают без JavaScript и позволяют браузеру обрабатывать сложные детали.
В качестве альтернатив предлагаются раздельные инпуты для дня, месяца и года (особенно полезно для запоминающихся дат), селекты при ограниченном наборе вариантов и маскированные инпуты с плейсхолдерами. Для улучшения опыта можно использовать атрибуты: inputmode="numeric" для отображения цифровой клавиатуры, maxlength для ограничения ввода, pattern для валидации, autocomplete для автозаполнения и min/max для ограничений диапазона. Автор подчеркивает важность прогрессивного усиления и учета пользователей без JavaScript.
Комментарии (124)
- Пользователи жалуются на нативные пикеры из-за необходимости тысяч кликов, чтобы выбрать дату рождения, и наоборот — кастомные пикеры не позволяют вводить дату текстом.
- Разработчики отвечают, что нативный
<input type="date">не поддерживает форматов вроде «MM/DD/YYYY» и не даёт контроля над UI, а кастомные пикеры не решают проблему с доступностью и не имеют единого UX. - В итоге спор сводится к тому, что нативный пикер не решает проблему, а кастомный — не решает её лучше.
- Пользователи также жалуются на то, что нативный пикер не позволяет вводить дату текстом, а кастомный — не позволяет вводить дату текстом.
- В итоге, обсуждение сводится к тому, что нативный пикер не решает проблему, а кастомный — не решает её лучше.
Sued by Nintendo
На странице представлен сайт, посвященный историям прекращения деятельности (Cease and Desist) от Nintendo. Однако для просмотра полного списка случаев требуется включить JavaScript. Сайт создан пользователем Cawolf и предлагает возможность предлагать изменения через GitHub репозиторий. Основной функционал, судя по описанию, должен содержать информацию о судебных исках и требованиях Nintendo к нарушителям их авторских прав.
Комментарии (53)
- Nintendo ведёт себя как патент-тролль, но при этом не является единственной компанией, которая так делает, и в этом нет ничего нового.
- Список, который обсуждается, неполон и не охватывает все случаи, и это вызывает вопросы о его полноте и выборочности.
- Судя по всему, Nintendo не единственная компания, которая ведёт себя подобным образом, но в то же время она не единственная, кто это делает.
- Судя по всему, список не охватывает все случаи, и это вызывает вопросы о его полноте и выборочности.
Tabloid: The Clickbait Headline Programming Language 🔥 Горячее
Tabloid — это язык программирования, созданный для генерации кликбейтных заголовков. Его название отсылает к бульварным газетам (tabloid), известным сенсационными и провокационными заголовками. Язык, судя по всему, использует специфический синтаксис, имитирующий стиль броских заголовков, привлекающих внимание. Для доступа к реализации Tabloid требуется включить JavaScript, что указывает на веб-ориентированный характер проекта.
Разработка такого языка представляет собой интересный эксперимент на стыке программирования и медиа-риторики. Хотя подробности реализации остаются неясными без включенного JavaScript, концепция сама по себе уникальна — она объединяет техническую составляющую с приемами массовой коммуникации. Возможно, Tabloid создан как сатирический комментарий или как инструмент для изучения психологии вовлекающего контента.
Комментарии (42)
- Язык Tabloid пародирует стиль таблоидных заголовков, предлагая такие ключевые слова, как "BREAKING NEWS" и "COMPLETELY WRONG".
- Пользователи предлагают улучшения: добавить оператор "CONSIDERED HARMFUL", сделать так, чтобы программы ничего не делали, или использовать "TRUTH"/"FAKE NEWS" как булевы значения.
- Обсуждение включает сравнения с другими сатирическими языками, такими как LOLCODE и TrumpScript, и шутки о бесполезности языка как отражении кликбейта.
- Сообщество оценило юмор и оригинальность идеи, отметив, что язык может быть полезен для обучения парсингу или просто как забавный эксперимент.
- Технические аспекты включают предложения по определению массивов через "Top Five Most Popular Quirks" и обсуждение грамматики для парсеров.
Marko – A declarative, HTML‑based language 🔥 Горячее 💬 Длинная дискуссия
Marko — это декларативный язык на основе HTML для создания динамических веб-интерфейсов, расширяющий стандартный HTML возможностями для современных приложений. Любой валидный HTML является корректным Marko, но язык добавляет декларативные конструкции для реактивности и интерактивности, позволяя встраивать JavaScript прямо в шаблоны. Ключевые особенности включают потоковую передачу контента для ускорения первого отрисовки, оптимизирующий компилятор и минимальный рантайм, что обеспечивает высокую производительность даже для высоконагруженных проектов вроде eBay.com.
Фреймворк предлагает гибкость синтаксиса — от привычного HTML до более лаконичных вариантов Concise и JS — и поддерживает TypeScript для строгой типизации. Marko обеспечивает разделение concerns, управляемые компоненты, вложенную реактивность и неизменяемое состояние, что упрощает разработку масштабируемых приложений. Интеграция с экосистемой включает file-based routing и возможность использования как простых шаблонов, так и мощных компонентов по мере роста проекта.
Комментарии (166)
- Обсуждение вращается вокруг того, что веб-разработка циклически возвращается к идеям, похожим на ColdFusion и JSP, и это вызывает у участников разговора разные чувства от ностальгии до раздражения.
- Участники обсуждают, что такое "HTML-основнный" язык, и как он отличается от JSX и других подходов, и почему мы снова и снова возвращаемся к этой идее.
- Обсуждение затрагивает вопрос о том, что некоторые считают, что эволюция веб-технологий просто движется по спирали, где старые идеи периодически перерабатываются и выдаются как новые.
- Участники также обсуждают, что такое "нативный" веб-разработка и как она отличается от подхода, где JavaScript используется для обработки событий и взаимодействия.
- Участники также обсуждают, что такое "нативный" веб-разработка и как она отличается от подхода, где JavaScript используется для обработки событий и взаимодействия.
Комментарии (44)
- HTMX — это не мем и не анти-JS, а просто библиотека, которая расширяет HTML без отказа от JavaScript.
- Аргумент «10 МБ WASM» сводится к «загрузка кода на клиенте — это не проблема, если использовать Service Worker.
- «Local first» не означает «без сервера», а лишь убирает синхронизацию состояния, оставляя серверную логику на клиенте.
- Под капотом HTMX остаётся обычный запрос-ответ, просто вместо JSON в DOM вставляется HTML-фрагмент.
- Дискуссия свелась к тому, что критика не в том, что HTMX плох, а в том, что пример не показывает, как реальные приложения выглядят.
End of Japanese community 🔥 Горячее 💬 Длинная дискуссия
Это сообщение об ошибке появляется, когда на сайте требуется JavaScript, но он отключен в браузере пользователя. Сайт не может загрузить необходимый компонент без включенного JavaScript, что блокирует доступ к функционалу.
Проблема может возникать из-за нескольких причин: использование браузерных расширений (блокировщиков рекламы), сетевые неполадки или настройки самого браузера. Для решения рекомендуется проверить интернет-соединение, временно отключить расширения, особенно блокировщики рекламы, или попробовать использовать другой браузер. Включение JavaScript позволит сайту корректно загрузить все необходимые элементы и обеспечить полноценную работу.
Комментарии (663)
- Mozilla уволил волонтёров-переводчиков без предупреждения и предложил «быстро созвониться» вместо диалога; это вызвало волну возмущения в сообществе.
- Сообщество ответило, что открытое ПО и волонтёрство не должны быть взаимоисключающимися, и Mozilla должна была бы заранее обсудить изменения и уважительно относиться к вкладу волонтёров.
- В обсуждении также поднимается вопрос о том, что Mozilla в целом отошла от своих ценностей и миссии, и что это не первый случай подобного поведения.
- Участники обсуждения также отметили, что Mozilla в последнее время стала более закрытой и корпоративной, что вызывает тревогу.
- В конце концов, Mozilla сделала официальное извинение, но волонтёры заявили, что это слишком поздно и что Mozilla должна была бы лучше коммуницировать с сообществом и волонтёрами.
Show HN: See chords as flags – Visual harmony of top composers on musescore
К сожалению, у меня нет полного содержимого статьи "Rawl: Visual Music Theory" для создания точного пересказа. Вы предоставили только заголовок и сообщение о необходимости включить JavaScript для запуска приложения.
Для создания качественного саммари в формате Markdown (~170 слов) мне нужен полный текст статьи или, как минимум, основные тезисы, ключевые идеи и важные детали, которые стоит включить в пересказ.
Пожалуйста, предоставьте больше информации о содержании статьи, и я с удовольствием создам для вас точный и лаконичный пересказ.
Комментарии (27)
- Визуализация в виде "пианино-ролла" упрощает анализ аккордов и каденций, но жертвует почти всей остальной информацией нотного стана.
- Цветовое кодирование основано на тональности, а не на абсолютной высоте; транспозиция меняет цвета, но не влияет на функциональную роль нот.
- Пользователи обсуждают, какие компромиссы между полнотой и читабельностью наиболее приемлемы, и какие еще инструменты могли бы помочь в анализе музыки.
Dillo, a multi-platform graphical web browser 🔥 Горячее 💬 Длинная дискуссия
Представлен репозиторий Dillo — мультиплатформенного графического веб-браузера с открытым исходным кодом. Проект размещен на GitHub в рамках dillo-browser/dillo, что указывает на его организационную структуру и доступность для сообщества.
В предоставленном фрагменте отсутствует детальное описание функционала или особенностей браузера, что ограничивает возможность анализа. Известно лишь, что проект активно развивается и имеет собственную навигационную структуру на платформе GitHub.
Информация о текущей версии, поддерживаемых операционных системах или ключевых возможностях браузера в данном отрывке не содержится. Для получения полного представления о проекте необходимо обратиться к основной документации или README-файлу в репозитории.
Комментарии (163)
- Проект Dillo продолжает развиваться, но уходит с GitHub на собственный сайт и репозиторий.
- Пользователи вспоминают, как Dillo спасал старое железо и давал возможность выхода в интернет даже на самых слабых машинах.
- Обсуждается, что Dillo не поддерживает JavaScript, что ограничивает его применимость в современном вебе.
- Появляется вопрос о безопасности: неясно, какие меры безопасности реализованы в браузере.
- Участники обсуждают, что Dillo остаётся полезным для разработчиков и пользователей, которые ищут легковесный и быстрый браузер.
How devtools map minified JS code back to your TypeScript source code
Source maps — это механизм, позволяющий браузеру отображать минифицированный JavaScript обратно на исходный код с правильными именами переменных и форматированием. Когда вы видите ошибку в bundle.min.js:1:27698, source maps переводят её в src/index.ts:73:16, показывая точное место возникновения проблемы в оригинальном TypeScript коде. Этот процесс работает на трёх этапах сборки: транспиляция TypeScript в JavaScript, бандлинг модулей в один файл и минификация, где на каждом шаге сохраняется связь с исходным кодом.
Формат source maps — это JSON-файл с расширением .js.map, где ключевое поле mappings использует VLQ-кодирование для сжатия данных о позициях. Каждое сегмент в mappings содержит информацию о связи между сгенерированным кодом и оригиналом: путь к исходному файлу, строку и столбец, а также оригинальное имя переменной или функции. Это позволяет DevTools эффективно отображать отладочную информацию, несмотря на значительное отличие между минифицированным и исходным кодом.
Комментарии (13)
- Обсуждение началось с похвалы удобства чтения на мобильных устройствах и быстро перешел к семантике терминов "delta" и "offset" в контексте кодирования разностей в source-map.
- Участники обсудили, что "delta" и "offset" технически описывают одно и то же явление, но первый термин чаще используется в математике и физике, тогда как второй более универсален.
- Была затронута тема инструмента для восстановления исходных исходников из веб-приложений, использующих source maps.
- В конце обсуждение свелось к тому, что оба термина могут быть использованы взаимозаменяемо, и выбор между ними часто сводится к личным предпочтениям и контексту использования.
Show HN: A CSS-Only Terrain Generator 🔥 Горячее
Layoutit Terra - это интерактивный генератор рельефа на CSS, позволяющий создавать разнообразные ландшафты с настраиваемыми параметрами. Инструмент предлагает выбор между типами рельефа (пампы, холмы, горы) и биомами (умеренный, арктический, пустынный), а также контроль над размером мира и покрытием суши. Пользователи могут детально настраивать камеру через параметры вращения, наклона и увеличения, добавляя анимацию к созданным ландшафтам.
Генератор поддерживает экспорт результатов в多种 форматы, включая CSS, высотные карты, VOX, TXT и PNG, что обеспечивает гибкость использования. Функции импорта, отмены/повтора действий, а возможность копировать код для встраивания или открывать его в Codepen упрощают интеграцию в другие проекты. Несмотря на раннюю версию (v0.0.1), Layoutit Terra уже предоставляет мощные возможности для создания детализированных CSS-ландшафтов с минимальными усилиями.
Комментарии (80)
- Пользователи отмечают, что «CSS-only»-демо всё же использует JS для интерактивности, хотя рендеринг ландшафта действительно на 100 % CSS.
- Визуально демо напоминает RCT, SimCity 2000, Populous и другие изометрические «тайкун»-игры, вызывая ностальгию.
- Несколько человек сообщили о проблемах с производительностью: при включённом JS в Firefox 144 и Chrome 131 на Windows 10/11 рендеринг занимает 100-200 мс на обновление кадра, что приводит к просадкам фпс.
- Автор ответил, что в будущих версиях планируется добавить реки и водопады, а также улучшить производительность.
From web developer to database developer in 10 years
За десять лет автор прошёл путь от веб-разработчика до специалиста по базам данных, присоединившись к EnterpriseDB, где работает над pglogical и Postgres Distributed. Его карьера началась в 2014 году с JavaScript и Python, затем он стал менеджером инженеров. Прорывным моментом стало 2020 год, когда проблемы с производительностью его сервиса заставили его изучить индексы и структуры данных. Он создал образовательные проекты, включая простую in-memory SQL базу данных, и построил сообщества вроде Software Internals Discord и /r/databasedevelopment.
После неудачной попытки запустить собственный стартап в 2021-2023 годах и работы в TigerBeetle автор искал позицию именно разработчика баз данных, а не DevOps-инженера для работы с базами. Несмотря на нетрадиционный путь (он бросил колледж) и сомнения работодателей, он получил три предложения на работу над расширениями Postgres на C и Rust. Выбрав EnterpriseDB, компанию с 20-летней историей и одним из крупнейших вкладчиков в развитие Postgres, он предпочёл стабильность ранним стартапам, в которых работал последние три года.
Комментарии (58)
- Сообщество обсуждает, как трудно сменить специализацию, если ты уже «записан» в базе данных как специалист в области X, и как это влияет на найм и карьерные возможности.
- Участники делятся личным опытом: кто-то ушел в разработку на C/C++ и Rust, кто-то перешел в SRE или DevOps, кто-то пытается попасть в компиляторы.
- Обсуждается, что рекрутеры и системы найма не видят за пределами ключевых слов в резюме и не учитывают site-reliability, DevOps и прочие смежные навыки, что делает смену специализации еще более сложной.
- Участники делятся советами, как обойти эту систему: делать сайд-проекты, которые демонстрируют навыки в новой области, участвовать в open-source, писать блоги и статьи, и так далее.
- Также обсуждается, что важно не только выждать подходящий момент, но и быть готовым пойти на уменьшение зарплаты и не бояться начать с более низкой позиции, что может быть ключом к переходу в новую область.
</> Htmx – The Fetch()ening 🔥 Горячее
Carson Gross объявляет о выходе htmx 4.0, вопреки предыдущему обещанию не делать версии 3.0. Основные изменения включают переход с XMLHttpRequest на fetch() как основную AJAX-инфраструктуру, что изменит модель событий. Также неявное наследование атрибутов станет явным через модификатор :inherited, а поддержка истории откажется от локального кэширования DOM в пользу сетевых запросов, что упростит код и повысит надежность.
Большинство основных функций (hx-get, hx-post, hx-target и т.д.) останутся без изменений. Автор признает, что обновление до 4.0 потребует больше усилий, чем переход с 1.0 на 2.0, но обещает perpetual поддержку htmx 2.0. Эти изменения направлены на долгосрочную устойчивость проекта и снимут давление с версий 2.0, позволив им сосредоточиться на стабильности.
Комментарии (94)
- HTMX 2.0 будет поддерживаться бесконечно, поэтому нет необходимости обновляться, если он вам подходит.
- Автор признал, что придется выпустить HTMX 4.0, чтобы не нарушить обещание не делать HTMX 3.0.
- Пользователи обсуждают, стоит ли переходить на 4.0 или остаться на 2.0, который будет поддерживаться вечно.
- Некоторые считают, что Datastar более функционален и удобен, но он не open-source и может быть закрыт в любой момент.
- Появились вопросы о том, какие именно изменения в 4.0 делают его лучше 2.0, и стоит ли переходить на него.
Why we migrated from Python to Node.js 💬 Длинная дискуссия
Команда Skald переписала бэкенд с Python на Node.js всего через неделю после запуска, идя против стандартного совета стартапам сначала "делать то, что не масштабируется". Основная причина — сложность с асинхронностью в Python, особенно при работе с Django. Автор отмечает, что писать качественный асинхронный код на Python "очень сложно и неинтуитивно", в отличие от JavaScript с его event loop или Go с goroutines.
Django до сих пор не имеет полной поддержки асинхронности: нет нативного асинхронного файлового ввода-вывода, ORM не поддерживает async, а для интеграции синхронных и асинхронных функций требуется постоянно писать sync_to_async и async_to_sync. Даже крупные компании вроде PostHog, несмотря на наличие AI-фич, продолжают использовать традиционный WSGI вместо полного перехода на асинхронность. В итоге команда пришла к выводу, что Django скоро начнет создавать проблемы с производительностью даже при небольшом количестве пользователей.
Комментарии (189)
- Обсуждение в основном вращается вокруг того, что Python/async-экосистема остаётся незрелой, а Django-ORM не предназначена для асинхронной работы, что делает выбор между «старым, но проверенным» и «новым, но сырым» неоднозначным.
- Участники спорят, стоит ли жертвовать удобством разработки и экосистемой ради производительности, или же лучше переписать всё на Node/TypeScript, если речь идёт о высоконагруженном REST API.
- Поднимается вопрос о том, что выбор стека влияет на набор инженеров, и что важнее — удобство разработки или производительность.
- Некоторые участники подчеркивают, что важно не только выбрать правильный инструмент, но и уметь его использовать, иначе даже самый современный фреймворк не спасёт от проблем с масштабированием.
You Don't Need Anubis
В последние годы скраперы, используемые компаниями для обучения LLM, стали более агрессивными, игнорируя robots.txt и маскируясь под обычных пользователей. Это привело к росту популярности Anubis — решения на основе proof-of-work, требующего от посетителей решения криптографической задачи перед доступом к сайту. Однако автор утверждает, что Anubis неэффективен против LLM-скраперов, так как те просто не выполняют JavaScript, а вычислительные затраты для обхода всех установок Anubис составляют примерно $0.00.
В качестве альтернативы предлагается простой 12-строчный Caddyfile, который устанавливает cookie через JavaScript, эффективно блокируя ботов без 10-секундной задержки для посетителей. Оба решения являются временными, так как боты могут научиться их обходить — Huawei уже умеет решать задачи Anubis. Автор подчеркивает, что если единственная проблема — ClaudeBot, лучше использовать менее раздражающие решения, а Cloudflare остается наиболее надежным, хоть и монопольным, способом защиты от ботов.
Комментарии (97)
- Обсуждение в основном вращается вокруг того, что Anubis и подобные системы защиты от скрапинга, по сути, не решают проблему, а лишь создают неудобства для пользователей и разработчиков, и что это больше похоже на "security theater", чем на реальную защиту.
- Участники обсуждения подчеркивают, что LLM и скраперы уже давно научились обходить такие системы, и что единственный эффект — это лишнее время загрузки для обычных пользователей.
- Также поднимается вопрос о том, что вместо того, чтобы развивать "arms race" вокруг защиты от скрапинга, было бы лучше сосредоточиться на создании устойчивых и этичных решений, которые бы не требовали таких мер.
- Некоторые участники также отмечают, что вместо того, чтобы полагаться на подобные системы, разработчики могли бы использовать более прогрессивные подходы, такие как rate limiting, требование авторизации для доступа к API и другие методы, которые не требуют от пользователей выполнения сложных вычислений.
- В конце концов, обсуждение смещается к тому, что вместо того, чтобы продолжать "гонку вооружений", было бы более продуктивно сосредоточиться на создании более этичных и устойчивых решений, которые не требуют таких мер.
AI scrapers request commented scripts 💬 Длинная дискуссия
Автор обнаружил, что AI-скраперы запрашивают закомментированные JavaScript-файлы с его сайтов, вызывая ошибки 404. Эти запросы исходили как от явно вредоносных ботов (python-httpx, Go-http-client), так и от пользовательских агентов,伪装ившихся под обычные браузеры (Firefox, Chrome, Safari). Похоже, скраперы пытаются нелегально собирать контент для обучения больших языковых моделей.
Автор предлагает два возможных объяснения поведения: либо боты правильно парсят HTML-комментарии в поисках отключенных URL, либо используют примитивные методы сопоставления шаблонов. Он отмечает, что скраперы различаются по уровню сложности — одни используют актуальные строки user-agent, другие даже не меняют значения по умолчанию в HTTP-библиотеках.
В качестве контрмер автор предлагает алгоритмическое саботаже, начиная с публичного раскрытия этой уязвимости. Он классифицирует поведение ботов как фундаментальное (в отличие от случайных ошибок), так как для их работы необходимо запрашивать ресурсы, которые никогда не загружаются реальными пользователями. Автор уже внедрил меры по обнаружению таких запросов на своих сайтах и призывает других делать то же самое.
Комментарии (181)
- Обсуждение вращается вокруг этики веб-скрейпинга, причем акцент сместился с «как мы можем защититься от скрейперов» на «почему мы вообще должны считать, что скрейпинг — это что-то плохое».
- Участники обсуждения поднимают вопросы: что считается «нелегальным» скрейпингом, кто должен нести ответственность за злоупотребление данными, и какие технические и правовые рамки должны регулировать эту сферу.
- Разговор также затрагивает практические аспекты: какие методы могут быть использованы для защиты от скрейперов, и какие последствия это может иметь для веб-разработчиков и владельцев сайтов.
- Некоторые участники поднимают вопросы о том, какие последствия это может иметь для разработчиков и владельцев сайтов, и какие практические шаги они могут предпринять для защиты своих ресурсов.
- В конце обсуждение сместилось к тому, что участники начали обсуждать, какие именно технические и правовые рамки должны быть установлены для регулирования веб-скрейпинга, и какие последствия это может иметь для всех участников процесса.
Who needs Graphviz when you can build it yourself? 🔥 Горячее
Команда SpiderMonkey разработала новый инструмент для визуализации компиляции JavaScript и WebAssembly, создав собственный алгоритм расположения графов вместо использования Graphviz или Mermaid. Когда оптимизирующий компилятор Ion активен, система генерирует интерактивные графики, показывающие обработку и оптимизацию функций. Пользователи могут писать JavaScript-код и видеть в реальном времени, как изменяется граф, с возможностью навигации, масштабирования и просмотра различных этапов оптимизации.
Автор статьи не был удовлетворен выводом существующих инструментов, которые не отражали структуру исходного кода и создавали нестабильные макеты. Новый алгоритм, реализованный менее чем в 1000 строк кода, прост, быстр и produces высококачественный результат. Он учитывает специфические ограничения графов управления потоком, такие как наличие хорошо определенных циклов и необратимость потока управления, что позволяет создавать более интуитивные визуализации.
Для разработки автор изучал алгоритм Сугиямы, используемый в Graphviz, но создал собственное решение, специально адаптированное под нужды компилятора. Интерактивный инструмент значительно упрощает анализ и отладку сложных графов компиляции, позволяя отслеживать инструкции и блоки кода на разных этапах оптимизации.
Комментарии (95)
- Обсуждение показало, что специализированные решения для визуализации превосходят универсальные инструменты вроде Graphviz, но сообщество продолжает использовать последние из-за инерции и отсутствия альтернатив.
- Участники жалуются на то, что Graphviz и подобные инструменты не справляются с задачами даже средней сложности, и что их использование часто требует ручной доводки.
- Проект Microdiagram нацелен на создание DSL для каждого типа диаграмм вместо одного языка для всех типов диаграмм.
- Обсуждение также затронуло вопросы производительности и надежности инструментов, а также то, что сгенерированные ими диаграммы не всегда читаемы без дополнительной ручной работы.
- Участники поделились ссылкой на исходники на GitHub, где можно найти код, который может быть использован как стартовая точка для собственных экспериментов в этой области.
Комментарии (36)
- Обсуждение вокруг пакета
golang.org/x/tools/goplsи его влияния на разработку, включая предложение использовать Go вместо JavaScript, вызвало споры о целесообразности и практичности такого подхода. - Участники обсуждали, что вместо того, чтобы писать на Go, лучше позволить импортировать
.goфайлы, что более идиоматично для JS бандлеров. - Поднялся вопрос о том, что клиентский код не должен диктовать бизнес-логику, и что стоит быть осторожным с подобными техниками.
- Была отмечена важность такого подхода для обучения и вдохновения новичков в области WASM и Go.
- Также было отмечено, что это может быть полезно для оффлайн-функциональности и как фоллбек, если API недоступен.
- В конце концов, обсуждение свелось к тому, что это может быть полезно для обучения и вдохновения новичков в области WASM и Go.
Комментарии (27)
- TinyKVM путают с PiKVM/PicoKVM (аппаратные KVM-переключатели) из-за схожего названия.
- Основной вопрос: можно ли использовать TinyKVM для изоляции GUI-приложений (например, Firefox) с ограниченным доступом к сети и файлам.
- TinyKVM сравнивают с Firecracker VM, но его фокус — на быстрой изоляции для серверного JS, а не на GUI.
- Упомянуты альтернативы: Qubes OS, Guix для изоляции и воспроизводимости, а также традиционные инструменты вроде bwrap/chroot.
React vs. Backbone in 2025 🔥 Горячее 💬 Длинная дискуссия
Несмотря на 15 лет развития фронтенда, сравнение React и Backbone показывает удивительно мало прогресса в снижении сложности. Код для одинаковой функциональности в обеих фреймворках примерно одинаков по длине, что ставит под сомнение все усилия сообщества. React выглядит чище, но это достигается за счет скрытой сложности абстракций, в то время как Backbone предлагает явное, хоть и многословное, описание происходящего.
"Вы торгуете явной простотой за сложность абстракций" — ключевая мысль статьи. React скрывает множество деталей: неожиданное очищение инпутов из-за смены ключей компонентов, бесконечные циклы в useEffect из-за нестабильных зависимостей, "устаревшие" замыкания в обработчиках событий. Эти не крайние случаи, а обычные проблемы, требующие понимания алгоритмов согласования, фаз рендеринга и планировщика React.
Для 99% приложений, не имеющих тысячи компонентов на странице, такая сложность может быть избыточна. Фундаментальная задача "событие + состояние = UI" остается простой, но современные фреймворки создают ненужные абстракции, мешающие пониманию и отладке. Возможно, сообществу стоит искать более прозрачные и "взламываемые" решения, подобные Backbone и jQuery.
Комментарии (193)
- Обсуждение показало, что споры между сторонниками React и Backbone часто сводятся к сравнению простых примеров, что не отражает реальную сложность больших приложений и может вводить в заблуждение.
- Участники подчеркнули, что React и Backbone решают разные задачи: первый предлагает сложную, но мощную систему управления состоянием, тогда как второй предоставляет прямой и прозрачный контроль над DOM.
- Несколько человек отметили, что выбор между инструментами должен зависеть от характера проекта и команды, а не от сравнения "Hello World" примеров.
- Обсуждение также затронуло вопрос о том, что разработчики могут переоценивать или недооценивать сложность, связанную с управлением состоянием, и как это влияет на выбор инструмента.
- Наконец, было высказано мнение, что выбор между React и Backbone должен быть основан на факторах, таких как размер команды, сложность проекта и долгосрочная поддерживаемость, а не на сравнение простых примеров кода.
Programming with Less Than Nothing 🔥 Горячее
Кандидат на собеседовании решает задачу FizzBuzz с помощью комбинаторной логики и лямбда-исчисления в JavaScript, используя лишь базовые комбинаторы S, K и I. Интервьюер всё больше недоумевает, наблюдая, как соискатель последовательно реализует сложнейшие математические операции и структуры данных через композицию этих комбинаторов, включая числа Чёрча, арифметические операции и даже Y-комбинатор для рекурсии.
Кандидат оправдывает свой подход тем, что "JavaScript слишком раздут", и переключается на "ленивый" вариант JavaScript под названием Skoobert, чтобы избежать переполнения стека. В итоге он реализует всё необходимое для FizzBuzz — от сложения и вычитания до списков и операций над ними — исключительно через комбинаторы, демонстрируя глубокое, но совершенно не практичное знание теоретических основ программирования.
Комментарии (139)
- Обсуждение началось с критики формата технического собеседования, где кандидат вместо решения задачи пишет «рассказ о лямбда-исчислении» и тем самым «проходит» тест.
- Дискуссия быстро перешла к тому, что автор статьи, возможно, сам не до конца понял, что именно он хотел показать читателям, и что именно они должны вынести из этого урока.
- Участники треда начали спорить о том, насколько полезно знание комбинаторной логики в повседневной работе программиста, и стоит ли вообще изучать её.
- Некоторые комментаторы отметили, что статья не дала никакого практического обоснования, почему стоит изучать эту тему.
- В итоге, обсуждение сошлось на то, что если кто-то и найдёт в этом какой-то практический смысл, то это будет уже его заслуга, а не автора статьи.
Element: setHTML() method
Предоставленный текст содержит только навигационную структуру сайта MDN, но не основное содержание статьи о методе setHTML(). В тексте отсутствует описание самого API, его синтаксиса, параметров, примеров использования и совместимости с браузерами. Для создания точного пересказа требуется полное содержание статьи, описывающее новый метод DOM API, который, вероятно, предоставляет альтернативу innerHTML с дополнительными возможностями или улучшенной безопасностью. Без доступа к фактическому описанию метода невозможно предоставить содержательный пересказ его функциональности и применения.
Комментарии (132)
- Впервые за 25 лет в Firefox Nightly появилась возможность безопасно вставлять HTML через
Element.setHTML(), что вызвало обсуждение: спор о том, почему так долго не хватало базовой возможности, и о том, что API-шный дизайн (включая именованиеsetHTML/setHTMLUnsafe) не идеален. - Участники обсуждения отметили, что новое API встроенной санитизации встроенной в браузер — это фактически встроенный DOMPurify, и что спор в основном ведется о том, что «безопасность по умолчанию» должна быть выбрана как поведение по умолчанию.
- Некоторые комментаторы выразили обеспокоенность тем, что спецификация пока не различает между контентом и вставляемым через
setHTML()иinnerHTML, и что это может влиять на производительность, если разработчики начнутт читать спецификацию как «естественное продолжение»innerHTML. - Были также затронуты темы о том, что встроенная санитизация может влиять на разработчиков, которые полагаются на встроенную санитизацию, и о том, что это может влиять на разработчиков, которые полагаются на встроенную санитизацию.
Karpathy on DeepSeek-OCR paper: Are pixels better inputs to LLMs than text? 🔥 Горячее
X требует включенного JavaScript для работы, отображая стандартное сообщение об ошибке при его отключении. Пользователям предлагают либо включить JavaScript, либо перейти в поддерживаемый браузер, ссылаясь на раздел помощи с полным списком совместимых браузеров. Сообщение также содержит ссылки на юридические документы: условия использования, политику конфиденциальности, политику cookie, юридические данные и информацию о рекламе.
В случае возникновения проблемы пользователи видят кнопку "Попробовать снова" и предупреждение о возможных конфликтах с расширениями для конфиденциальности. Рекомендуется отключить такие расширения перед повторной попыткой доступа к платформе. Это типичное требование современных веб-сервисов, использующих JavaScript для динамической загрузки контента и взаимодействия с пользователем.
Комментарии (146)
- Обсуждение вращается вокруг идеи, что токенизация текста может быть неоптимальна, и что визуальное восприятие текста может быть более естественным способом подачи информации для модели.
- Участники обсуждают, что визуальное воспринятие текста может быть более естественным способом подачи информации для модели, и что токенизация текста может быть неоптимальна.
- Обсуждается, что визуальное воспринятие текста может быть более естественным способом подачи информации для модели, и что токенизация текста может быть неоптимальна.
- Участники обсуждают, что визуальное восприятие текста может быть более естественным способом подачи информации для модели, и что токенизация текста может быть неоптимальна.
UA 1093
X.com сообщает пользователям об отключенном JavaScript, требуя включить его или перейти на поддерживаемый браузер для продолжения работы. Сообщение содержит ссылку на Центр помощи с перечнем совместимых браузеров и юридические документы: Условия использования, Политику конфиденциальности, Политику cookie и другие. Появляется кнопка "Попробовать снова" и предупреждение о возможных проблемах с расширениями для конфиденциальности, которые рекомендуется отключить.
Внизу страницы указано, что что-то пошло не так, но не стоит волноваться — можно повторить попытку. Интересно, что сообщение содержит ссылку на будущую дату © 2025 X Corp, что может указывать на шаблонность текста или плановые обновления. Пользователям также предлагают ознакомиться с информацией о рекламе и юридическими данными компании.
Комментарии (79)
The system is designed to not pose a risk to human life in the worst case event of a collision. This is what the FAA 101 and ICAO weight limits are for. And indeed, there were no serious injuries and no depressurization event to my knowledge as a result of the collision.This se
Cloudflare Sandbox SDK
Пожалуйста, предоставьте ссылку на статью или более подробную информацию о Sandbox SDK, о которой вы хотите получить пересказ. Без доступа к исходному материалу я не могу создать точный и ёмкий пересказ в требуемом формате.
Комментарии (81)
- Обсуждение выявило, что у сервиса нет мелкого контроля над исходящим трафиком, что критично для безопасности при запуске непроверенного кода.
- Участники отметили резкий рост цен на Cloudflare Containers по сравнению с другими провайдерами, что делает его менее конкурентоспособным.
- Пользователи отметили, что документация и примеры кода в основном ориентированы на JavaScript/TypeScript, что ограничивает использование других языков.
- Несколько комментаторов подняли вопрос о том, что сервис не предоставляет автоматическое уничтожение контейнеров после простоя, что может привести к непредвиденным расходам.
- Некоторые участники обсуждали, что ценообразование и модель биллинга для Cloudflare Containers непрозрачна и может привести к неожиданным счетам.
AppLovin nonconsensual installs
Приложение AppLovin устанавливает игры и другие приложения на устройства Android без согласия пользователей — просто при нажатии на рекламу. Разработчик разбирает код AppLovin и находит, что он использует JavaScript для создания iframe, который загружает APK-файлы, и партнерские сервисы, такие как Samsung и T-Mobile, затем устанавливают их. Пользователи сообщают о нежелательных установках, при этом один пользователь предоставляет видео, показывающее, как нажатие кнопки «Назад» в объявлении приводит к установке приложения.
AppLovin оправдывается тем, что пятисекундный таймер перед установкой дает пользователям возможность отменить, но пользователи утверждают, что даже в этом случае они не давали согласия на установку приложений, а лишь хотели отменить. В ответ на жалобы AppLovin удалила свою страницу справки, но код продолжает работать.
В более широком смысле AppLovin — это публичная компания, недавно привлекшая внимание после обвинений в том, что она скрывает рекламу для онлайн-казино и отправляет пользовательские данные в Китай.
Комментарии (49)
- Пользователи обсуждают, как рекламная сеть AppLovin и подобные ей компании устанавливают приложения без явного согласия пользователя, включая установку в фоновом режиме после нажатия на рекламу.
- Обсуждается, что такие практики затрагивают не только Android, но и iOS, хотя в последнем случае возможности для этого более ограничены.
- Участники обсуждают, что такие действия возможны из-за слабого контроля за качеством приложений в Google Play и других факторов.
- Также обсуждается, что такие действия могут быть препятствованы с помощью антивирусных приложений, но что они не могут предотвратить установку приложений, которые устанавливаются с помощью OTA-обновлений от оператора.
- Участники также обсуждают, что такие действия могут быть препятствованы с помощью MDM-решений, но что эти решения в основном предназначены для корпоративных пользователей и не доступны для обычных потребителей.
Kaitai Struct: declarative binary format parsing language
Kaitai Struct — декларативный язык для описания и разбора бинарных форматов, позволяющий определить структуру данных один раз, а затем использовать это описание в различных языках программирования. Поддерживается 12 языков, включая C++, Java, Python, JavaScript и Rust, что делает его универсальным инструментом для работы с бинарными файлами и сетевыми протоколами. Проект бесплатный и открытый, включает компилятор, веб-IDE, визуизатор и обширную библиотеку популярных форматов.
Система работает через описание формата в файле .ksy, который компилируется в исходный код выбранного языка. Например, простое описание заголовка GIF позволяет получить доступ к таким полям, как ширина и высота изображения через удобный API. Такой подход устраняет необходимость в написании повторяющегося, подверженного ошибкам кода для разбора бинарных структур, экономя время и упрощая отладку.
Комментарии (43)
- Kaitai Struct — декларативный язык описания бинарных форматов, который генерирует код на разных языках.
- Пользователи отмечают, что он удобен как для работы, так и для хобби-RE, но жалуются на отсутствие поддержки записи и громоздкий YAML.
- Появилась экспериментальная поддержка сериализации в Python и Java, но она пока не покрывает все типы полей и требует ручной работы.
- Сравнение с Wuffs и Construct показывает, что Kaitai фокусируется на описании форматов, тогда как Wuffs — на безопасном коде, а Construct — на удобстве использования.
- Сообщество обсуждает, что нехватка поддержки других языков (Rust, Zig) и отсутствие поддержки полного цикла чтение-изменение-запись делает Kaitai менее универсальным, чем можно было бы.
Strudel REPL – a music live coding environment living in the browser
Мне не хватает полного текста статьи о Strudel REPL для создания точного пересказа. Пожалуйста, предоставьте полный текст статьи, и я подготовлю краткое изложение в соответствии с вашими требованиями: около 170 слов в двух абзацах, выделяя главную идею и ключевые факты.
Комментарии (38)
- Пользователи обсуждают Strudel как браузерную альтернативу TidalCycles, отмечая, что он не требует установки и работает везде.
- Участники спорят о качестве звука и «машинном» характере примеров, спрашивают, может ли Strudel охватить стилистику, отличную от техно/хаус.
- Обсуждается возможность запуска Strudel локально и интеграция с AI для генерации нот и синтеза звуков.
- Упоминается, что Strudel открыт исходный кодом и может быть запущен из исходников, а также что он может быть использован для коллаборативной джем-сессии.
MAML – A new configuration language
MAML — это минималистичный формат для данных, который сохраняет читаемость для человека и при этом остаётся простым для машинной обработки. Он сочетает лучшее из JSON, дополняя его комментариями, многострочными строками и необязательными запятыми и кавычками.
MAML уже реализован в нескольких языках, включая JavaScript, Python, Rust, C и PHP. Эти реализации находятся на разных стадиях разработки: от готовых к использованию до находящихся в активной разработке.
Проект полностью открыт, с кодом на GitHub, и распространяется по лицензии MIT, что позволяет свободно использовать, модифицировать и распространять его.
Комментарии (145)
- Обсуждение вновь подтвердило, что вместо улучшения JSON/YAML/TOML появляется всё больше новых конфиг-языков, но никто не решает их проблемы с синтаксисом, датами, комментариями и т.д.
- Участники обсуждения отмечают, что большинство этих новых языков не решают фундаментальные проблемы, такие как отсутствие типов данных, дат и комментариев в JSON.
- Некоторые комментаторы подчеркивают, что вместо того, чтобы изобретать новые языки, лучше бы улучшить существующие инструменты, такие как JSON5 или TOML.
- Другие участники поднимают вопрос, что если бы разработчики потратили усилия на улучшение существующих инструментов, вместо создания новых, это было бы более продуктивно.
LLMs are mortally terrified of exceptions 🔥 Горячее
Twitter/X теперь требует включённый JavaScript и блокирует просмотр без него. Пользователи с блокировщиками скриптов или расширений, которые ограничивают JS, теперь видят сообщение о недоступности JavaScript и предлагают «попробовать снова». Это делает невозможным просмотр даже статического контента без JS.
Комментарии (135)
- Обсуждение выявило, что LLM-ы склонны к чрезмерно защитному стилю кода, который, как выясняется, может быть вызван RLHF и набором данных, где «правильный» код — это тот, который перестраховывается на каждом шаге.
- Участники обсудили, что «защитный» код может быть не только избыточным, но и логически неверным, поскольку он может маскировать ошибки, которые в продакшене не должны быть проглочены.
- Некоторые участники отметили, что вместо того, чтобы учить модель писать «правильный» код, стоит сфокусироваться на том, чтобы она училась различать, когда действительно нужна обработка ошибок, а когда можно обойтись без нее.
- Также было отмечено, что вместо того, чтобы писать в защитном стиле, лучше бы научить модель писать код, который не делает глупых ошибок в первую очередь.
Pointer Pointer (2012)
К сожалению, в вашем запросе нет достаточной информации для создания пересказа статьи. Вы предоставили только название "Pointer Pointer" и сообщение о необходимости включить JavaScript для работы приложения.
Чтобы я мог создать точный и ёмкий пересказ в формате Markdown на русском языке, пожалуйста, предоставьте полный текст статьи или ее существенные части, включая основные идеи, факты и цитаты.
Комментарии (28)
- Старый проект pointerpointer.com (2006) использует JSON-файл с 700+ фото и алгоритм выбирает ближайшее по положению курсора, что делает невозможным «подглядывание» за кадром.
- Пользователи спорят, были ли фото подобраны вручную или с помощью OpenCV, но большинство склоняется к ручному отбору.
- Ностальгия и культурный феномен: обсуждение вызвало волну воспоминаний и вопрос о том, как именно собирались эти изображения.
- Пользователь предложил форк с котами, которые бы «ловили» курсор лапками.
Tauri binding for Python through Pyo3
Разработчики выпустили PyTauri — это привязка Python к фреймворку Tauri, который позволяет создавать настольные приложения с помощью веб-технологий. Теперь разработчики могут использовать Python для создания приложений, которые компилируются в нативные исполняемые файлы, сохраняя при этом все преимущества веб-разработки, такие как HTML, CSS и JavaScript. Это открывает возможности для создания кроссплатформенных приложений с меньшим весом и более высокой производительностью по сравнению с традиционными Electron-приложениями. Проект примечателен тем, что объединяет простоту Python с мощью современных веб-технологий.
Комментарии (47)
- Обсуждение показало, что Tauri не является просто обёрткой над системным WebView, а скорее фреймворком, который может использовать различные движки, включая экспериментальный Servo.
- Участники обсудили, что Tauri позволяет использовать веб-технологии для создания десктоп-приложений, но при этом не требует включения полной копии Chromium в каждом приложении, как это делает Electron.
- Были упомянуты преимущества Tauri в контексте лицензий Qt и сложности использования Qt, а также вопросы производительности и размера дистрибутива.
- Участники также обсудили, что Tauri позволяет использовать Python в качестве бэкенда, что может быть полезно для веб-разработчиков, желающих использовать веб-технологии для создания десктоп-приложений.
Devpush – Open-source and self-hostable alternative to Vercel, Render, Netlify
Devpush — это опенсорсная альтернатива Vercel, предназначенная для автоматического деплоя приложений на любых языках программирования. В отличие от коммерческих решений, он не ограничивается JavaScript-экосистемой и работает с любым стеком технологий, предоставляя непрерывную доставку из Git-репозитория.
Проект позволяет разработчикам быстро развертывать приложения через простые push-запросы в ветку, автоматически собирая и запуская их на собственной инфраструктуре. Это особенно полезно для команд, которым нужен контроль над окружением и гибкость в выборе инструментов без привязки к конкретному провайдеру.
Комментарии (82)
- Пользователи обсуждают и сравнивают различные инструменты для развертывания и управления контейнеризированными приложениями на собственном железе, такие как Coolify, Dokploy, CapRover, Cosmos Cloud, Piku и /dev/push.
- Ключевые темы: простота использования и UX (сравнение с Vercel), поддержка различных рантаймов и Docker, безопасность установки (curl | sh), зрелость и стабильность проектов.
- Автор /dev/push объясняет фокус на удобстве и опыте, близком к Vercel, в отличие от более мощных, но сложных container-centric решений, и анонсирует планы по добавлению новых функций.
- Поднимаются вопросы о необходимости глубоких знаний Linux для самохостинга и ответственности, а также о альтернативных подходах (Kubernetes vs более простые решения).
- Упоминаются recent controversies вокруг Vercel как возможный драйвер роста интереса к альтернативам и открытым решениям.
OpenAI ChatKit
OpenAI выпустила chatkit-js — JavaScript-библиотеку для создания чат-интерфейсов с поддержкой их моделей ИИ. Она упрощает интеграцию чат-функциональности в веб-приложения, предоставляя готовые компоненты и API для управления диалогами, историей сообщений и реальным взаимодействием с пользователем.
Библиотека включает обработку потоковых ответов, управление состоянием чата и настройку интерфейса. Это ускоряет разработку чат-приложений, снижая необходимость в ручной реализации сложной логики. Практический вывод: инструмент полезен для быстрого прототипирования и продакшн-решений на базе OpenAI.
Комментарии (31)
- Критика заявленной "независимости от фреймворков" при поддержке только React и отсутствии интеграции с бэкенд-фреймворками
- Опасения по поводу привязки к OpenAI (вендор-локин) и отсутствия поддержки других моделей ИИ (например, Claude)
- Отмечается сходство с существующими решениями (CopilotKit, AG-UI) и их недостатки, включая платность и закрытый исходный код
- Предложения по интеграции ИИ через тегирование в существующие интерфейсы (как в Figma или Google Docs), а не через отдельный чат
- Обсуждение бизнес-модели и необходимости функции "Bring your own subscription" для применения собственных квот и API-ключей
Ladybird passes the Apple 90% threshold on web-platform-tests 🔥 Горячее 💬 Длинная дискуссия
Социальная сеть X требует включённого JavaScript для работы и отображает сообщение об ошибке, если он отключён в браузере. Пользователю предлагается активировать JavaScript или перейти на поддерживаемый браузер из списка в Центре помощи.
Сообщение также предупреждает, что расширения для приватности могут мешать работе сайта, и советует их отключить. Внизу страницы приведены ссылки на политики сервиса и информация о корпорации.
Комментарии (224)
- Впечатляющий прогресс независимого проекта Ladybird, достигнутый за короткое время, приближает его к практической пригодности.
- Прохождение 90% тестов WPT — это произвольный, но требуемый Apple метрический порог для рассмотрения в качестве альтернативного движка в iOS; сама метрика считается несовершенной.
- Реальная сложность заключается в поддержании темпа развития и реализации постоянно растущего количества новых веб-API, а не только в прохождении текущих тестов.
- Вызывают вопросы безопасность и наличие песочниц в быстро разработанном движке, а также его текущая производительность при повседневном использовании.
- Проект рассматривается как важная альтернатива доминирующим движкам, но до полной конкурентоспособности еще несколько лет работы.
Embracing the parallel coding agent lifestyle
Инженеры всё чаще запускают несколько агентов одновременно — например, одновременно работают несколько экземпляров Claude Code или Codex CLI в разных директориях или даже в разных репозиториях. Саймон Уиллисон, который сам пишет код на Python и JavaScript, решил проверить, насколько полезно это на практике.
Основная идея: если ты уже знаешь, что именно ты хочешь сделать, то параллельные агенты позволяют тебе экономить время на рутинные задачи, пока ты сам занят более сложной работой. Агент может исследовать новую библиотеку, собрать доказательства концепции или найти примеры использования API без всякого риска для проекта. Для таких задач достаточно лишь четко указать модели, что именно от нее требуется.
В статье приводятся конкретные примеры: агент может самостоятельно запустить тесты и увидеть, что за ним стоит поправить предупреждение об устаревшем вызове. Или же, если ты уже решил, какую архитектуру использовать, можно просто сказать агенту, какие именно классы и методы нужно вызвать, и он сам найдет, где их стоит применить.
Саймон отмечает, что главное — это четко формулировать задачу и дать агенту контекст. Тогда сгенерированный код будет легко и быстро проверяем, и ревью требуется меньше усилий. Он также подчеркивает, что важно следить, чтобы агент не пытался внедрить изменения в тот репозиторий, где это не требуется. С другой стороны, если агент предлагает решение, которое требует лишь небольшой доработки, это может быть выгодно при условии, что оно не будет затем отвергнуто.
В заключение Саймон пишет, что пока еще не ясно, какие именно задачи лучше всего делегировать агенту, а какие стоит выполнять самому. Он экспериментирует с разными моделями и способами их запуска, включая запуск в Docker-контейнерах для изоляции. Он также отмечает, что в будущем, вероятно, придется еще больше полагаться на такие инструменты, и потому важно научиться использовать их эффективно и безопасно.
Комментарии (121)
- Обсуждение в основном вращается вокруг трёх тем: высокая стоимость ревью кода, параллельные агенты и их влияние на фокус и продуктивность, а также культурные и этические аспекты использования AI-агентов.
- Участники делятся личными стратегиями, такими как использование различных инструментов вроде Conductor и Crystal для управления агентами, и обсуждают, как сделать их более эффективными.
- Обсуждается, как сделать ревью кода менее трудоёмким, включая использование инструментов вроде bottleneck для ревью кода, и как влияет на продуктивность и фокус.
- Также обсуждается, как влияет на эффективность работы использование AI-агентов, и какие могут быть последствия для долгосрочной устойчивости и качества кода.
Show HN: ASCII Drawing Board
Онлайн-инструмент для рисования ASCII-арта с настраиваемыми кистями разных размеров (1×1, 2×2, 3×3) и возможностью выбора символов из Unicode, включая спецсимволы вроде ✦ или █. Есть ластик, очистка всего холста, настройка размеров сетки (столбцы и строки), а также функции копирования и экспорта в текстовый файл.
Работает в реальном времени с индикацией текущих параметров (например, 90×40, кисть 2px). Автор отмечает, что не все Unicode-символы отображаются корректно из-за ограничений шрифтов, и призывает дать обратную связь через соцсети.
Комментарии (33)
- Отмечены технические проблемы: некорректная работа фиксированной ширины шрифта, нестабильность на мобильных устройствах (особенно в Firefox), неожиданное форматирование текста.
- Высоко оценена концепция и простота инструмента для рисования ASCII-арта, многие называют его интересным и полезным.
- Поступили предложения по улучшению: добавить Undo, использовать только печатные ASCII-символы по умолчанию, улучшить мобильную версию.
- Автор активно отвечает на фидбэк, объясняет выбор символов и делится ссылками на другие похожие инструменты.
- Обсуждение затронуло тему возрождения интереса к ASCII-арту и существование других нишевых инструментов для работы с ним.
Ambigr.am 🔥 Горячее
Сервис Ambigr.am требует включения JavaScript в браузере для своей работы. Это стандартная практика для современных веб-приложений, которые используют интерактивные функции и динамический контент. Без активации JavaScript пользователь не сможет взаимодействовать с интерфейсом или получать полный функционал платформы.
Отключение JavaScript может ограничить доступ к ключевым возможностям, таким как обработка данных в реальном времени или анимации. Рекомендуется проверить настройки браузера и разрешить выполнение скриптов для корректной работы сервиса.
Комментарии (37)
- Участники делятся примерами известных амбиграмм (логотипы The Princess Bride, Sun Microsystems, Tyrian, OHIO) и личными историями, связанными с ними.
- Обсуждаются технические аспекты создания амбиграмм: возможность генерации с помощью алгоритмов, шрифтов с лигатурами, контекстуальными альтернативами и даже моделей диффузии.
- Высказываются идеи о применении амбиграмм в лингвистике (гипотеза Сепира-Уорфа) и их сходстве с языком из фильма «Прибытие».
- Отмечается игровой и головоломный характер амбиграмм, а также удобство интерактивных функций сайта (например, переворот изображения по клику).
- Некоторые пользователи впервые знакомятся с концепцией амбиграмм и выражают восхищение, другие делятся связанными ресурсами (сайты, архивные проекты).
Show HN: Run – a CLI universal code runner I built while learning Rust
Универсальный раннер и умный REPL на Rust, который автоматически определяет язык программирования по расширению файла или shebang и выполняет код без предварительной настройки. Поддерживает Python, JavaScript, Ruby, Go и другие популярные языки, экономя время на переключении между средами.
Инструмент предлагает интерактивный режим с подсветкой синтаксиса и историей команд, а также пакетную обработку файлов. Ключевое преимущество — кроссплатформенность и минимальные зависимости, поскольку написан на Rust. Практический бонус: можно быстро тестировать сниппеты, не покидая терминал.
Комментарии (34)
- Автор представил инструмент
runкак унифицированный REPL для множества языков, позволяющий выполнять код разных языков одной командой без переключения между отдельными REPL. - Обсуждаются технические детали и сравнение с существующими инструментами: шебанг-строка, задачами
just, магическими командами IPython/Jupyter и возможностью запуска скриптов через Bash. - Уточняется классификация языков (Swift, Kotlin) как компилируемых или интерпретируемых в контексте работы инструмента.
- Поднимается вопрос о мотивации создания инструмента и терминологии ("polyglot"), а также простоте добавления поддержки новых языков через реализацию trait на Rust.
- Автор поясняет, что инструмент — это эксперимент новичка в Rust, а не замена существующим решениям.
Gemini 3.0 Pro – early tests
Социальная сеть X (ранее Twitter) требует включённого JavaScript для работы. При его отключении пользователь видит сообщение о необходимости активировать JavaScript или сменить браузер на поддерживаемый, со ссылкой на список совместимых браузеров.
Также упоминается, что проблемы могут вызывать расширения для приватности — их советуют отключить. Внизу страницы приведены стандартные ссылки на условия использования, политики и информацию о рекламе.
Комментарии (109)
- Критика отсутствия у Google сильной продуктовой культуры, что мешает созданию инновационных продуктов на основе их же технологий.
- Обсуждение субъективности сравнения моделей ИИ (Gemini, GPT, Claude) и сложности объективной оценки из-за различий в задачах и опыте пользователей.
- Скептицизм по поводу рекламных кампаний и хайпа вокруг новых моделей, которые часто не соответствуют реальным возможностям.
- Подчеркивание проблем Gemini с многократным выполнением инструкций и склонностью к "зацикливанию" по сравнению с конкурентами.
- Отмечается сильная мультимодальность Gemini (работа с изображениями, видео), но сложность доступа и использования продуктов Google AI.
Why I chose Lua for this blog
Автор перевел свой блог с Racket на Lua, чтобы снизить сложность и обеспечить долгосрочную стабильность. Основная причина — разочарование в быстро меняющихся экосистемах вроде JavaScript и Ruby, где постоянные обновления и ломающие изменения усложняют поддержку. Lua привлек медленным развитием: между версиями 5.1 (2006) и 5.4 (2020) различия минимальны, а язык требует лишь компилятора C89.
Блог работает по старинке — через CGI-скрипты, с SQLite в качестве базы и шаблонизацией Mustache. Несмотря на кажущуюся архаичность, автор ценит простоту, минимальное количество зависимостей (около десяти) и возможность писать собственные легковесные библиотеки. Ключевой вывод: блог — это пространство для экспериментов, где можно отказаться от модных инструментов в пользу того, что действительно работает и приносит удовольствие.
Комментарии (135)
- Предложение возродить создание собственных движков для блогов как учебного проекта для инженеров из-за его низкого риска и возможностей для экспериментов.
- Обсуждение выбора Lua как стабильного и минималистичного языка для веб-разработки, несмотря на его недостатки (1-based индексация, разрыв между версиями, мало стандартных библиотек).
- Критика сложности современных стеков для блогов и аргументы в пользу простых решений: статические генераторы (Hugo), чистый HTML или минимальные скрипты (Python, Lua).
- Упоминание альтернативных технологий и подходов: Redbean, Perl, Caddy, XSLT, Web Components, Fennel, OpenResty и другие.
- Подчёркивание важности личного выбора, удовольствия от процесса и независимости от внешних сервисов при создании блога.
Fossabot: AI code review for Dependabot/Renovate on breaking changes and impacts
Представлен fossabot — ИИ-агент для стратегического обновления зависимостей, который работает как инженер: исследует версии, оценивает влияние на приложение и адаптирует код при необходимости. В отличие от инструментов вроде Dependabot, которые делают минимальные обновления для исправления уязвимостей, fossabot способен на сложные мажорные обновления, требующие анализа рисков и преимуществ.
Доступен в публичном превью для JavaScript и TypeScript экосистем. Агент анализирует код на предмет совместимости, выявляет устаревшие методы и даже предлагает модернизацию синтаксиса. Пользователи получают $15 ежемесячного кредита. Ключевое преимущество — сокращение рутины и предотвращение застоя обновлений в бэклоге за счёт автоматизации стратегических решений.
Комментарии (13)
- Обсуждение возможностей ИИ для анализа безопасности и обновления зависимостей в кодовых базах, особенно в динамически типизированных языках.
- Отмечается сложность оценки миграций зависимостей из-за уникальности контекста каждой кодовой базы.
- Подчеркивается, что задача масштабирования глубокого статического анализа кода сложна и ресурсозатратна.
- Упоминается, что GitHub уже исследовал подобные подходы, но столкнулся с трудностями в достижении удовлетворительных результатов.
- Участники видят в этом перспективную нишу для ИИ-агентов из-за шаблонности задач и отсутствия строгих временных ограничений.
Ask HN: Who wants to be hired? (October 2025) 💬 Длинная дискуссия
—
Комментарии (231)
- Разработчики ищут удалённую работу, многие открыты к релокации, предпочитают гибридный формат или готовы к редким командировкам.
- Основные технологические стеки включают Python, JavaScript/TypeScript, React, Node.js, облачные платформы (AWS, GCP) и контейнеризацию (Docker, Kubernetes).
- Специализации варьируются от full-stack, data engineering и машинного обучения до дизайна продуктов и UX/UI.
- Ключевые интересы: работа с LLM, AI-агентами, компьютерным зрением, распределёнными системами и дизайн-системами.
- Многие кандидаты имеют опыт более 10 лет, опыт построения масштабируемых продуктов и решения сложных бизнес-задач.
The Temporal Dead Zone, or why the TypeScript codebase is full of var statements
В TypeScript-коде Microsoft активно используются устаревшие var вместо современных let и const, несмотря на их проблемы с областью видимости. Это связано с Temporal Dead Zone (TDZ) — зоной, где переменные объявлены, но не инициализированы. При использовании let и const обращение к переменным в TDZ вызывает ошибки, что повышает надёжность, но требует вычислительных ресурсов.
Переход на var в критичных к производительности участках дал TypeScript до 8% ускорения в бенчмарках, поскольку var избегает проверок TDZ. Это демонстрирует компромисс между безопасностью кода и производительностью, особенно в крупных проектах, где даже небольшие оптимизации значимы.
Комментарии (53)
- Обсуждается производительность
let/constпротивvarв JavaScript, гдеvarможет давать выигрыш до 8% из-за отсутствия проверок TDZ (Temporal Dead Zone). - Поднимается вопрос о дизайне JS: хоистинг и TDZ считаются проблемными и неочевидными особенностями языка, усложняющими оптимизацию.
- Участники спорят, является ли текущая реализация лексической области видимости в JS "ужасной" или это просто особенность, которую нужно принять.
- Обсуждаются возможные решения: более умный анализ TDZ в движках, трансляция в
varна этапе сборки или использование других языков (например, Lua) как примера. - Затрагивается практический аспект: TypeScript перешел на таргет ES2018+, что неожиданно привело к падению производительности из-за использования
letвместоvar.
Cleaning house in Nx monorepo, how i removed unused deps safely
Автор успешно удалил около 120 неиспользуемых зависимостей в Nx-монополии, сократив время установки на минуту и уменьшив количество уязвимостей. Для этого он использовал инструмент Knip вместо устаревшего depcheck, так как он лучше работает с современными монополями и анализирует импорты и конфиги. Knip выдал список потенциально ненужных пакетов, но около 40% из них оказались ложными срабатываниями — например, зависимости использовались в скриптах, конфигах Jest или CSS.
Процесс включал удаление кандидатов, последующую проверку сборки, тестов и запуска приложений, а затем восстановление пакетов, которые оказались нужны, с добавлением их в ignore-лист Knip. Автор настроил конфиг под монополию, игнорируя специфичные для проектов ложные срабатывания. Изменения были мержены одной партией в тихое время с предварительным деплоем в preview-ветку для проверки. В будущем планируется интегрировать Knip в CI для предотвращения накопления мусора.
Комментарии (26)
- Обсуждаются причины накопления неиспользуемых зависимостей: невнимательность разработчиков, множественные рефакторинги, устаревшие библиотеки в монорепозиториях и автоматическое добавление пакетов без контроля.
- Участники отмечают, что инструменты вроде Knip помогают выявлять мертвые зависимости и файлы, но не оценивают качество кода, и окончательное решение остается за человеком.
- Экосистема и практики разработки (например,
pip freezeилиnpm installбез проверки) поощряют накопление лишних пакетов. - В больших и старых проектах, особенно с микросервисами и смешанными стеками, "хлам" накапливается быстро из-за миграций и отсутствия регулярной очистки.
- Некоторые видят в постоянной борьбе с кликбейтом и переименованиях заголовков раздражающий и непродуктивный аспект обсуждений.
Go ahead, write the “stupid” code
Автор вспоминает, как начал программировать в 2010 году, почти бросив идею из-за неуверенности, но в итоге полюбил это дело через упорство. Он признаётся, что писал много «глупого» кода во время учёбы и игровых джемов, что помогло ему отточить навыки и сохранить интерес.
Сейчас, работая с JavaScript и Deno, он осознал, что стал излишне строг к себе, боясь писать что-то простое или неидеальное. Его вывод: не стоит сдерживаться — любой код, даже самый нелепый, это шаг вперёд. Важно экспериментировать, пробовать новое и просто получать удовольствие от процесса, ведь это поддерживает любопытство и профессиональный рост.
Комментарии (131)
- Рекомендуется начинать с написания простого, "глупого" кода для быстрого старта и проверки идей, а не с длительного планирования.
- Прототипирование помогает уточнить требования, выявить ошибки в ментальной модели и получить обратную связь.
- Важно найти баланс между быстрым стартом и стратегическим планированием, учитывая масштаб проекта и возможные последствия.
- Опыт позволяет писать менее "глупый" код с самого начала, используя лучшие практики и архитектурные шаблоны.
- Такой подход поддерживает мотивацию и удовольствие от процесса создания чего-то своего, даже если результат неидеален.
Play snake in the URL address bar 🔥 Горячее
Это браузерная игра «Змейка», которая использует URL-страницы в качестве игрового поля. Управление осуществляется стрелками или клавишами WASD, а змейка перемещается прямо в адресной строке. Если URL отображается некорректно, есть кнопка для исправления отображения.
Игра сохраняет рекорд игрока в очках и позволяет делиться результатом. Создана разработчиком под ником @epidemian, исходный код открыт на GitHub. Проект демонстрирует креативный подход к использованию стандартных элементов браузера для создания игрового процесса.
Комментарии (88)
- Пользователи восхищены креативностью и нестандартным подходом к реализации игры "Змейка" в адресной строке браузера с использованием символов Unicode (Braille).
- Обсуждаются технические аспекты и проблемы: некорректное отображение пробелов в некоторых браузерах, предложения по улучшению (использование других символов, зацикливание границ), ограниченная работа на мобильных устройствах.
- Предупреждения о возможных проблемах с историей браузера и рекомендации использовать режим инкогнито.
- Упоминаются похожие проекты: игры в favicon (2048, другая версия "Змейки"), а также шуточные предложения портировать Doom.
- Автор проекта (@epidemian) отмечает, что игра создана 10 лет назад и может некорректно работать в современных браузерах.
Auth.js is now part of Better Auth
Auth.js, ранее известный как NextAuth.js, переходит под управление команды Better Auth. Эта библиотека — один из самых популярных инструментов аутентификации в JavaScript, используемый такими сервисами, как ChatGPT и Google Labs. Инициатива возникла из-за растущих потребностей в гибкости и современных функциях, которые исходная команда Auth.js не могла полноценно реализовать.
Существующие пользователи Auth.js могут продолжать работу без изменений: команда будет поддерживать безопасность и исправлять критические проблемы. Однако для новых проектов рекомендуется выбирать Better Auth, так как он предлагает более современные решения. Миграционные руководства уже доступны, а в будущем Better Auth планирует добавить недостающие функции, такие как управление сессиями без базы данных, чтобы объединить экосистему.
Комментарии (65)
- Выражена обеспокоенность поглощением бесплатного проекта Auth.js коммерческим продуктом Better Auth, что может привести к его заброшенности.
- Отмечаются проблемы с развитием Auth.js: долгая разработка новой версии и уход ключевого контрибьютора.
- Подчеркивается удобство и популярность Auth.js среди разработчиков благодаря простой настройке и независимости от фреймворков.
- Обсуждается миграция крупных компаний (например, OpenAI) с Auth0 на собственные или открытые решения из-за неудовлетворительной поддержки.
- Упоминается нехватка простых и современных аутентификационных решений для языков вроде Go, в отличие от экосистемы JavaScript.
Translating a Fortran F-16 Simulator to Unity3D
Перевод симулятора F-16 из Fortran в Unity3D потребовал адаптации аэрокосмических конвенций под игровой движок. Модель полёта, основанная на данных аэродинамических труб и реализованная через дюжину таблиц поиска и математических уравнений, изначально использовала правостороннюю систему координат с осью X вперёд, Y вправо и Z вниз — в отличие от левостороннего Z-вверх подхода Unity. Ключевой задачей стало корректное преобразование осей и знаков без потери физической точности.
Процесс включал интерполяцию многомерных таблиц, расчёт тяги двигателя, аэродинамических сил и моментов, а также реализацию системы управления полётом с PID-контроллерами и ограничителями перегрузки. Несмотря на профессиональный бэкграунд в аэрокосмической отрасли, автор отмечает сложность верификации такой модели без доступа к реальным лётным данным. Готовый симулятор доступен на itch.io, демонстрируя практический компромисс между академической точностью и игровой доступностью.
Комментарии (111)
- Участники обсуждают опыт работы с FORTRAN и его применение в аэрокосмической симуляции, включая исторические примеры и личные воспоминания.
- Поднимаются вопросы о единицах измерения (например, узлы, слагы) и их конвертации, с критикой подхода автора и предложениями использовать метрическую систему.
- Обсуждаются технические особенности языков программирования, такие как произвольные индексы массивов в FORTRAN и их аналоги в других языках.
- Упоминаются альтернативные реализации симуляторов на JavaScript и Clojure, а также ссылки на открытые проекты вроде Falcon BMS.
- Затрагиваются темы игровой ностальгии, сложностей моделирования физики и юмористические комментарии о единицах измерения (например, поронкусема).
Voronoi map generation in Civilization VII
В Civilization VII полностью переработали генерацию карт, чтобы сделать её разнообразнее и естественнее. Раньше использовался фрактальный шум, который создавал сбалансированные, но предсказуемые ландшафты — игроки жаловались на повторяемость и прямые береговые линии, нарушавшие immersion.
Теперь внедрена техника Вороного: алгоритм строит карты на основе ячеек, позволяя гибко управлять формой континентов и островов. Добавлены два новых типа — «Континенты и острова» и «Пангея и острова». Они сочетают органичность с балансом, особенно важным в мультиплеере. Это оживляет стадию исследования, ключевую для жанра 4X.
Комментарии (15)
- Участники высоко оценили статью о генерации карт с помощью диаграмм Вороного и выразили энтузиазм по поводу креативного программирования в этой области.
- Обсуждались технические детали, включая использование алгоритма Ллойда для улучшения форм регионов и JavaScript-библиотеки для работы с диаграммами Вороного.
- Были предложены идеи по комбинированию диаграмм Вороного с другими методами, такими как шум Перлина и GenAI, для большего контроля над процедурной генерацией.
- Упомянуты дополнительные ресурсы: блог о процедурной генерации, туториал по алгоритмам поиска пути и мнение о серии игр Civilization.
- Отмечено, что техника имеет потенциал не только для визуализации данных, но и для создания 3D-карт и игрового контента.
Ollama Web Search 🔥 Горячее 💬 Длинная дискуссия
Ollama представила новый API для веб-поиска, который позволяет моделям получать актуальную информацию из интернета, снижая риск галлюцинаций и повышая точность ответов. Бесплатный тариф доступен для индивидуального использования, а повышенные лимиты — через Ollama Cloud. API интегрирован с Python и JavaScript библиотеками, что упрощает создание инструментов для длительных исследовательских задач, включая работу с моделями вроде OpenAI gpt-oss.
Примеры кода демонстрируют использование через cURL, Python и JavaScript, возвращая структурированные результаты поиска с заголовками, URL и содержанием. Также показано, как построить поискового агента с помощью модели Qwen 3 от Alibaba, используя инструменты web_search и web_fetch для автоматизации запросов и обработки данных. Это расширяет возможности моделей, позволяя им активно взаимодействовать с веб-источниками в реальном времени.
Комментарии (158)
- Вопросы о поисковом провайдере и лицензии на результаты поиска, включая возможность их хранения и перепубликации.
- Сомнения в бизнес-модели Ollama, её переходе от локального хостинга к облачным услугам и планам монетизации.
- Обсуждение технических альтернатив для локального поиска и индексации, а также интеграции с Ollama.
- Критика запуска функции веб-поиска без четкой документации по тарифам, лимитам и политике конфиденциальности.
- Предложения и опыт использования сторонних инструментов для поиска (SearXNG, Tavily, SERP API) и локальных решений.
This month in Servo: variable fonts, network tools, SVG
Servo, высокопроизводительный движок для встраивания веб-технологий, в августе объединил рекордные 447 пул-реквестов. Ключевые нововведения включают поддержку inline SVG-элементов, улучшающую отображение таких сайтов, как Google, где логотип реализован через SVG. Также добавлены именованные линии и области CSS Grid (пока за флагом layout_grid_enabled) и поддержка переменных шрифтов через font-variation-settings на всех основных платформах, что позволяет гибко настраивать параметры вроде толщины.
Инструменты разработчика значительно продвинулись: появилась функциональная панель мониторинга сети и улучшенный отладчик JavaScript с отображением потенциальных точек останова. Исправлены критичные ошибки, например, в механизме hit testing, который определяет элементы под курсором, избегая использования устаревших данных отрисовки. Эти обновления делают Servo более стабильным и удобным для разработчиков, работающих с встраиваемыми веб-компонентами.
Комментарии (22)
- Отмечается отсутствие скроллбаров в Servo как существенный недостаток пользовательского опыта.
- Выражается поддержка Servo как проекта, увеличивающего выбор браузеров и противостоящего доминированию Chrome.
- Обсуждается уход Mozilla из проекта и надежды на нового спонсора (например, Brave), а также текущее финансирование от Igalia.
- Подчёркивается, что Servo позиционируется не как будущий браузер, а как платформа для встраивания веб-технологий в приложения.
- Упоминается масштабная переработка кодовой базы Servo (движок компоновки, сетевые компоненты) и сложность полной замены Gecko.
Snapdragon X2 Elite ARM Laptop CPU 💬 Длинная дискуссия
Похоже, это сообщение о процессоре Snapdragon X2 Elite от Qualcomm, но доступ к полной информации требует включения JavaScript в браузере. Без активации скриптов содержимое страницы, включая технические характеристики, производительность или особенности чипа, недоступно для просмотра.
Рекомендуется разрешить выполнение JavaScript в настройках браузера, чтобы ознакомиться с деталями о процессоре — вероятно, это новые разработки в области мобильных или портативных вычислений.
Комментарии (176)
- Обеспокоенность недостаточной открытостью и документацией для Snapdragon X2, что затрудняет поддержку Linux и разработку драйверов.
- Вопросы о реальной производительности, энергоэффективности и технических деталях (поддержка TSO, пропускная способность памяти, TDP) без предоставления бенчмарков.
- Скептицизм относительно заявлений о многодневной автономности и маркетинговых формулировок ("легендарный скачок").
- Надежды на появление конкурентов Apple Silicon и качественных ARM-ноутбуков с хорошей поддержкой Linux.
- Обсуждение ниши для ARM-чипов и необходимости поддержки со стороны Microsoft и OEM-производителей.
Yt-dlp: Upcoming new requirements for YouTube downloads 🔥 Горячее 💬 Длинная дискуссия
YouTube скоро внедрит изменения, которые могут нарушить работу инструментов для скачивания видео, включая yt-dlp. Разработчики проекта предупреждают о необходимости адаптации к новым требованиям, связанным с обновлениями в API и механизмах защиты контента.
Пользователям стоит ожидать временных сбоев или необходимости обновлять софт чаще. Сообществу предлагается участвовать в тестировании и сообщать о проблемах, чтобы ускорить исправления. Это подчеркивает хрупкость инструментов, зависящих от сторонних платформ.
Комментарии (547)
- Пользователи столкнулись с проблемами скачивания контента через официальное приложение YouTube и обсуждают использование yt-dlp как обходного решения
- YouTube усложняет процесс скачивания, внедряя сложный JavaScript-код, что вынуждает yt-dlp переходить на использование полноценной JS-среды выполнения (Deno) вместо самописного интерпретатора
- Сообщество выражает озабоченность по поводу будущего скачивания контента с YouTube, обсуждает технические сложности и возможные альтернативы для архивации видео
- Выбор Deno обусловлен его безопасностью и наличием самодостаточного бинарного файла, но это добавляет зависимость и усложняет использование yt-dlp в некоторых сценариях
- Обсуждаются потенциальные последствия для сторонних приложений и необходимость сохранения контента в свете ужесточения политики YouTube
Top Programming Languages 2025 💬 Длинная дискуссия
Python сохраняет лидерство благодаря своей универсальности в машинном обучении и веб-разработке, а JavaScript остаётся незаменимым для фронтенда. Rust продолжает расти из-за акцента на безопасность и производительность, особенно в системном программировании. Go набирает популярность в облачных сервисах и микросервисной архитектуре благодаря простоте и эффективной параллельной обработке.
Стоит отметить рост TypeScript как более строгой альтернативы JavaScript, а также стабильное присутствие Java в корпоративных приложениях. Интерес к Julia увеличивается в научных вычислениях, а Kotlin укрепляет позиции в мобильной разработке под Android. Практический вывод: выбор языка всё больше зависит от конкретной области, а не только от общей популярности.
Комментарии (343)
- Сомнения в методологии рейтинга языков программирования IEEE из-за использования ненадёжных источников (поисковые запросы, устаревающий StackOverflow), что может искажать реальную картину.
- Удивление высокой позицией Java (2-е место), объясняемой её доминированием в enterprise-секторе (финансы, страхование, здравоохранение) и миграцией legacy-систем с COBOL.
- Обсуждение искусственного завышения позиции Python из-за его популярности у новичков, в академических статьях и как основного языка вывода для LLM.
- Предложение объединить рейтинги близких языков (JavaScript/TypeScript, Java/Kotlin, C/C++) для более точного отражения популярности экосистем.
- Размышления о влиянии AI-ассистентов на будущее языков: возможная стагнация из-за зависимости LLM от популярных языков или, наоборот, упрощение изучения нишевых.
Zip Code Map of the United States
Интерактивная карта США визуализирует более 42 000 почтовых индексов (zip codes), показывая их географические центры. Пользователи могут вводить цифры кода, и карта подсвечивает все индексы, начинающиеся с этих цифр, постепенно сужая выборку до одного конкретного — это всего 0,002% от общего числа. Например, ввод «0» выделяет около 10% индексов, сосредоточенных на северо-востоке страны.
Карта позволяет исследовать распределение индексов по регионам, а также включает опцию отображения границ штатов. Инструмент создан с использованием JavaScript и библиотеки Leaflet, данные взяты из открытых источников. Это наглядный способ увидеть, как почтовые коды организованы географически и как их первые цифры соотносятся с частями страны.
Комментарии (82)
- Обсуждаются особенности почтовых индексов США (ZIP-кодов): их негеографическая природа как набора точек доставки, пересечение границ штатов и использование не по назначению (верификация, статистика).
- Поднимаются проблемы с визуализацией ZIP-кодов на картах и ошибки в данных, а также предлагаются альтернативные источники и инструменты для работы с ними.
- Упоминаются похожие системы в других странах (например, канадские почтовые коды) и их особенности.
- Обсуждается практическая сторона: неудобство ввода индекса после города и штата в формах, неполнота публичных баз данных и проблемы с автозаполнением.
- Отмечается исторический контекст: создание ZIP-кодов для сортировки почты, сложность получения точных данных в прошлом и их современное использование.
Cap'n Web: a new RPC system for browsers and web servers 🔥 Горячее 💬 Длинная дискуссия
Cap'n Web — это новая система RPC для браузеров и веб-серверов, созданная Cloudflare на чистом TypeScript. Она наследует философию объектно-ориентированных возможностей (object-capability) от Cap'n Proto, но оптимизирована для веб-стека: использует JSON для сериализации, работает поверх HTTP, WebSocket и postMessage(), весит менее 10 КБ и не требует схем или шаблонного кода. Поддерживает двусторонние вызовы, передачу функций и объектов по ссылке, а также конвейеризацию промисов для сокращения задержек.
Настройка занимает буквально несколько строк: клиент подключается через WebSocket, а сервер реализуется как класс с методами, которые автоматически становятся удалёнными процедурами. Например, метод hello(name) на сервере можно вызвать из браузера как api.hello("World"). Система интегрируется с TypeScript для типобезопасности и работает в Cloudflare Workers, Node.js и современных браузерах. Это делает распределённое программирование почти неотличимым от локального, с учётом сетевых реалий.
Комментарии (251)
- Обсуждение Cap'n Web как упрощённой, schemaless версии Cap'n Proto RPC для TypeScript/JavaScript с поддержкой передачи функций и двусторонних вызовов.
- Сравнение с другими технологиями: проводятся параллели с GraphQL (решение проблемы N+1, но без DataLoader), tRPC/ORPC (схемы vs schemaless), gRPC-web (сложность) и старыми системами вроде Java RMI или .NET Remoting.
- Подняты вопросы о безопасности (риски из-за отсутствия схем и передачи произвольных колбэков), состоянии сервера (статусность vs статусность) и проблемах отладки (сложность отслеживания сетевых запросов).
- Обсуждаются технические детали: пайплайнинг промисов для уменьшения RTT, выполнение
.map()на сервере через DSL, управление памятью и сборкой мусора для долгоживущих соединений. - Запросы на расширение: поддержка других языков (Rust, Elixir), стриминг, генераторы, версионирование API и бинарная совместимость с Cap'n Proto.
Cloudflare is sponsoring Ladybird and Omarchy 🔥 Горячее 💬 Длинная дискуссия
Cloudflare объявляет о спонсорской поддержке двух независимых open-source проектов — браузера Ladybird и дистрибутива Omarchy на базе Arch Linux для разработчиков. Это часть стратегии по укреплению открытого интернета через разнообразие инструментов. Ladybird — амбициозная попытка создать браузер с нуля, включая собственные движки рендеринга (LibWeb) и JavaScript (LibJS), что контрастирует с доминированием Chromium, используемого 65% пользователей. Такой подход стимулирует инновации в безопасности и производительности, а также выявляет недочёты в веб-стандартах.
Omarchy предлагает продуманную среду для разработчиков, упрощая настройку и повышая продуктивность. Оба проекта демонстрируют важность альтернативных решений в условиях консолидации рынка. Cloudflare видит в этом вклад в экосистему, где независимые инициативы помогают сохранять интернет открытым и конкурентоспособным.
Комментарии (417)
- Обсуждение спонсорства Cloudflare проектов Ladybird и Omarchy с акцентом на возможные скрытые мотивы компании, включая движение к вебу только для одобренных браузеров.
- Скептицизм относительно практической ценности Omarchy как ещё одного дистрибутива Linux и его сравнение с другими установщиками и системами, такими как Nix или Alpine.
- Вопросы о целесообразности создания нового браузерного движка (Ladybird) на C++ вместо более безопасных языков и сомнения в его способности конкурировать с существующими гигантами.
- Обсуждение личности DHH (создателя Omarchy) и его спорных высказываний, а также того, должно ли это влиять на поддержку его проектов.
- Поднята тема стратегического интереса Cloudflare к децентрализации веба и уменьшения зависимости от Google, аналогичного стратегии Valve с Proton.
M4.6 Earthquake – 2 km ESE of Berkeley, CA
Приложение для просмотра страниц событий о землетрясениях требует включенного JavaScript в браузере. Если он отключен, система предлагает воспользоваться альтернативными сервисами вроде уведомлений, фидов и веб-API в реальном времени.
Поддерживаются современные браузеры, но если возникают проблемы, стоит проверить их совместимость с фреймворком Angular или перейти на прямые feeds-каналы данных. Это удобный запасной вариант для быстрого доступа к актуальной информации без зависимостей от клиентского скриптования.
Комментарии (69)
- Пользователи обсуждают землетрясение магнитудой ~4.3 в районе залива Сан-Франциско, которое многие назвали самым сильным за последние годы.
- Мнения разделились: одни считают его незначительным и недостойным внимания, другие отмечают его интенсивность и необычность для региона.
- Обсуждение затронуло тему "Большого землетрясения" (The Big One), которого многие опасаются в Калифорнии.
- Для многих местных жителей это стало общим событием, вызвавшим оживлённый обмен впечатлениями в сообществе.
- Отмечается, что ощущения от землетрясения сильно зависят от расстояния до эпицентра и местной геологии, а не только от магнитуды.
You did this with an AI and you do not understand what you're doing here 🔥 Горячее 💬 Длинная дискуссия
HackerOne — это платформа для координации программ bug bounty, где компании платят исследователям за обнаружение уязвимостей в их системах. Для полноценной работы сайта требуется включенный JavaScript в браузере, так как многие интерактивные функции, включая отправку отчетов и взаимодействие с интерфейсом, зависят от него.
Без JavaScript пользователь не сможет получить доступ к основному функционалу, включая просмотр программ, отправку отчетов об уязвимостях и управление профилем. Это стандартная практика для современных веб-приложений, обеспечивающая безопасность и удобство использования.
Комментарии (431)
- Пользователи обсуждают волну бесполезных AI-генерируемых отчетов об уязвимостях (например, для cURL), которые тратят время разработчиков.
- Высказываются опасения, что в будущем AI сможет генерировать более правдоподобные, но все же ложные доказательства концепций (PoC).
- Предлагаются решения для борьбы со спамом: платный депозит за отправку отчета, баны, фильтрация по эмодзи и другим признакам AI-текста.
- Обсуждается негативное влияние AI на качество кода, ревью и общую культуру разработки, а также возможные скрытые мотивы таких атак.
- Отмечается профессиональная реакция мейнтейнера (badger) на некорректный отчет и ссылки на соответствующие доклады Дэниела Стенберга о проблеме.
The bloat of edge-case first libraries
Многие библиотеки в экосистеме JavaScript стали избыточно сложными из-за попыток обработать все возможные крайние случаи, даже те, что на практике почти не встречаются. Например, функция clamp, предназначенная для ограничения чисел, превращается в монстра, проверяющего строки, валидирующего типы и значения, что приводит к появлению микробиблиотек вроде is-number с 90 млн загрузок в неделю. Это результат плохого технического дизайна: вместо чёткого определения ожидаемых входных данных разработчики добавляют слои проверок для гипотетических сценариев.
Правильный подход — проектировать функции под конкретные типы данных, оставляя валидацию значений на усмотрение вызывающей стороны. Библиотеки вроде is-arrayish или pascalcase, принимающие разнородные входы, лишь увеличивают сложность и зависимости без реальной пользы. Стоит вернуться к простоте: в большинстве случаев достаточно встроенных методов языка, а специализированные решения нужны только для узких задач, а не как стандарт.
Комментарии (125)
- Обсуждение критикует избыточное использование зависимостей в JavaScript/TypeScript для простых задач, таких как проверка типов, что ведет к раздуванию экосистемы.
- Участники связывают проблему с историческими особенностями JavaScript: отсутствием строгой типизации и богатой стандартной библиотеки в прошлом.
- Поднимается вопрос о дизайне контрактов функций: следует ли валидировать входные данные внутри функции или возлагать эту ответственность на вызывающую сторону.
- Отмечается культурное различие между сообществами: в Python принята модель "согласованных взрослых", а в JS — оборонительное программирование.
- Обсуждается роль статической типизации (TypeScript) и стандартных библиотек как способа уменьшить потребность в микро-пакетах для проверок.
Did you read the quarter-million-line license for your Slack app?
Slack, будучи Electron-приложением, использует библиотеки с лицензией MIT, что требует включения соответствующего файла лицензии в дистрибутив. Однако в некоторых версиях Slack этот файл отсутствует, что нарушает условия лицензирования и может вызвать юридические вопросы. Это подчёркивает важность соблюдения лицензионных соглашений даже в крупных коммерческих продуктах.
Пользователи Mastodon сталкиваются с необходимостью включения JavaScript для работы веб-приложения, что может быть неудобно для тех, кто предпочитает отключать скрипты из соображений безопасности или производительности. В качестве альтернативы предлагается использовать нативные приложения, доступные для различных платформ, что улучшает опыт и обеспечивает большую гибкость.
Комментарии (38)
- Участники обсуждают чрезмерную сложность и раздутость лицензий и условий Slack, а также его зависимость от множества сторонних библиотек.
- Высказывается критика в адрес современного ПО за расточительное использование ресурсов в сравнении с программным обеспечением прошлого.
- Поднимается тема необходимости владения программным обеспечением, а не его аренды (подписки), и возможности самоличного хостинга.
- Предлагаются альтернативы Slack для командного чата, такие как Zulip и Campfire, с возможностью самостоятельного хостинга.
- Обсуждаются причины популярности Slack в корпоративной среде, главные из которых — готовые решения и техническая поддержка для бизнеса.
Hidden risk in Notion 3.0 AI agents: Web search tool abuse for data exfiltration
Социальная сеть X требует включения JavaScript для работы, иначе пользователь видит сообщение об ошибке с предложением активировать его или сменить браузер на поддерживаемый. Также упоминается, что расширения для приватности могут мешать функционалу сайта, и их временное отключение может решить проблему.
Внизу страницы приведены ссылки на политики и условия использования, а также контактная информация компании, что подчёркивает юридическую прозрачность платформы. Это стандартный подход для веб-сервисов, зависящих от клиентских скриптов.
Комментарии (46)
- Обсуждается уязвимость в Notion AI, позволяющая через инъекцию в подсказку (prompt injection) выполнить несанкционированные действия и эксфильтрацию данных, используя доступ к инструментам и памяти.
- Участники указывают, что проблема не нова (аналогичные атаки демонстрировались ранее) и связана с фундаментальной проблемой смешения инструкций и данных в LLM, что делает системы уязвимыми при доступе к внешним инструментам.
- Подчеркивается, что многие компании, включая Notion, без должных мер безопасности подключают LLM к критичным данным и сервисам (GitHub, Gmail, Jira), что создает серьезные риски.
- В качестве решений предлагается разделение доверенных и недоверенных данных, строгое ограничение прав LLM на уровне доступа к данным (как для обычного пользователя) и использование специализированных "укрепленных" моделей для агентов.
- Отмечается схожесть атаки с классическим CSRF, где привилегированный субъект обманом совершает unintended действия, и с фишингом из-за использования методов социальной инженерии.
Help us raise $200k to free JavaScript from Oracle 🔥 Горячее 💬 Длинная дискуссия
Deno подала официальную петицию в Ведомство по патентам и товарным знакам США, чтобы оспорить товарный знак Oracle на слово «JavaScript». После сбора более 27 тысяч подписей под открытым письмом проект перешёл к ключевой стадии discovery, требующей серьёзных ресурсов. Цель — доказать, что термин стал общедоступным обозначением языка, а не брендом Oracle, и освободить его для использования разработчиками, конференциями и авторами без юридических рисков.
Для усиления позиции Deno запустила кампанию по сбору $200 тыс. на экспертные опросы, показания свидетелей из индустрии и академической среды, а также юридические расходы. Oracle уже официально отвергла аргументы о generic-статусе термина. Успех дела важен не только для JavaScript, но и для принципов товарного права: победа корпорации создаст прецедент присвоения общеупотребимых понятий.
Комментарии (268)
- Критика сбора средств VC-финансируемой компанией Deno для суда с Oracle из-за товарного знака "JavaScript"
- Сомнения в успехе и целесообразности дела против Oracle с её огромными ресурсами и возможными негативными последствиями для сообщества
- Предложения альтернативных решений: переход на использование названий "JS", "ECMAScript" или "TypeScript"
- Восприятие инициативы как PR-хода или маркетингового хода, а не искреннего общественного служения
- Поддержка цели освобождения названия, но с оговорками относительно мотивов и методов Deno
How Isaac Newton discovered the binomial power series (2022)
Исаак Ньютон в студенческие годы открыл связь между площадями под кривыми и бесконечными суммами, переосмыслив классические задачи. Он начал с простых случаев, например, вычисления площади под ( y = (1 - x^2)^{1/2} ) (полукруг), и заметил закономерности в коэффициентах разложения. Путем догадок и проверок Ньютон обобщил биномиальную теорему на дробные степени, что позволило представлять функции в виде степенных рядов.
Это открытие стало ключом к анализу бесконечных рядов и интегральному исчислению. Ньютон использовал метод неопределенных коэффициентов и интерполяции, находя шаблоны в численных расчетах. Его подход демонстрирует, как интуиция и внимание к паттернам могут привести к прорыву даже без строгих доказательств, заложив основы современного математического анализа.
Комментарии (16)
- Обсуждение значимости письма Ньютона как доказательства его приоритета над Лейбницем в разработке исчисления.
- Споры о доступности математики: одни считают, что современные развлечения отвлекают от глубоких идей, другие приводят примеры, что люди всё ещё способны на открытия.
- Технические проблемы с отображением математических формул на сайте: часть пользователей сталкивается с ошибками, другие не видят проблем.
- Упоминание работы Абхьянкара о важности школьной математики для серьёзных результатов.
- Обмен советами по решению проблем с отображением формул (блокировка JS, смена браузера).
Scream cipher 🔥 Горячее
В Unicode существует больше символов, обозначающих «латинскую заглавную букву A», чем букв в английском алфавите. Это наблюдение вдохновило на создание «шифра крика» — замены каждой буквы на один из вариантов A с диакритическими знаками. Например, фраза «SCREAM CIPHER» превращается в «ǠĂȦẶAẦ ĂǍÄẴẶȦ», что выглядит как набор кричащих символов.
Функции SCREAM и unscream реализуют прямое и обратное преобразование, сохраняя при этом регистр и игнорируя не-буквенные символы. Такой подход демонстрирует игривое использование Unicode для создания визуально эффектного, но семантически тривиального шифрования.
Комментарии (97)
- Представлена кодировка zalgo256 с использованием комбинирующих символов Unicode для создания "кричащего" шифра, аналогичного моноалфавитной замене.
- Обсуждаются юмористические и практические аспекты шифра, включая сравнение с ROT13, отсылки к XKCD и потенциальное применение для обхода ограничений длины строк.
- Участники делятся своими реализациями на разных языках (Python, JS, Racket) и идеями по скрытию данных с помощью невидимых символов или эмодзи.
- Поднимаются вопросы безопасности, указывается на отсутствие криптостойкости и обсуждаются технические детали работы с графемными кластерами в Unicode.
- Шифр вызвал оживлённую реакцию, включая шутки о "песчаных людях" из Star Wars и создание чат-ботов для кодирования.
EU Chat Control: Germany's position has been reverted to undecided 🔥 Горячее 💬 Длинная дискуссия
Борьба против Chat Control: "Позиция Германии вернулась к статусу НЕОПРЕДЕЛЕННОСТЬ..."
Для использования веб-приложения Mastodon необходимо включить JavaScript. Также можно воспользоваться нативными приложениями для вашей платформы.
Комментарии (255)
- Исключение для государственных аккаунтов ставит под сомнение заявления о безопасности и точности системы, указывая на вероятность ложных срабатываний.
- Предложение воспринимается как антидемократичное и нелегитимное, подрывающее доверие к ЕС и ведущее к росту поддержки крайних политических сил.
- Реализация подобного контроля технически неfeasible, так как злоумышленники могут легко обойти его с помощью альтернативных зашифрованных каналов.
- Критики проводят параллели с историей тотальной слежки (Стази, Третий рейх) и предупреждают о создании дистопического инструмента массового наблюдения.
- Обсуждение выявляет циничный мотив лоббирования со стороны компаний-поставщиков surveillance-решений (Thorn, Palantir) и заинтересованных госструктур (Europol).
- Исключение для политиков трактуется как способ избежать бумажного следа и подотчетности, а безопасность служит лишь прикрытием.
- Многие пользователи выражают готовность полностью отказаться от сервисов, которые подчинятся таким требованиям, и поддерживают принцип сквозного шифрования.
Oh no, not again a meditation on NPM supply chain attacks 💬 Длинная дискуссия
О нет, снова... Размышления об атаках на цепочку поставок NPM
Я долго откладывал эту статью — более года — но, как мы видим на этой неделе, пришло время снять покровы и сказать вслух:
В 2025 году Microsoft следует считать «плохим игроком» и угрозой для всех компаний, разрабатывающих программное обеспечение.
Конечно, если вы достаточно взрослые, чтобы помнить — это не первый раз...
Время — плоский круг
Мы снова здесь — в 2025 году Microsoft настолько всё испортили, что создали ещё больший риск, чем в 2000-х с их браузером, просто ничего не делая.
Изначально я начал писать этот пост во время инцидента с xz — изощрённой и долгосрочной попытки взять под контроль библиотеку, используемую в менеджерах пакетов большинства дистрибутивов Linux.
С тех пор произошло множество инцидентов, и конкретно NPM стал крупнейшим и самым простым способом распространения вредоносного ПО. Сначала большинство атак было направлено на кражу криптовалюты (поскольку техбро одержимы магическими электрическими деньгами и являются лёгкой добычей). Но теперь эти атаки на цепочку поставок нацелены на более критичные вещи, такие как токены и ключи доступа maintainers пакетов, как видно из инцидента с NX и теперь несколькими зависимостями, ежедневно используемыми тысячами разработчиков.
Опять же... это ничего нового в мире NPM.
Но так быть не должно было...
Мы прошли долгий путь, но никуда не ушли
У меня долгая история с NodeJS — примерно в 2010 году я начал работать над стартапом, и это было до того, как npm вообще появился.
В туманные дни 1990-х большинство проблем безопасности JavaScript не сильно касались бэкенда: это в основном была область Perl, PHP, Python и Java.
Однако веб был совсем другой историей.
В самые ранние дни Всемирной паутины был только один основной браузер, который все использовали: Netscape Navigator. Выпущенный в 1994 году, он был не просто браузером: на протяжении своей жизни он имел различные воплощения встроенного почтового клиента, календаря, HTML-редактора с FTP-браузером, а с плагинами мог воспроизводить медиафайлы, такие как Realplayer и MP3 (что я помню при его запуске), а также флеш-фильмы и игры. Именно здесь родился JavaScript.
Многие ранние сайты того времени были статичными — популярные инструменты для создания сайтов включали HotDog или Блокнот. Никаких навороченных IDE или фреймворков, только текстовый редактор, браузер и alert() для отладки.
Microsoft также вошла в игру с Internet Explorer — включённым в раннее DLC для Windows под названием «Plus! For Windows 95». В конечном итоге он стал программным обеспечением, на которое Microsoft поставила всю свою корпоративную стратегию (во многом как сегодня с ИИ).
Internet Explorer был встроен в каждый аспект Windows — сначала в 1995 году с Active Desktop, что продолжалось вплоть до Windows XP. С ним можно было встраивать фрейм на рабочий стол, а также документы Rich Text или электронные таблицы Excel. Он также был раздутым и багнутым — и с этим представлял две проблемы: огромный риск безопасности и обвинения в монополизации рынка браузеров.
Закон жёстко настиг Microsoft, и в 2001 году она проиграла — Microsoft было приказано разбить компанию, но апелляция отменила это решение.
Комментарии (170)
- Участники критикуют экосистему npm за уязвимости в цепочке поставок и отсутствие безопасности по умолчанию, сравнивая её с другими менеджерами пакетов.
- Обсуждается роль крупных компаний (в частности, Microsoft как владельца npm) в решении проблем безопасности и их ответственность за состояние экосистемы.
- Предлагаются конкретные меры: обязательная 2FA, подписывание кода, политика задержки обновлений (cooldown), переход на альтернативы (pnpm), сканирование пакетов.
- Поднимается проблема эксплуатации труда добровольцев в open-source и недостаточного вклада коммерческих организаций в проекты, которые они используют.
- Отмечается, что культура JavaScript-разработки чрезмерно зависит от большого количества зависимостей, что увеличивает поверхность атаки.
- Указывается на необходимость более строгого контроля зависимостей, включая проверку кода и фиксирование версий (pinning).
- Некоторые участники считают, что фундаментальные изменения в экосистеме маловероятны, и рекомендуют индивидуальные меры защиты.
Plugin System
Система плагинов
Система плагинов позволяет расширять функциональность IINA с помощью JavaScript. Вы можете управлять воспроизведением, вызывать API mpv, получать доступ к сети и файловой системе, добавлять пользовательские элементы интерфейса и многое другое. Система плагинов доступна в IINA версии 1.4.0.
Простой API, мощные возможности
Несколькими строками кода можно реализовать функции, точно соответствующие вашим потребностям. С помощью официального плагина User Scripts можно просто копировать и вставлять фрагменты кода в IINA без написания пакетов плагинов.
Примеры кода:
- Отображение названия видео крупным шрифтом поверх видео
- Сворачивание окна при паузе и возобновление при восстановлении
Возможности системы плагинов
- Ядро: Управление воспроизведением и получение/установка статусов
- MPV: Доступ к API mpv для расширенного контроля
- События: Регистрация обработчиков событий IINA и mpv
- HTTP: Выполнение HTTP и XMLRPC запросов
- Плейлист: Управление плейлистом и добавление пунктов меню
- Субтитры: Регистрация загрузчиков субтитров
- Меню: Добавление пунктов меню с горячими клавишами
- Оверлей: Отображение веб-контента поверх видео
- Боковая панель: Добавление вкладок с пользовательским содержимым
- Отдельные окна: Создание окон со сложным интерфейсом
- Глобальный контроллер: Управление несколькими экземплярами плеера
- Файлы: Доступ к файловой системе и временным файлам
- Настройки: Хранение предпочтений и страниц настроек
- Утилиты: Системные диалоги и запуск исполняемых файлов
- Консоль: Логи для отладки
Начало работы
Вместе с IINA поставляется инструмент командной строки iina-plugin для создания, сборки и запуска плагинов. Полная документация с руководствами и ссылками на API доступна на docs.iina.io.
Полезные ресурсы:
- Официальный плагин User Scripts
- Определения TypeScript для API плагинов
Комментарии (32)
- IINA позиционируется как современный, незаметно работающий медиаплеер для macOS, который многие пользователи воспринимают как часть операционной системы.
- Плеер является графическим фронтендом для mpv, поддерживает множество форматов, удобное управление с клавиатуры и гармонично вписывается в среду macOS.
- Обсуждаются возможности новой плагинной архитектуры на Lua/JS, которая позволяет создавать интерактивные дополнения, например, визуализации или веб-окна.
- Некоторые пользователи отмечают проблемы с воспроизведением контента через Online Media плагин и предпочитают использовать yt-dlp для загрузки видео.
- В сравнении с другими плеерами (VLC, Infuse) IINA хвалят за простоту и дизайн, но критикуют за некорректное управление цветом (HDR) и высокое энергопотребление в прошлом.
- Часть пользователей не видит compelling-причин переходить на IINA с встроенных плееров или VLC, так как те уже справляются с большинством задач.
- Infuse 8 упоминается как мощная альтернатива для экосистемы Apple из-за синхронизации по iCloud и работы с сетевыми ресурсами.
- Поднимается вопрос архитектурных компромиссов при создании плагинных систем: тесно связанные плагины против слабосвязанных out-of-process решений.
I’m Not a Robot 🔥 Горячее 💬 Длинная дискуссия
—
Комментарии (199)
- Пользователи делятся впечатлениями от прохождения уровней игры, отмечая креативность и юмор, но некоторые столкнулись с техническими сложностями или сдались на сложных этапах.
- Обсуждаются конкретные уровни: проблемы с точностью распознавания эмоций, сложности на мобильных устройствах, использование консольных команд для читерства и ироничный финал с сертификатом.
- Затрагиваются философские вопросы о природе человека и автоматизации, а также технические аспекты реализации игры, такие как локальное выполнение ML-моделей и обход CAPTCHA.
Shai-Hulud malware attack: Tinycolor and over 40 NPM packages compromised 🔥 Горячее 💬 Длинная дискуссия
Компрометация пакетов ctrl/tinycolor и 40+ других в NPM
Популярный пакет @ctrl/tinycolor с более чем 2 млн загрузок в неделю был скомпрометирован вместе с 40+ другими пакетами в результате сложной атаки на цепочку поставок. Вредоносное ПО самораспространяется по пакетам maintainer'ов, собирает учетные данные AWS/GCP/Azure с помощью TruffleHog и создает бэкдоры через GitHub Actions.
Технический анализ
Атака реализуется через многоступенчатую цепочку, использующую Node.js process.env для доступа к учетным данным. Основной элемент — файл bundle.js (~3.6 МБ), который выполняется асинхронно во время npm install.
Механизм самораспространения
Вредоносное ПО через функцию NpmModule.updatePackage запрашивает API реестра NPM для получения до 20 пакетов maintainer'а и принудительно публикует обновления, создавая каскадный эффект компрометации.
Сбор учетных данных
Используются инструменты вроде TruffleHog для сканирования файловой системы на наличие секретов. Целевые учетные данные включают:
- Токены доступа GitHub
- Ключи доступа AWS
- Учетные данные Google Cloud Platform
Комментарии (962)
- Пользователи выражают обеспокоенность невозможностью аудита всех зависимостей и их уязвимостью к атакам в npm.
- Критикуется архитектура npm, в частности выполнение postinstall-скриптов по умолчанию, в отличие от других менеджеров пакетов.
- Предлагаются решения: игнорирование скриптов в настройках, песочница (bubblewrap), использование подписей кода и каррированных пакетов.
- Указывается на системную проблему экосистемы JS: огромное количество мелких зависимостей и отсутствие сильной стандартной библиотеки.
- Обсуждается масштаб атаки (180+ пакетов) и её возможная связь с государственными акторами.
- Поднимается вопрос уязвимости других экосистем (PyPI) и необходимости обязательной 2FA и подписи артефактов.
- Высказываются радикальные предложения по замене npm или созданию безопасного форка/дистрибутива пакетов.
Why do we keep gravitating toward complexity? 💬 Длинная дискуссия
Разработчики часто тяготеют к сложности, хотя принцип KISS («будь проще») хорошо известен. Почему так происходит?
Маркетинг важнее простоты
Продать обычную ручку сложно, но если добавить ей множество функций — она станет «продаваемой». Так и в IT: простые инструменты вроде cat работают идеально, но маркетинг продвигает сложные аналоги с громкими названиями. Социальное доказательство и ощущение эксклюзивности заставляют нас воспринимать сложность как признак качества, хотя часто это просто иллюзия.
Что внутри «пирамид»?
Современные системы напоминают пирамиды: много слоёв, зависимостей и абстракций, но внутри может быть пустота. Сложность кричит «посмотри на меня!», а простота остаётся незаметной, пока не проявится её гениальность. В долгосрочной перспективе побеждает именно простота.
React против ванильного JavaScript
React навязывает множество концепций: рендеринг, хуки, состояния, маршрутизация. Отказ от него может сделать вас «аутсайдером», хотя ванильный JavaScript часто решает задачи эффективнее. Компании вкладывают миллионы в продвижение фреймворков, что усложняет выбор в пользу простых решений.
Глубинные причины любви к сложности
- Творческий соблазн: Создание сложных систем — интеллектуальный вызов, который приносит удовлетворение.
- Технический долг: Наследие старых проектов вынуждает добавлять новые слои вместо упрощения.
- Командная динамика: Разработчики добавляют абстракции для «универсальности», что усложняет систему.
- Давление инноваций: Конкуренция подталкивает к созданию сложных решений, чтобы выделиться.
Стройте с умом
Создавайте системы с чёткой целью и ценным содержимым, а не пустые лабиринты, которые усложнят жизнь тем, кто будет поддерживать код в будущем. Прежде чем писать сложную абстракцию, спросите себя: решаете ли вы реальную проблему или просто удовлетворяете своё эго?
Комментарии (152)
- Сложность часто возникает из-за добавления быстрых исправлений вместо переосмысления архитектуры с учетом новых требований.
- Простые решения требуют больше усилий для проектирования и поддержки, чем сложные, которые появляются быстрее.
- Реальность полна деталей, и простые решения редко охватывают всю сложность проблемы, что ведет к наращиванию сложности системы.
- Разработчики могут добавлять сложность для демонстрации навыков, интереса или ощущения достижения, что поощряется в индустрии.
- Долгоживущие кодобазы неизбежно накапливают сложность из-за постоянных изменений и адаптации к новым требованиям.
- Простота субъективна и требует глубокого понимания основ и дисциплины для достижения и поддержания.
- Бизнес-среда и отсутствие прямого контакта с пользователем могут способствовать выбору сложных решений вместо фокуса на ценности.
- Сложность иногда искусственно создается для обеспечения job security или из-за организационных проблем и политик.
- Эволюция технологий и библиотек часто следует за обобщением паттернов, что добавляет абстракции и сложности.
React is winning by default and slowing innovation 🔥 Горячее 💬 Длинная дискуссия
React победил по умолчанию — и это убивает фронтенд-инновации
React больше не выигрывает за счёт технических преимуществ. Сегодня он побеждает по умолчанию, что замедляет инновации во всей фронтенд-экосистеме.
Команды редко начинают с вопроса «Какие ограничения и какой инструмент подходит лучше?». Чаще звучит: «Давайте использовать React — все его знают». Это создаёт цикл, где архитектуру определяют сетевые эффекты, а не техническая целесообразность.
Между тем, фреймворки с реальными инновациями борются за внедрение. Svelte устраняет накладные расходы компиляцией, Solid предлагает детальную реактивность без виртуального DOM, Qwik обеспечивает мгновенный запуск через возобновляемость. Эти подходы часто превосходят модель React, но редко получают оценку, потому что React выбирают по умолчанию.
Проблема не в самом React, а в мышлении «React по умолчанию».
Потолок инноваций
Технические основы React объясняют современные трудности. Виртуальный DOM был умным решением для проблем 2013 года, но, как отметил Рич Харрис, он вводит издержки, которых можно избежать с помощью компиляторов.
Хуки решили проблемы классовых компонентов, но добавили сложности: массивы зависимостей, устаревшие замыкания, неправильное использование эффектов. Даже документация React призывает к сдерженности: «Вам может не понадобиться эффект». Серверные компоненты улучшают время до первого байта, но добавляют архитектурную сложность.
Компилятор React — умное решение для автоматизации useMemo/useCallback, но его существование сигнализирует: мы оптимизируем вокруг ограничений модели.
Альтернативы предлагают иные подходы: Runes в Svelte 5 упрощают реактивность на этапе компиляции, детальная реактивность Solid обновляет только изменённые части, возобновляемость Qwik устраняет традиционную гидратацию. Это не инкрементные улучшения React, а другие модели с иными пределами.
Инновации без внедрения не меняют результаты. Внедрение невозможно, когда выбор делается рефлекторно.
Технический долг, который мы несём
Выбор React по умолчанию часто означает runtime и затраты на согласование, которые мы больше не questioned. Даже когда он достаточно быстр, его потолок ниже, чем у моделей с компиляцией или детальной реактивностью. Время разработчиков тратится на управление перерисовками, зависимостями эффектов и границами гидратации вместо создания ценности.
Исследования производительности единодушны: JavaScript дорог на критическом пути.
Мы сосредоточили ментальные модели вокруг «React-паттернов» вместо основ веба, снижая переносимость навыков и увеличивая архитектурную инерцию.
Потеря не только в производительности, но и в упущенных возможностях, когда альтернативы не оцениваются. Например, бенчмарки показывают, что Solid в 2-3 раза быстрее React в сценариях с интенсивной реактивностью.
Фреймворки, которым не дают развиваться
Svelte: революция компилятора
Svelte переносит работу на этап компиляции: нет виртуального DOM, минимальный runtime. Компоненты становятся целевыми операциями DOM. Ментальная модель соответствует основам веба.
Но «недостаточно вакансий» искусственно сдерживает внедрение Svelte, несмотря на технические преимущества.
Комментарии (726)
- React побеждает благодаря композиции функций JavaScript, интуитивной модели и стабильности, а не только из-за сетевых эффектов.
- Веб-компоненты рассматриваются как путь к совместимости между фреймворками и снижению зависимости от экосистемы React.
- Многие разработчики ценят React за предсказуемость, лёгкость найма и богатую экосистему, что делает его безопасным выбором.
- Критики указывают на сложности React (хуки, зависимости, ререндеры) и чрезмерный boilerplate-код.
- Альтернативы вроде Svelte или Solid предлагают упрощённые модели и лучшую производительность, но проигрывают в распространённости.
- Инновации во фронтенде часто воспринимаются как «суета», ведущая к устареванию проектов и постоянным переписываниям.
- React доминирует частично из-за React Native, что позволяет использовать единую кодобазу для web и мобильных платформ.
- Браузеры и стандарты Web обвиняются в недостаточной скорости развития, что вынуждает полагаться на фреймворки.
- Стабильность и стандартизация ценятся выше постоянных изменений и «инноваций» в индустрии.
Denmark's Justice Minister calls encrypted messaging a false civil liberty 🔥 Горячее 💬 Длинная дискуссия
Боритесь с контролем чатов: «Министр юстиции Дании и главный архитектор…»
Для использования веб-приложения Mastodon включите JavaScript. Также можно попробовать нативные приложения Mastodon для вашей платформы.
Комментарии (222)
- Участники дискуссии единодушно отвергают позицию министра юстиции Дании, считая конфиденциальность и шифрование личных сообщений фундаментальным правом и гражданской свободой, защищенной как международными конвенциями, так и национальными конституциями.
- Предлагаемый закон (ChatControl) расценивается как тотальная система массовой слежки, которая нарушает приватность всех граждан, а не только подозреваемых.
- Многие отмечают лицемерие власти, которая хочет получить доступ к данным граждан, но оставляет неприкосновенной собственную переписку.
- Подчеркивается техническая и практическая несостоятельность запрета шифрования, который подорвет безопасность и доверие в цифровой сфере, включая финансовые операции.
- Участники считают, что подобные меры неэффективны для борьбы с преступностью, так как преступники найдут обходные пути, а страдают законопослушные граждане.
For Good First Issue – A repository of social impact and open source projects
Делай вклад в цифровые общественные блага
Помоги проектам, которые борются с климатом, голодом и прочими глобальными задачами. Ниже — готовые к первому PR репозитории.
| Проект | Язык | Направление |
|---|---|---|
| mautic | PHP | маркетинг-автоматизация |
| credebl | TypeScript | децентрализованная идентичность |
| avni-webapp | JavaScript | медицинские данные |
| the-turing-way | TeX | воспроизводимая наука |
| X-Road | Java | обмен данными между госорганами |
| OpenTermsArchive | JavaScript | прозрачность сервисов |
| OpenFn Lightning | Elixir | автоматизация workflow |
| android-fhir | Kotlin | мобильная медицина |
| casa | Ruby | волонтёрство для детей |
| ODK Collect | Kotlin | сбор данных в поле |
| cht-core | JavaScript | цифровое здравоохранение |
| policyengine-app | Jupyter | расчёт последствий политик |
| querido-diario | Python | открытые госгазеты |
| ODK Central | JavaScript | сервер для форм |
| decidim | Ruby | участие граждан |
Фильтр по языку и Целям устойчивого развития (SDG) на сайте.
Комментарии (14)
- Участники приветствуют инициативу списка проектов с «good first issue», но сомневаются в кураторстве: много проектов без активных задач, не все связаны с социальным влиянием.
- Предложено скрывать репозитории с 0 issues и добавлять метрики активности (коммиты, разработчики, возраст), как в Re-Decentralise.
- Новички спрашивают, считать ли правку опечаток «настоящим» вкладом; большинство советует упоминать, но честно указывать уровень участия.
Chat Control faces blocking minority in the EU 🔥 Горячее
JavaScript отключён
Включите его или смените браузер. Расширения, блокирующие трекинг, могут мешать.
Комментарии (112)
- Участники обсуждают, как лоббисты снова и снова выводят на голосование «Chat Control», пока не пройдёт, и предлагают ввести «экспоненциальный откат» или запрет на повторное внесение одного и того же.
- Сомневаются, что такое правило сработает: тексты закона легко слегка изменить, а определение «похожести» станет новым полем для манипуляций.
- Отмечают, что ЕС уже практикует «голосуй до нужного результата» (конституция, Лиссабон, Ницца).
- Подчёркивают: политики стремятся исключить себя из-под сканирования «по служебной тайне», а реальные преступники обойдут слежку.
- Считают, что единственный надёжный тормоз — отсутствие большинства в Совете, но Брюссель может давить через фонды и другие рычаги.
DOOMscrolling: The Game 🔥 Горячее
Doomscrolling: игра
Скроллинг как единственный способ управления.
Идея
Классический дум-скроллинг → браузерная игра, где всё, что нужно — листать вниз. Никаких стрелок и прыжков.
Попытка №1: провал
9 месяцев назад ни один LLM не смог связать «скролл вниз» с «фон движется вверх». Получилась пародия на игру. Забросил.
GPT-5 и победа
Через пару часов — рабочий прототип.
- Враги: 5 спрайтов, 2 кадра, как у Space Invaders.
- Механика: Galaga, но вертикально. Игрок движется вперёд-назад, монстры «привязаны» к полу.
Кофе-морнинги на каникулах
По часу утром:
- апгрейд оружия каждые 100 убитых;
- огненная стена подталкивает не стоять на месте;
- препятствия: кирпичи, паутина;
- 5 фонов, зелья здоровья, метка личного рекорда, пауза со статой.
Финальный штрих: новости
Появляются мемориальные плиты с заголовками NYT за сегодня. Не влияют на геймплей, только отвлекают.
Игра = самый сложный RSS-ридер в мире.
ИИ всё ещё тупит
Когда LLM не понимает, прерываю диалог и начинаю новый с тем же промптом — срабатывает.
Комментарии (92)
- Пользователи в восторге: человек без навыков кодинга собрал динамичную «дум-скролл»-игру, спросив ChatGPT сгенерировать всё.
- Механика: скроллинг = движение; враги и огонь идут снизу, игроку надо лутать апгрейды и убивать монстров.
- Впечатляет «лаборатория» со слайдерами для настройки спрайтов — пример Steve-Jobs-овского «конструктора калькулятора».
- Критика: нет инерции/чувствительности скролла, на больших экранах играть легче, можно «откатом» обмануть стену огня.
- Баг: одновременная смерть и 100-килл-бонус крашит игру.
- Общий вывод: простая, но свежая идея, показывающая, как LLM-инструменты открывают геймдев даже «не-программистам».
Show HN: Vicinae – A native, Raycast-compatible launcher for Linux
Vicinae — минималистичный лаунчер для ПК:
- нативный, быстрый, расширяемый
- Rust + Tauri
- плагины на JS/TS
- MIT
Комментарии (29)
- Пользователи в восторге: Vicinae — качественный лончер-аналог Raycast для Linux, лёгкий в установке и работе на i3, Hyprland и др.
- Основной плюс — совместимость с расширениями Raycast, но часть из них пока не работает (например, raindrop.io).
- Разработчик планирует улучшить поддержку расширений, добавить ресайз окна и порт под macOS ARM.
- Проект открыт к контрибуциям, но слияние с другим форком маловероятно из-за разных стеков.
I still love PHP and JavaScript (2022)
-
PHP и JS любят те, кто делает, а не спорит.
С ними легко найти людей, которые быстро понимают бизнес и уже многое запустили. -
Стереотипы устарели.
PHP8 ≠ PHP3, ES12 ≠ старый JS. NPM и Composer давно задали темп остальным экосистемам. -
Красота не главное.
Главное — скорость, деплой «залил и забыл», тонна готовых библиотек и простое масштабирование. PHP-режим CGI позволяет переписывать код по кусочкам без утечек памяти. -
Игра в «как красиво» внутри грязного языка — весёлая.
Когда язык не навязывает стиль, каждый найденный элегантный приём приносит удовольствие. -
Низкий порог = большое сообщество.
Через копипаст и тюнинг index.php школьник за выходные делает рабочий сайт. Такие языки не снобствуют и охотно принимают новичков. -
Хороший код зависит не от языка, а от:
- понимания продукта;
- тестов и стат-анализа;
- CI/CD и коммуникации в команде.
У PHP/JS сегодня: Psalm, PHPStan, ESLint, TypeScript, JetBrains-IDE — инструментов больше, чем у «серьёзных» языков.
-
Легаси — это не грязь, а деньги.
Рабочий продукт с кучей пользователей = возможность каждым коммитом улучшать жизнь людям уже сегодня.
Комментарии (70)
- PHP славится «shared nothing»-моделью: каждый запрос живёт изолированно и гарантированно умирает, устраняя утечки памяти и упрощая масштабирование.
- Современный PHP (8+) — это типизированный язык с Composer, Psalm, PSR-стандартами и активным сообществом; стереотипы 2000-х больше неактуальны.
- Большинство негатива идёт от унаследованного кода (WordPress, Magento, Drupal) и «skill-issue» разработчиков, а не от самого языка.
- Для простых внутренних инструментов, лендингов и «сайтов-в-один-файл» PHP остаётся идеальным выбором: дёшево, сервер есть у любого хостера, деплой — drag-and-drop.
- Если нужен фреймворк без Laravel/Drupal, смотрят на Symfony, ProcessWire или пишут на чистом PHP с композер-пакетами.
You too can run malware from NPM (I mean without consequences)
running-qix-malware
Репозиторий демонстрирует работу вируса QIX (1989) в эмуляторе DOS.
- Собранный DOS-бинарь запускается в браузере через эмулятор.
- Исходники на ассемблере и C, скрипты сборки.
- Инфицирует .COM-файлы, показывает бегущую линию.
- Безопасен: эмуляция изолирует вредоносный код.
Комментарии (101)
- Участники вспомнили про инцидент Jia Tan и пожаловались, что npm до сих пор не автоматически блокирует публикации с обфусцированным кодом и шестнадцатеричными именами.
- Предложены меры: предпубликационный сканер с «задержкой на проверку», 2FA-апрув каждого релиза, опциональный «verified»-бейдж и поддержка Yubikey.
- Сомнения в пользе LavaMoat: не спасает от DLL в lifecycle-скриптах, не работает с Webpack HMR, а изоляция может быть дорогой.
- Обсуждали lock-файлы: хэши в package-lock защищают от перезаписи версии, но теги git всё ещё можно подменить; иммутабельность npm-тарболлов считается основной защитой.
- Namespaces (@scope) в npm есть с 2016 г., но «красивые» безскоповые имена всё ещё популярны, поэтому переход идёт медленно.
No adblocker detected 🔥 Горячее 💬 Длинная дискуссия
- Реклама в интернете — зло: тратит время и уродует сайты.
- Поддержи автора напрямую: 1 $ приносит больше пользы, чем тысячи показов баннеров.
- На сайте выводится тонкое сообщение: «Adblock не обнаружен. Поставь uBlock Origin — сэкономишь трафик и нервы».
- Блок скрывается кнопкой «Закрыть» и больше не появляется (cookie notice-shown).
- Техника:
– в HTML встроен<div>с «адоподобными» классами и скриптnativeads.js;
– если div вырезан или скрипт заблокирован, сообщение не видно;
– стили показывают блок только при ≥75 em ширины и ≥30 em высоты;
– без JS сообщение не вставляется, без CSS просто не стилизуется. - DNS-блокировку не отследить, поэтому банер маленький и некликабелен вне основного контента.
Комментарии (275)
- Без блокировщиков рекламы веб выглядит как «лабиринт трекеров и баннеров»: большинство пользователей живут в этом каждый день.
- uBlock Origin называют едва ли не «лучшим антивирусом»; ФБР и CERN рекомендуют блокировщики как защиту от скама и малвари.
- Даже с адблоком сайты всё чаще «раскрывают» посетителей через identity-graph (IP, хэши устройств) и потом спамят e-mail.
- Часть участников считает блокировку «паразитизмом»: контент бесплатен только потому, что кто-то смотрит рекламу.
- Другие возражают: договор «контент ↔ реклама» давно нарушен — автозвук, трекинг, монополии Google/Meta, потребление трафика и батареи.
- Альтернатива — платить авторам напрямую, но пожертвования от 0,01 % читателей не покрывают хостинг, уж не говоря о зарплате.
Browser Fingerprint Detector
Детектор цифрового отпечатка
Узнай, какие данные о тебе собирают сайты. Проверь свою приватность за секунды.
- Собрать → экспорт результатов
- Бесплатно → без регистрации
Продукты
OSINT-платформа, AI-движок, API, Trace Agent, YARA, Toolbox
Открытые инструменты
Компания
О нас, блог, вакансии, пресса, FAQ, контакты
Юридика
Политика конфиденциальности, cookies, этика, DPA
Сертификаты
ENISA, AENOR, Parque Científico Alicante
Подписка
Принимаю DPA → подписаться
Комментарии (59)
- Пользователи сомневаются в точности теста: «100 % уникальность» выдают даже стоковые iPhone и Chrome с VPN.
- Критика методики: счёт просто суммирует собранные признаки, а не сравнивает с большой базой; мелкая выборка и отсутствие учёта стабильности делают результат условным.
- Парадокс приватности: сильно «закалённые» браузеры становятся слишком уникальными, а «бабушка на Chrome» вливается в толпу, но именно уникальных легче отследить.
- Рандомизация Firefox/LibreWolf даёт новый отпечаток каждый раз, но сами факты рандома тоже можно засечь и использовать как маркер.
- Нет общего решения: ни Brave, ни Vanadium, ни выключение JS не дают «нормального» уровня неотличимости; требуется либо государственное регулирование, либо полный отказ от широкого Web.
Stop writing CLI validation. Parse it right the first time
- "строка" – ищет фразу целиком, без учёта регистра
- from:ник – посты конкретного автора
- lang:код – фильтр по языку (en, ru…)
- #тег – по хэштегу
- условие условие – логическое И
- условие OR условие – логическое ИЛИ
- ( ) – группировка
Комментарии (102)
- Спор о «парсинге, а не валидации»: кто-то пишет собственные проверки, кто-то берёт готовые библиотеки (Zod, Clap, argparse, docopt, yargs и др.).
- Rust/PowerShell/argparse хвалят за строгие типы и понятные ошибки; JS/TS-рантайм критикуют за лишние зависимости.
- Проблема: как сообщить сразу ВСЕ ошибки, а не падать на первой; как выдавать человекочитаемые сообщения.
- «Непредставимые состояния» хороши в ядре программы, но на границе ввода нужны гибкие структуры и recovery.
- CLI ≠ API: парсим только синтаксис, доменные ограничения уносят глубже; иначе получаем перегруженный интерфейс.
Physically based rendering from first principles
Глава 1: Что такое свет?
Свет — это то, что позволяет видеть мир. Древние греки считали его огнём, исходящим из глаз; Декарт — волной, Ньютон — частицами-корпускулами. Современная квантовая электродинамика объясняет всё, но в графике достаточно геометрической оптики.
Электрическая сила
Заряд бывает положительным и отрицательным; одноимённые отталкиваются, разноимённые притягиваются. Сила описывается законом Кулона. Каждый заряд создаёт электрическое поле, которое можно показать линиями поля или цветовой картой напряжённости.
Специальная теория относительности и магнетизм
Движущийся заряд рядом с проводом с током в нашей системе счёта не испытывает силы. В его собственной системе он покоится, а положительные заряды провода движутся. Из-за релятивистского сокращения длины возникает избыток отрицательных зарядов — мы воспринимаем это как магнитное отталкивание.
Уравнения Максвелла
Третье уравнение (закон Фарадея): изменяющееся магнитное поле порождает электрическое поле — принцип генераторов.
Четвёртое (закон Ампера): ток создаёт магнитное поле — основа электромагнитов.
Взаимное порождение полей даёт самоподдерживающиеся электромагнитные волны, распространяющиеся со скоростью света.
Электромагнитное излучение
Это синхронные колебания электрического и магнитного полей.
- Амплитуда — яркость (число фотонов).
- Частота — энергия отдельного фотона; выше частота → короче волна и выше энергия.
Комментарии (56)
- Пользователи хвалят интерактивность и визуальные объяснения, но жалуются на проблемы с отображением в Firefox/Android.
- Автор отвечает, что всё написано на чистом JS/WebGL и выкладывает 8000-строчный исходник.
- Идёт спор о «first principles»: одни считают подход глубоким, другие — пугающе абстрактным и запутанным.
- Предложено добавить раздел о поляризации и использовать реальные BRDF-измерения для верификации моделей.
- Несколько человек делятся ссылками на похожие ресурсы и исследования по измерению материалов.
<template>: The Content Template element
- HTML: справка по элементам, глобальным атрибутам, форматам дат/времени, руководства по адаптивным изображениям, видео и аудио.
- CSS: справка по свойствам, селекторам, @-правилам, единицам измерения; гайды по блочной модели, анимациям, Flexbox, цветам; «поваренная книга» для колонок, центрирования, карточек.
- JavaScript: справка по встроенным объектам, операторам, функциям; гайды по управлению потоком, циклам, объектам, классам.
- Web APIs: File System, Fetch, Geolocation, DOM, Push, Service Worker; гайды по Web Animations, Fetch, History, Speech API, Web Workers.
- Другие технологии: Accessibility, HTTP, URI, WebAssembly, WebDriver, WebExtensions.
- Обучение: курс «Frontend-разработчик», основы HTML, CSS, JavaScript.
- Инструменты: Playground, HTTP Observatory, генераторы теней, радиусов, границ, палитра цветов.
Комментарии (65)
- Участники обсуждают, как использовать тег
<template>без фреймворков: он удобен для клонирования больших фрагментов, ускоряет рендер и снижает нагрузку по сравнению с React/Vue. - Недостаток — приходится вручную связывать данные и DOM; многие хотят единого формата «HTML+CSS+JS» для компонентов.
- Shopify, Salesforce, MedusaJS и Alpine.js уже применяют
<template>в продакшене, но спецификация HTML Modules пока не завершена.
Static sites enable a good time travel experience
Статические сайты = машина времени
Варун написал о геймификации блогов, и я вспомнил свои «бейджики» 2021 года. Сначала подумал, что скриншотов нет, но потом понял: сайт на Eleventy статичный, поэтому достаточно git checkout нужного коммита и eleventy serve, чтобы увидеть страницу в том же виде.
В отличие от WordPress или сборок, где посты тянутся из CMS только при деплое, у меня каждый коммит — полный снепшот. Путешествие во времени занимает две команды (если только я не забыл закоммитить).
Год назад я завёл GitHub Action, который ежемесячно делает скрин главной «на всякий случай», но теперь не переживаю: история дизайна всегда под рукой в git.
Если тема близка — пишите на juhamattisantala@gmail.com, буду рад обсудить.
Комментарии (40)
- Участники обсуждают, как лучше «путешествовать во времени» по старым версиям сайтов: Wayback Machine, Git-архивы, локальные бэкапы или собственные «музейные» режимы.
- Кто-то предпочитает чистый HTML/CSS без генераторов, чтобы минимизировать зависимости и упростить долгосрочное хранение.
- Поднимаются вопросы обратной совместимости JS/CSS и роли стандартов: насколько браузеры гарантируют, что сегодняшние сайты откроются через десятилетия.
- Упоминаются практические сложности: старые зависимости, версии Node, базы данных, билд-инструменты.
- Появляются идеи распределённого архивирования (плагины, GitHub Actions, клиентские кэши) и примеры «игровых» подходов к ведению блога.
Git Diagramming "The Weave"
Git-граф «плетения» Трампа
Трамп называет свою манеру речи «the weave»: он перескакивает между темами, а потом «все блестяще сводится воедино». Я решил визуализировать это как git-граф.
Использовал Mermaid.js, но горизонтальная схема не подошла, поэтому написал компонент <git-graph>.
Фрагмент из транскрипта совещания в Овальном кабинете:
%%{init: { 'theme': 'base' } }%%
gitGraph
commit id:"CBO: тарифы принесут $4 трлн"
branch radical-left
commit id:"радикальные левые признали Трампа правым"
checkout main
merge radical-left
commit id:"$4 трлн сократят дефицит"
branch stock-market
commit id:"рынок +1000 пунктов"
branch world-respect
commit id:"весь мир нас уважает"
branch fifa-event
commit id:"финал FIFA в Kennedy Center"
branch kennedy-center-remodel
commit id:"ремонт займёт год"
branch oval-office-remodel
commit id:"золото в Овальном кабинете"
branch painting-vault
commit id:"картины великих президентов из хранилища"
Каждая ветка — новая тема, cherry-pick — возврат к уже сказанному.
Комментарии (59)
- Участники обсуждают «ткацкий» стиль речи, когда тема раскрывается «ветвями», сливающимися лишь в финале.
- Предложены улучшения диаграмм: показывать название ветви рядом с «New Topic» и использовать Sankey- или top-to-bottom-режимы.
- Некоторые считают визуализацию забавной и полезной для анализа «словесного салата» политиков и бизнесменов.
- Подняты технические проблемы: сломанный рендеринг в iOS и Firefox, отсутствие тестов и дисклеймеров.
- Обсуждение быстро скатилось в политические споры: «хит-пьеса» против Трампа, сравнение с Обамой, обвинения в трусости и «сенильности».
University of Cambridge Cognitive Ability Test
Concerto Platform
IP: 52.159.247.66
Браузер: hn-distill/1.1
Если сообщение не исчезнет, попробуйте другой браузер.
Включите JavaScript и обновите страницу.
Комментарии (140)
- Пользователи обсуждают онлайн-тест ICAR-60: кто-то не понимает логику задач на фигуры и вращения кубиков, кто-то делится стратегиями (смотреть на трёх-лучевую фигуру).
- Многие жалуются на перегрузку сервера и сообщение «too many users».
- Поднимаются вопросы валидности: час на прохождение искажает выборку, тест требует знания английского, есть самоотбор и тренировочный эффект.
- Идёт спор о ценности IQ-измерений: одни считают их полезными для науки и соцпрограмм, другие — произвольным способом ранжирования людей.
- Некоторые делятся личным опытом: с возрастом кажется, что «острота» ума снизилась, но это может быть связано с нехваткой сна, практики или ростом обязанностей.
Show HN: Sosumi.ai – Convert Apple Developer docs to AI-readable Markdown
sosumi.ai — Apple-доки для ИИ
Замените developer.apple.com на sosumi.ai, и LLM получит Markdown вместо «включите JavaScript».
Пример:
https://sosumi.ai/documentation/swift/array
MCP
{ "mcpServers": { "sosumi": { "command": "npx", "args": ["-y", "mcp-remote", "https://sosumi.ai/mcp"] } } }
Ресурс: doc://swift/array
Инструмент: search(query) — поиск по документации.
Проект неофициальный, не копирует массово, кеширует 30 мин, соблюдает ToS Apple.
Комментарии (64)
- Проект Sosumi.ai превращает документацию Apple в «AI-дружественный» Markdown, потому что LLM плохо читают динамически-рендерящийся HTML.
- Некоторые считают, что «AI-readable» лишнее — достаточно просто «Markdown» для людей.
- Есть просьбы: локальный архив, поддержка других сайтов, easter-egg со звуком Sosumi.
- У Apple уже есть частично похожее решение, но оно скрыто в Xcode.
- Автор обещает выложить код в open-source после приборки.
A review of Nim 2: The good and bad with example code
Плюсы Nim 2
- Память: по умолчанию ORC/ARC (RAII, деструкторы, move/copy), а не трассирующий GC. Можно
--mm:noneили--mm:atomicArc. - Компилируется в C/C++/Obj-C/JS; выбираем компилятор (
gcc,nvcc, …). - Лёгкая интеграция:
{.importc.},{.importcpp.},{.importjs.},{.compile.}для сторонних файлов. - Метапрограммирование: макросы,
staticисполнение кода на этапе компиляции, генерация CUDA. - Краткость: мало шаблонного кода (чат на 70 строк).
- Производительность ≈ C/C++/Rust; поддержка SIMD, CUDA.
Минусы и подводные камни
- Генерируемый C/C++ код нечитаем — не цель проекта.
- Нет атомарных счётчиков в ORC по умолчанию (требуется флаг).
- Некоторые старые статьи/комментарии описывают Nim 1.x (GC по умолчанию).
- Синтаксис чувствителен к отступам и регистру (но это субъективно).
Мини-пример: простой key/value формат
import std/[tables, strutils]
type Config = object
host*: string
port*: int
proc loadConfig(path: string, T: typedesc): T =
let data = readFile(path).splitLines()
var kv = initTable[string, string]()
for line in data:
let parts = line.split('=')
if parts.len == 2:
kv[parts[0].strip()] = parts[1].strip()
result.host = kv.getOrDefault("host", "localhost")
result.port = parseInt(kv.getOrDefault("port", "8080"))
let cfg = loadConfig("app.conf", Config)
echo cfg.host, ":", cfg.port
Файл app.conf:
host = 0.0.0.0
port = 9000
Всё компилируется в один бинарник без GC-задержек.
Комментарии (51)
- Пользователи отмечают редкую, но полезную возможность Nim — определять собственные операторы.
- Хвалят макросы, интегрированные в систему типов и перегрузку, сравнивая язык с «статически типизированным Lisp».
- Критика: сложности с Windows (Nimble-зависимости тянут GCC, Defender блокирует бинарники) и неоднозначная «фантастическая» интеграция с C++.
- Обсуждают объём JS-артефактов: для мелких примеров — десятки килобайт, но без оптимизации могут быть мегабайты.
- Для WASM рекомендуют компилировать в C и прогонять через Emscripten, но стандартные JS-биндинги не работают.
- Вопросы IDE: есть nimsuggest и быстрая настройка для Neovim, но плагинов для JetBrains почти нет.
Sometimes CPU cores are odd
Всё ПО содержит баги; чем сложнее код, тем запутаннее ошибки. Однажды я столкнулся с «однострочным» фиксом, который спас пользователей от случайных отказов Anubis.
Как всё началось
Anubis — WAF, который проверяет, что клиент — настоящий браузер. Основной способ — proof-of-work: клиент считает хэши, ограничивая скорость подключения. Чтобы экран-заглушка исчезал быстрее, JS-код использует максимум ядер CPU.
Проблема
Firefox тормозит, если задействовать все ядра; оптимум — половина. В коде было:
threads = Math.max(navigator.hardwareConcurrency / 2, 1)
Все мои тестовые устройства (MacBook, Ryzen, iPhone, Steam Deck…) имели чётное количество ядер, поэтому navigator.hardwareConcurrency / 2 всегда получался целым. Но если устройство с нечётным числом ядер (например, 3), результат — 1.5. JavaScript-числа — это IEEE-754, и дробная часть приводила к багу «invalid response», потому что логика расчёта nonce рассчитана на целые.
Фикс
Округлил до ближайшего целого:
threads = Math.max(Math.floor(navigator.hardwareConcurrency / 2), 1)
Одна строчка — и исчезли случайные отказы на нечётных CPU.
Комментарии (109)
- Разработчики Anubis не учли, что бывают процессоры с нечётным числом ядер (3, 9 и т.д.), из-за чего проверка «кол-во ядер = степень двойки» ломается.
- Пользователи жалуются: на телефонах с 9 ядрами (S24+) тест висит и жрёт батарею, а без JS сайты работают быстрее.
- Часть комментаторов считает PoW-валидацию бесполезной: боты всё равно запускают JS, а легитимные пользователи платят тем же временем/энергией.
- Предлагают отказаться от PoW в пользу «Proof of React» или просто убрать жёсткую привязку к числу ядер.
- Некоторые отключают JS и cookies по умолчанию и обходят Anubis, но всё чаще просто уходят с сайтов.
Fuck up my site – Turn any website into beautiful chaos 🔥 Горячее
FuckUpMySite — преврати любой сайт в хаос.
- Деструкция: 0 %
- Лозунг: fuckfuckfuckfuckupupupupmymymymysitesitesitesite
- Девиз: «Некоторые просто хотят смотреть, как горит веб».
Попробуй на: Sentry.io, Hacker News, Apple, Stack Overflow
Кнопка: «FUCK THIS SITE UP»
😈 Настройки хаоса
(3 из 6 активны)
- 🔥 Пылающий курсор — курсор поджигает страницу
- 🤪 Comic Sans всё — весь текст Comic Sans
- 👻 Фальшивые курсоры — множество поддельных теней
- 🪰 Назойливая муха — жужжит по экрану
- 🏃 Убегающие кнопки — прячутся от мыши
- 🔨 Попап-лопатка — ложные окна, которые нужно закрывать
Не все сайты дружат с хаосом. Нашёл баг? Напиши в Twitter.
Комментарии (94)
- Участники обсуждают сайт-шутку, который «ломает» любую страницу: Comic Sans, ползающие жуки, огонь и т.д.
- Браузеры (Chrome, Firefox, Safari) блокируют его как «опасный», что вызывает смех — предупреждение идеально вписывается в дух проекта.
- Некоторые сравнивают его с Katamari Hack, Desktop Destroyer, netdisaster и старыми оверлеями 90-х.
- Работает не везде: падает на Whitehouse.gov, opennet.ru, сайтах с Anubis, а также на самом себе.
- Люди делятся ссылками на «испорченные» версии Fox News, Apple и др.; кто-то просит npm-пакет для розыгрыша.
Pong Clock
Pong Clock — ретро-хронометр в стиле Pong, адаптирован под мобильные экраны 4:3 с высокой чёткостью.
Поддержать проект можно через PayPal: £2–£10 или любая сумма в GBP, EUR, USD, AUD, CAD, JPY, NZD, CHF, SEK, NOK.
Для работы часов необходим JavaScript.
Комментарии (26)
- Пользователи в восторге от идеи «Pong-clock», но хотят точно 1 секунду между ударами.
- Кто-то фантазирует, что за ракетками сидят «хранители времени», а промах ускоряет жизнь на Земле.
- Некоторые жалуются: промахи выглядят ненатурально (ракетка просто отъезжает вверх), и предлагают сделать их правдоподобнее.
- Дали консольный «чит-код» для форс-промаха и скрипт, который ускоряет мяч до одного отскока в секунду.
- Участники делятся ссылками на тематическую музыку и готовые скринсейверы, а один собирается запустить проект на старом телевизоре через Raspberry Pi.
Optimising for maintainability – Gleam in production at Strand
Задача
Лондонское агентство Strand ведёт сотни маркетинг-проектов в год. Финансовый учёт раньше велся вручную через таблицы. В 2020 г. команда из трёх разработчиков запустила прототип финансовой системы; он быстро стал критически важным, и потребовалось обеспечить надёжность и простоту поддержки при минимальных ресурсах.
Решение
Strand выбрал язык Gleam на платформе BEAM:
- Безопасность: чистый код не падает; сбои внешних сервисов изолируются лёгкими процессами.
- Практичность: язык мал, однозначен, осваивается за день; доступны 40 лет библиотек Erlang/Elixir.
- Опыт разработки: единый пакет с форматтером, автодополнением и понятными ошибками; сборка мгновенная.
Система обрабатывает курсы валют, синхронизирует данные с внешним ПО и продолжает расти без роста технического долга.
Комментарии (20)
- Вероятно, языки вроде Gleam выиграют у ИИ благодаря строгой типизации и быстрой обратной связи.
- Некоторые новички застревают в «абстракционном аду» и советуют сначала освоить Erlang/Elixir.
- Производственные истории успеха Gleam на BEAM вдохновляют.
- Однофайловые исполняемые файлы можно собрать через компиляцию в JavaScript + Node SEA или Burrito, но полноценный VM-free релиз пока нет.
- Качество примеров и стабильность языка становятся важнее их количества для LLM.
- Чистые, референциально прозрачные языки удобны ИИ для параллельного тестирования блоков кода.
Show HN: I made an Animal Crossing style letter editor
Генератор писем для Animal Crossing
Создаёт автоматические письма жителям.
- Выбираете жителя → тему (подарок, благодарность, приглашение).
- Генератор подставляет имя, стиль речи и эмодзи-иконки.
- Можно добавить предмет из инвентаря: письмо придёт с вложением.
- Поддерживаются шаблоны на русском, английском, японском.
Комментарии (27)
- Пользователи в восторге от генератора писем в стиле Animal Crossing и делятся тёплыми историями о том, как отправили письма близким.
- IdreesInc удивлён внезапным наплывом сообщений и объясняет, что все «бутылочные» послания модерируются вручную через AWS.
- Найдены мелкие баги: теряются символы перевода строки при сжатии в ссылку, а слово stationary неправильно написано вместо stationery.
- Некоторые советуют сменить название и убрать «Tom Nook», чтобы избежать проблем с правообладателями.
- Появились ссылки на похожие инструменты: Death Generator и библиотека animalese для озвучки.
Nx compromised: malware uses Claude code CLI to explore the filesystem 🔥 Горячее 💬 Длинная дискуссия
Критическая уязвимость в NX
NX (Nrwl) скомпрометирован: злоумышленники внедрили вредоносный код, крадущий кошельки и учётные данные.
- Что случилось: в пакетах
@nx/nx-linux-x64-gnu,@nx/nx-linux-x64-musl,@nx/nx-win32-x64-msvcобнаружен backdoor. - Как работает: при установке пакета запускается скрипт, который крадёт файлы
.env,wallet.dat,id_rsaи отправляет их на сервер злоумышленников. - Кто под угрозой: все, кто установил заражённые версии с 2024-06-01 по 2024-06-05.
- Что делать:
- Проверить версию NX:
nx --version. - Обновиться до последней версии (≥19.1.1).
- Проверить проект на наличие подозрительных скриптов в
node_modules/.bin. - Сменить все пароли и ключи, хранившиеся в проекте.
- Проверить версию NX:
Semgrep уже выпустил правило для обнаружения вредоносного кода:
semgrep --config=auto .
Комментарии (242)
- Компрометация npm-токена позволила злоумышленнику встроить вредоносный post-install-скрипт в популярные пакеты Nx.
- Скрипт проверяет наличие Claude Code / Gemini CLI и использует LLM для поиска секретов, обходя статический анализ.
- Участники советуют отключать npm-скрипты (
ignore-scripts true), использовать pnpm/bun, изолировать установку в контейнеры/VM и минимизировать зависимости. - Подчёркивается, что AI-агенты, запускаемые без песочницы, становятся мощным вектором атаки.
The GitHub website is slow on Safari 🔥 Горячее 💬 Длинная дискуссия
Проблема: GitHub в Safari работает крайне медленно.
Описание: Страницы грузятся по 5–10 сек, анимации подвисают, прокрутка «рыхлая». В Chrome и Firefox всё нормально.
Версии:
- Safari 17.5 (macOS 14.5)
- Safari 16.6 (macOS 13.6) – та же картина
Что пробовали:
- Очистить кэш и куки
- Отключить все расширения
- Переключить DNS (Cloudflare, Google)
- Сменить сеть (домашний Wi-Fi, мобильный интернет)
- Включить/выключить «Разработка → Использовать WebKit Nightly»
Результат: ничего не помогло.
Симптомы:
- В Activity Monitor процесс «Safari Web Content» грузит CPU до 100 % при открытии любой страницы GitHub.
- В инструментах разработчика видно, что 80 % времени уходит на «Rendering».
Временное решение:
- Переключиться на Chrome/Firefox.
Просьба: Проверьте, не сломали ли вы что-то в CSS/JS для WebKit.
Комментарии (316)
- GitHub стал критически медленным: Safari и Firefox тормозят даже на мощных М-системах, а большие PR (>1000 файлов) почти не открываются.
- Пользователи связывают падение производительности с переходом на React/SPA после покупки Microsoft и отказом от старого SSR.
- Предлагают мигрировать на Forgejo, Codeberg, SourceHut или возвращаться к простому HTML/CSS.
- Вопрошают, как в крупной компании могут пропустить такую регрессию и почему тесты не ловят разницу между Chrome и Safari.
- Ситуация повторяется и на других сайтах (Jira, Stripe, GCP), вызывая разговоры о «блоте» современных веб-приложений.
Malicious versions of Nx and some supporting plugins were published 🔥 Горячее 💬 Длинная дискуссия
Суть проблемы
В npm-реестр попали вредоносные версии пакетов Nx и связанных плагинов. Злоумышленники использовали временный доступ к npm-аккаунту @nxscope и опубликовали поддельные версии 19.8.0–19.8.2.
Затронутые пакеты
nx@nx/angular,@nx/cypress,@nx/detox,@nx/devkit,@nx/esbuild,@nx/eslint-plugin,@nx/expo,@nx/express,@nx/jest,@nx/js,@nx/nest,@nx/next,@nx/node,@nx/playwright,@nx/plugin,@nx/react,@nx/rollup,@nx/storybook,@nx/vite,@nx/web,@nx/webpack,@nx/workspace
Что делать
- Удалить вредоносные версии.
- Установить официальные 19.8.3 или выше.
- Проверить lock-файлы и CI на наличие подозрительных версий.
Комментарии (421)
- Уязвимость в пакетах Nx: токен npm скомпрометирован, злоумышленники внедрили вредоносный код через post-install скрипты.
- Малварь ищет Claude Code / Gemini CLI и использует их как «живые» инструменты для поиска криптокошельков, ключей и других секретов.
- Участники советуют отключать npm-скрипты (
ignore-scripts true), использовать Bun (по умолчанию не запускает скрипты), Verdaccio для вендоринга и инструмент vet для сканирования. - Рекомендуют разрабатывать в изолированных контейнерах/VM (cubbi, bubblewrap, firejail) и пересматривать каждую зависимость вместо «npm install наугад».
- Основной вывод: современные цепочки поставок и AI-агенты создают новый вектор атак «prompt-as-malware», а операционные системы всё ещё позволяют приложениям свободно читать весь диск.
macOS dotfiles should not go in –/Library/Application Support 💬 Длинная дискуссия
CLI-утилитам не место в ~/Library/Application Support
Популярные библиотеки (Python platformdirs, JS env-paths, Rust dirs, Go adrg/xdg) по умолчанию кладут конфиги в ~/Library/Application Support, но это каталог для GUI-приложений. Пользователи ожидают увидеть настройки CLI-программ в ~/.config, как Git, Vim, Tmux и сотни других. Это ожидание закреплено стандартом XDG и принципом «наименьшего удивления».
Почему это важно
- Неожиданное расположение ломает привычки и усложняет версионирование.
- Даже менеджеры dotfiles (chezmoi, dotbot, yadm, rcm, GNU Stow) игнорируют
~/Library/Application Support, что подтверждает: сообщество считает~/.configединственным разумным местом для конфигов CLI-утилит на macOS.
Комментарии (152)
- Автор утверждает, что CLI-утилиты macOS должны хранить конфиги в ~/.config по XDG, но участники показывают: ни одна поставляемая с macOS утилита этого не делает.
- Большинство считает XDG спецификацией для Linux/Unix-сред и не видят оснований навязывать её macOS, у которой есть собственные места: ~/Library/Preferences и ~/Library/Application Support.
- Разработчики CLI-инструментов, портированных с Linux, действительно часто используют ~/.config, что вызывает у местных пользователей ощущение «плохого порта».
- Предлагаются компромиссы: использовать XDG-переменные, если они заданы, или делать симлинки между ~/.config и ~/Library/Application Support.
- В Rust-экосистеме крейт dirs-rs игнорирует XDG на macOS; участники обсуждают создание форка, который бы следовал спецификации.
Meta just suspended the Facebook account of Neal Stephenson
JavaScript отключён.
Включите его или перейдите на поддерживаемый браузер. Список браузеров — в Справке.
Ошибка?
Попробуйте ещё раз.
Расширения для приватности могут мешать — отключите их.
Комментарии (66)
- Meta заблокировал аккаунт самого Нила Стивенсона «за выдачу себя за знаменитость» — автора термина «метавселенная», на который компания даже переименовалась.
- Пользователи иронизируют: киберпанк-дистопия началась с того, что её создатели не прочитали собственный первоисточник.
- Масса людей делится похожими историями: без объяснений блокируют за борьбу с расизмом, раздачу строительного леса или просто за скриншот твита; апелляции игнорируются.
- Платформа одновременно требует подлинности и наказывает за неё, а живой саппорт практически недоступен даже для рекламодателей с миллионными бюджетами.
- Итог: Meta выглядит как бездушный алгоритмический конвейер, где случайные блокировки стали нормой, а пользователи вынуждены мириться или уходить.
A small change to improve browsers for keyboard navigation
Нажмите ' в Firefox — появится быстрый поиск по ссылкам. Начните печатать, нужная ссылка подсветится, Enter — и вы по ней переходите.
Проблема: современные сайты вместо ссылок используют кнопки и div’ы. Обычный поиск (/ или Ctrl+F) их найдёт, но Enter после закрытия панели поиска ничего не делает.
Решение: крошечное расширение Click on Selection with Enter. Оно вешает обработчик keydown на Enter и «кликает» по элементу, в котором находится текущее выделение.
addEventListener('keydown', e => {
if (e.key !== 'Enter' || e.shiftKey) return;
const el = getSelection()?.anchorNode?.parentElement;
if (!el) return;
el.click();
getSelection()?.removeAllRanges();
});
Получаем полноценную навигацию с клавиатуры без мыши.
Комментарии (58)
- Участники активно делятся расширениями для навигации без мыши: Vimium, Vimium C, Surfingkeys, Tridactyl, Qutebrowser и ShortCat.
- Подчёркиваются проблемы стандартной клавиатурной прокрутки: полосы прокрутки скрывают контент, а PageUp/PageDown и стрелки ведут себя непредсказуемо.
- Предлагаются «хаки» без расширений: Ctrl+F → Esc → Enter для клика по найденной ссылке в Firefox.
- Упоминаются специализированные инструменты вроде leopard links, BrowseCut, FocusToScroll и собственные микро-расширения.
- Сетуют на то, что большинство сайтов всё чаще перехватывают быстрый поиск и используют кастомные элементы вместо обычных кнопок и ссылок.
Make any site multiplayer in a few lines. Serverless WebRTC matchmaking
Trystero — безсерверный WebRTC-матчмейкинг.
Добавь мультиплеер в пару строк.
Прямо сейчас все на этой странице соединяются напрямую и синхронизируют курсоры и клики.
Поддерживаются BitTorrent, Nostr, MQTT, IPFS, Supabase, Firebase.
Пример:
import {joinRoom} from 'trystero'
const room = joinRoom({appId: 'trystero-lounge'}, '101')
room.onPeerJoin(addCursor)
room.onPeerLeave(removeCursor)
const [sendMove, getMove] = room.makeAction('mouseMove')
const [sendClick, getClick] = room.makeAction('click')
window.addEventListener('mousemove', e => sendMove([e.clientX, e.clientY]))
window.addEventListener('click', () => sendClick(randomFruit()))
getMove(([x, y], id) => setCursorPosition(id, x, y))
getClick((fruit, id) => dropFruitFrom(id, fruit))
Также доступны аудио/видео-потоки и файлы.
Комментарии (59)
- Демо-страница Trystero вызвала восторг: «круто», «весело», «отличный API», но подчёркнули, что это не «serverless» — просто чужие серверы для SDP-сигналинга.
- Вопросы масштабируемости: p2p-видео комнаты выше 4-8 человек требуют SFU/TURN-серверов, иначе падает кодировка и сеть.
- Safari и Firefox жалуются на лаги, зависания и DOMException при множестве PeerConnection.
- Сравнение с PeerJS: тот использует один центральный сервер, Trystero — гибкий мульти-сигналинг.
- Подняли юридические риски: в UK и штате Mississippi такой «социальный» сайт обязывает собирать ID пользователей.
Show HN: I Built a XSLT Blog Framework
- Сделал блог-фреймворк на XSLT: демо, код.
- Зачем? Для себя. После пары «вайб-промптов» понял, что 20-летний стандарт покрывает всё, что надо.
- Хочу: писать чистый HTML, без WYSIWYG и Markdown; RSS «из коробки»; единый шаблон на все посты; немного JS для картинок и тем.
- XSLT = один файл-шаблон, XML-контент. Браузер сам превращает XML в HTML. RSS тоже XML, поэтому тот же индекс используется и для ленты.
- Публикация: создал пост, добавил в
index.xml, залил — всё. Без сборок и бэкенда.
Комментарии (45)
- Участники вспомнили XSLT как способ превращать XML в HTML прямо в браузере, но большинство считают технологию устаревшей и медленной.
- Предложено заменить RSS на Atom из-за более чистого формата дат и лучшей поддержки.
- Некоторые используют XSLT на сервере (PHP, SaxonJS), где он работает быстро и безопасно.
- Браузеры удаляют XSLT из-за рисков безопасности и низкого спроса; IBM предложила свой JIT-движок, но его вряд ли примут.
- SEO и кэширование вызывают сомнения: динамически собранные страницы могут быть плохо проиндексированы.
Comet AI browser can get prompt injected from any site, drain your bank account 🔥 Горячее 💬 Длинная дискуссия
JavaScript отключён.
Включите его или перейдите в поддерживаемый браузер. Список браузеров — в Справке.
Что-то пошло не так.
Попробуйте ещё раз.
⚠️ Расширения, блокирующие трекинг, могут мешать работе сайта. Отключите их и обновите страницу.
Комментарии (184)
- Участники считают, что давать LLM-агенту полный доступ к браузеру — это «смертельный трифекта»: чтение всех вкладок, кук и паролей.
- Основной риск — prompt-injection: любой сайт может внедрить команду, и агент выполнит её, потому что «каждое чтение — это запись в контекст».
- Люди сравнивают это с тем, что Microsoft делала скриншоты, но теперь молчат, когда AI получает plaintext-доступ к банковским данным.
- Единственный «безопасный» сценарий — код в git, где изменения легко откатить; всё остальное (покупки, банкинг, e-mail) считается безумным.
- Итог: без изоляции, sandbox и чёткого разграничения «что можно» агенты становятся идеальным вектором атак, а компании, их выпускающие, — объектом для судебных исков.
SmallJS: Smalltalk-80 that compiles to JavaScript
SmallJS — свободная реализация Smalltalk-80, компилирующаяся в JavaScript для браузеров и Node.js.
- v1.7 уже доступна (GitHub).
- Работа ведётся в файлах, а не образах; отлично сочетается с VS Code (подсветка, отладка).
- Используются привычные JS-имена классов и методов; в комплекте обёртки для DOM, Express, БД, потоков.
Быстрый старт — примеры проектов и Todo-приложение.
Хотите помочь? Пишите на info@small-js.org.
Комментарии (34)
- SmallJS вызвал всплеск интереса; автор @Smalltalker-80 откликается на вопросы.
- Проект файл-ориентирован, без образа; VSCode вместо браузерной IDE.
- flavio81 и wild_egg сожалеют о потере «живого» Smalltalk-опыта и сложностях синхронизации образов в Lisp.
- Playground SmallJS компилирует выражения прямо в браузере, но полноценной live-среды нет.
- Упомянуты Amber (застой), Pharo (монолитная VM) и Chrome Workspace для хот-релоада.
A visual introduction to big O notation 🔥 Горячее 💬 Длинная дискуссия
Big O — способ описать, как время работы функции растёт с ростом входных данных, без привязки к конкретным секундам.
Рассмотрим 4 основные категории:
O(n) — линейное время
function sum(n) {
let total = 0;
for (let i = 1; i <= n; i++) total += i;
return total;
}
sum(1e9)≈ 1 сsum(2e9)≈ 2 с
Время пропорциональноn.
O(1) — константное время
function sum(n) {
return (n * (n + 1)) / 2;
}
sum(1e9)иsum(100e9)выполняются почти мгновенно.
Время не зависит отn.
Ключевые идеи
- O = «order of growth»; описывает рост, а не абсолютное время.
- O(1) ≠ «быстро», а «не растёт с размером входа».
- При достаточно большом
nO(1) всегда обгонит O(n).
Комментарии (170)
- Обсуждение статьи о нотации Big O разделилось на «лайтовое» восхищение визуализациями и «экспертные» споры о точности определений.
- Новички признаются, что статья впервые открыла им глаза на сложность алгоритмов, а ветераны IT спорят, что за 40 лет ни разу не пригодилась.
- Критика сводится к тому, что автор описывает «поп-культурный» вариант Big O, путая его с Θ-нотацией и worst-case.
- Практики напоминают: на реальном железе константы, кэш и NUMA могут перечеркнуть асимптотику, а O(n²) при малых n часто быстрее «константного» хэша.
- Люди делятся шпаргалками (bigocheatsheet.com, visualgo.net) и просят ещё интерактивных уроков.
Romhack.ing's Internet Archive Mirror No Longer Available
Для работы приложения включите JavaScript.
Перейдите по ссылке на HTML-версию; после клика должно произойти перенаправление.
Если этого не случилось, браузер устарел или игнорирует заголовки no-cache.
Агрессивное кеширование (например, в текстовом браузере Links) может мешать.
Отключите кеш, несколько раз обновите страницу или обратитесь к разработчикам браузера.
Комментарии (25)
- Архив Internet Archive (IA) временно убрал файлы ROM-хаков из-за ложных срабатываний антивирусов, а не по просьбе правообладателей.
- Куратор IA Джейсон Скотт предложил писать ему напрямую при подобных проблемах.
- Участники удивлены: IA годами хранит «чистые» нелицензионные ROM-ы без жалоб, а патчи вдруг заблокировали.
- Обсуждают, помогут ли шифрование или пароль на архивы — скорее нет, антивирусы реагируют и на защищённые zip.
- Упоминается, что RomHacking.net чуть не закрылся в 2024-м, но продолжает работать, а RomHack.ing стал его «духовным преемником».
Libre – An anonymous social experiment without likes, followers, or ads
- LIBRE — свободное пространство без границ.
- Языки: español, english.
- Символы: 🌍🌌📜🚀❤️ — путь к свободе.
- Поддержка: ko-fi.com/libreantisocial.
- Контакт: libreantisocial@gmail.com.
- © 2025 Libre
Комментарии (118)
- Проект Libre — анонимная доска без лайков, подписчиков и модерации — за час превратился в «4chan без фильтров»: расизм, нацизм, порно, XSS-уязвимости и сломанные кнопки «Report».
- Участники сходятся: радикальная анонимность без последствий и инструментов модерации неминуемо приводит к захвату платформы троллями и психопатами.
- Некоторые находят эксперимент интересным как напоминание о «раннем интернете», но большинство предрекает итог «вот почему у нас нет хороших вещей».
- Критикуют и техническую реализацию: отсутствие санитизации HTML, поломка при выключенном JS, пустые ToS и неработающие импорты ID.
Should the web platform adopt XSLT 3.0?
Кратко: стандартизировать в браузерах XSLT 3.0 нецелесообразно.
Технология мало используется, реализация сложна, а современные подходы (JS-шаблонизаторы, Web Components, SSR) решают те же задачи быстрее и проще.
Комментарии (68)
- Пользователи мечтают о «навсегда-статическом» сайте без обновлений зависимостей; кто-то до сих пор использует PHP-include, кто-то — <template>+JS.
- Появилась фантазия «а вдруг браузеры вернут XSLT 3.0»; сторонники называют это разделением данных и представления, скептики — «громоздким XML-гипертекстом».
- Поддержка XSLT в браузерах всё ещё есть, но фактически мертва: Google убирает упоминания из спецификаций, а правительственные сайты жалуются на поломки.
- Основные претензии к XML/XSLT: чрезмерная многословность, сложность ручного редактирования, жёсткая типизация и «всегда есть пять способов записать то же самое».
- JSON и современные SSR-шаблонизаторы оказались проще и быстрее, поэтому даже ностальгирующие разработчики признают: «красивый, но неудобный» стандарт проиграл конкуренцию сетевым эффектам и эргономике.
It’s not wrong that "\u{1F926}\u{1F3FC}\u200D\u2642\uFE0F".length == 7 (2019) 💬 Длинная дискуссия
В JavaScript "🤦🏼♂️".length == 7 — не ошибка, а результат подсчёта UTF-16 кодовых единиц.
Эмодзи состоит из 5 скалярных значений Unicode, но в UTF-16 они занимают 7 code units:
- 🤦 U+1F926 → 2
- 🏼 U+1F3FC → 2
- ZWJ U+200D → 1
- ♂ U+2642 → 1
- VAR-16 U+FE0F → 1
Итого 7 — именно это и возвращает .length.
Другие языки считают по-своему:
- Python 3 →
len("🤦🏼♂️") == 5(кодовые точки, но допускает суррогаты). - Rust →
"🤦🏼♂️".len() == 17(байты UTF-8). - Swift →
"🤦🏼♂️".count == 1(расширенный графем-кластер).
Каждый подход отвечает на свой вопрос: «сколько code units / bytes / графем». Ни один не универсален; выбор зависит от задачи.
Комментарии (233)
- Обсуждение вокруг статьи показало, что «длина строки» не имеет единого определения: бывают байты, UTF-16/UTF-32 код-юниты, скалярные значения Unicode и расширенные графем-кластеры.
- Пользователи жалуются, что разные языки и API возвращают разные числа для одного и того же эмодзи, что ломает UI-ограничения, индексы БД и обработку текста.
- Часть участников считает, что нужно явно различать «длину для хранения», «длину для отображения» и «длину для человека»; другие мечтают вернуться к чистому ASCII.
- Примеры кода на Java, Python, Raku и JS показывают, как получить каждый из вариантов длины, но подчеркивают отсутствие общего стандарта.
- Итог: «length» — слишком расплывчатое слово; без контекста использования любое его значение может оказаться не тем, что действительно нужно.
The Core of Rust
Rust — это язык с жёсткой внутренней связностью.
Он не сложен из-за плохой документации, а потому что его концепты переплетены: замыкания, трейты, заимствование, Send/Sync, итераторы и прочие вещи нужны сразу. Поняв их, вы получаете мощный и последовательный инструмент.
Мини-пример.
20 строк кода на Rust, отслеживающие изменения файлов:
use notify::{Watcher, RecursiveMode};
fn main() -> Result<(), notify::Error> {
let mut w = notify::recommended_watcher(|r| {
if let Ok(e) = r {
println!("{:?} {:?}", e.kind, e.paths);
}
})?;
["pages", "templates", "static"].iter()
.try_for_each(|p| w.watch(p.into(), RecursiveMode::Recursive))?;
loop { std::thread::park(); }
}
Даже здесь нужно знать: Result, замыкания, итераторы, трейты Display, 'static, Send.
На JavaScript то же заняло бы 5 строк и не потребовало бы ни трейтов, ни заимствований.
Вывод.
Внутри Rust прячется «меньший, чище» язык с ясным видением: безопасность без сборщика мусора, абстракции без потерь, композиция через трейты. Этот язык появляется, когда все части складываются в единую картину.
Комментарии (108)
- JS-пример из поста содержит несколько багов (null-файл, for-in вместо for-of), которые TypeScript не всегда ловит.
- Автору ставят в вину, что он «забыл» упомянуть async/await, Promise, модули и прочие скрытые концепции JS.
- Комментаторы спорят, можно ли выкинуть из Rust «половину» фич и остаться при этом «малым и чистым»; большинство считает, что нет.
- Многие советуют новичкам не начинать с Rust: компилятор будет целыми днями выдавать ошибки, прежде чем программа запустится.
- Несколько человек упоминают Gleam, Zig и Austral как «упрощённые» альтернативы, но подчёркивают, что это уже другие языки.
Show HN: Using Common Lisp from Inside the Browser
Web Embeddable Common Lisp (WECL) — запуск Common Lisp в браузере через WebAssembly.
Проект экспериментальный; API нестабильны, баг-репорты не принимаются.
Исходники: fossil.turtleware.eu/wecl.
Быстрый старт
Подключите boot.js и wecl.js, пишите код в <script type="text/common-lisp">.
Пример считает обратный отсчёт и выводит «BOOM!».
Демо: easy.html | easy.lisp
JS-FFI
Набор макросов для вызова JavaScript из Lisp:
| макрос | назначение |
|---|---|
define-js-variable |
переменная, выражение подставляется каждый раз |
define-js-object |
объект, сохраняется в хранилище |
define-js-function |
функция |
define-js-method |
метод объекта |
define-js-getter/setter/accessor |
чтение/запись поля |
define-js-script |
шаблон JS-выражения |
define-js-callback |
Lisp-функция, вызываемая из JS |
lambda-js-callback |
анонимный callback |
Типы аргументов: :object, :js-ref, :fixnum, :symbol, :string, :null.
Emacs-интеграция
LIME/SLUG позволяет REPL и отладку прямо из Emacs.
Инъекция в любой сайт
Загрузка WECL в произвольную страницу через bookmarklet или расширение.
Ограничения
- Размер wasm-модуля ≈ 10 МБ (кешируется).
- Нет потоков, FFI неполный, производительность средняя.
Финансирование
Разработка поддерживается подписчиками Patreon.
Комментарии (24)
- Обсуждение началось с альтернативной истории: если бы JS изначально был похож на Lisp, возможно, функциональное программирование стало бы мейнстримом раньше.
- Участники отмечают, что WebAssembly и Gambit-JS уже позволяют писать на Scheme/Common Lisp в браузере, улучшая DX и переиспользование кода.
- Некоторые сомневаются, что Lisp автоматически «функциональнее» JS, и подчеркивают, что императивный стиль часто естественнее.
- Поднимаются риски: рост размера рантайма, проблемы на медленных каналах и возможное доминирование Microsoft, если бы IE/VBScript победил.
Why is D3 so Verbose?
D3 кажется многословным, потому что каждая деталь визуализации описывается вручную.
Чтобы нарисовать простой boxplot, потребовалось 194 строки: указываются координаты каждой линии, прямоугольника, осей и подписей. В Excel это делается парой кликов, но D3 не «волшебная кнопка», а низкоуровневый инструмент для SVG.
Плюс такого подхода — абсолютная гибкость: можно создать любую визуализацию, не ограниченную шаблонами. Минусы — много кода и крутая кривая обучения.
Пока я учусь, пишу «вручную», чтобы не пропустить детали; позже код можно сжать собственными функциями или компонентами.
Итог: D3 длинный, потому что даёт полный контроль над каждым пикселем.
Комментарии (61)
- D3 — это не «библиотека для графиков», а низкоуровневый инструмент для связывания данных с DOM/SVG через
.data().enter/update/exit, что даёт максимальную гибкость, но требует особой ментальной модели. - Из-за этого код получается многословным; кто-то считает это читаемостью и «мышечной памятью», кто-то — непреодолимым барьером.
- Чтобы уменьшить многословность, часть людей берёт лишь вычислительную часть D3 и рендерит через Solid/JSX, React или Observable Plot.
- Некоторые напоминают: если нужны только статические графики, можно обойтись вообще без JS, а для сложных анимаций и «не-стандартных» визуализаций D3 остаётся почти незаменимым.
Show HN: PlutoPrint – Generate PDFs and PNGs from HTML with Python
PlutoPrint — библиотека Python для генерации PDF и изображений из HTML, работает на базе PlutoBook.
Установка: pip install plutoprint.
Основные возможности
- HTML → PDF/PNG/JPEG — одна строка кода.
- CSS/JS — полная поддержка современных стандартов.
- Шаблоны — Jinja2, Django, Flask и др.
- Пакетная обработка — асинхронный режим.
- Docker-образ для быстрого деплоя.
Быстрый старт
from plutoprint import PlutoPrint
pp = PlutoPrint()
pp.html_to_pdf("report.html", "report.pdf")
Параметры
format: pdf, png, jpegwidth/height,orientation,margin,header/footer,dpi
Примеры
- Отчёты, чеки, инвойсы, почтовые этикетки, скриншоты страниц.
Лицензия
MIT.
Комментарии (30)
- Пользователи сравнивают PlutoPrint с WeasyPrint, Puppeteer и Typst: новый движок на C++ обещает быть быстрее и легче по памяти, но покрывает не весь CSS.
- Рекомендуют прогнать тесты с print-css.rocks и проверить прод-качество (проблемы с thead, page-break-inside и т.д.).
- Puppeteer даёт полную поддержку веб-платформы, но требует Chromium и много RAM, особенно для 200-500-страничных PDF.
- Есть вопросы по flexbox, SVG, оглавлению, поддержке Markdown и крэшу на macOS.
- Несколько человек рассматривают PlutoPrint как замену wkhtmltopdf и fpdf, автор открыт к спонсорству.
Show HN: I was curious about spherical helix, ended up making this visualization 🔥 Горячее
Как двигать объекты в 3D
Кликните вправо, чтобы идти дальше →
От круга к сферической спирали
Куб движется по кругу:
x = 10 cos(πt/2)
y = 10 sin(πt/2)
Умножаем радиус на 0.03 t — получаем растущую спираль.
Сферическая спираль
Добавляем z:
z = 10 cos(0.02 πt)
Радиус x, y теперь умножается на sin(0.02 πt), поэтому он сначала растёт, потом уменьшается.
x = 10 cos(πt/2) · sin(0.02 πt)
y = 10 sin(πt/2) · sin(0.02 πt)
z = 10 cos(0.02 πt)
Куб облетает сферу по спирали.
Итог
Положение в 3D задаётся параметрическими уравнениями x(t), y(t), z(t).
Меняя функции, получаем любые траектории — от простого круга до «хаотичных» путей.
Проект Damar • Twitter @damarberlari
Комментарии (132)
- Пользователи восторгаются плавной анимацией и наглядностью объяснения сферической спирали.
- Некоторые жалуются на тормоза в Firefox/Linux и просят убрать «диззи»-эффект.
- Просят добавить навигацию свайпом/скроллом, кнопки «вперёд-назад» и RSS-ленту.
- Отмечен скачок сложности: от азов к финальной спирали — слишком большой шаг для новичков.
- Появились предложения расширить тему: полярные координаты, матрицы поворота, Fibonacci-спираль на сфере.
Shader Academy: Learn computer graphics by solving challenges
Академия шейдеров
Для работы приложения включите JavaScript.
Комментарии (59)
- Пользователи делятся опытом: кто-то начинал с Shader Graph в Unity, но вернулся к стандартным шейдерам URP.
- Критика дизайна: «дефолтный» вид сайта и AI-генерированные текстуры создают ощущение «vibe-coded» качества.
- Технические проблемы: Firefox/Linux и некоторые версии macOS жалуются на отсутствие WebGL, хотя он поддерживается.
- Практическая ценность: шейдеры всё ещё нужны даже в Unity/UE для кастомных эффектов; без них продвинутый визуал не сделать.
- Создатели Shader Academy приглашают в Discord за фидбеком, признают использование AI лишь для комментариев и шаблонов.
Ask HN: Why does the US Visa application website do a port-scan of my network? 🔥 Горячее 💬 Длинная дискуссия
—
Комментарии (188)
- На сайте визовой анкеты обнаружены скрипты F5 (TrafficShield), которые сканируют локальные порты 127.0.0.1:8888 и ищут Burp Suite, чтобы выявить прокси-аферистов и «анти-ботов».
- Пользователи удивлены, что браузеры без спроса разрешают JavaScript обращаться к LAN; в Chrome уже вводится запрос разрешений.
- Защититься помогают uBlock Origin (список «Block Outsider Intrusion into LAN»), uMatrix/NoScript, а также «hard mode» в uBO.
- Часть комментаторов считает, что сканирование также может быть связано с чип-картами ID или отладочными сервисами на localhost.
Perfect Freehand – Draw perfect pressure-sensitive freehand lines
perfect-freehand
Для работы приложения включите JavaScript.
Комментарии (9)
- Библиотека perfect-freehand от Стивена Руиза (tldraw) делает плавные «ручные» линии.
- Похожая функция была в Xara Designer ещё в 2000-х, но редко встречается в других редакторах.
- В tldraw уже встроена улучшенная версия perfect-freehand, где линии выглядят лучше и легко экспортировать в SVG.
- Некоторые пользователи жаловались на «острые» концы и проблемы сохранения; форк или tldraw решают это.
CRDT: Text Buffer
Алгоритм CRDT для совместного текста
Каждый символ получает уникальный id: site (идентификатор узла) и clock (локальный счётчик, увеличиваемый после каждой операции), а также parent — указатель на предыдущий символ.
-
Вставка
parentставится на символ перед точкой вставки (null — в начало). Порядок символов задаётся прямым обходом дерева: родители идут раньше потомков. -
Сортировка при одинаковом parent
Сначала по убываниюcounter, затем поsite. При вставке перед символом с тем же parent берём егоcounter + 1. -
Удаление
id символа попадает в множество удалённых (tombstone). Значение можно забыть, но позиция нужна для корректного порядка.
Оптимизации
- Последовательные вставки одного узла объединяются в блок: массовая вставка стоит как одна операция.
- Блоки хранятся в отсортированном массиве; вставка — O(log n) без явного дерева.
- Удаления группируются диапазонами по
siteиclock.
Плюсы и минусы
- Плюсы: разумный расход памяти, быстрые запросы/обновления.
- Минусы: сложная логика слияния, только рост метаданных, сборка мусора требует координации.
Интерактивный пример
Четыре пира, задержка сети, редактирование кликом. Исходник — crdt-text-buffer.js.
Полезные ссылки
- josephg.com/blog/crdts-go-brrr/ — эффективная реализация.
- archagon.net/blog/2018/03/24/data-laced-with-history/ — деревья и сборка мусора.
Комментарии (6)
- Обсуждали RGA — CRDT-алгоритм для списков и текста, который Automerge раньше использовал до перехода на FugueMax.
- У RGA есть редкая проблема: при вставке элементов в обратном порядке у разных пользователей возникает чередование.
- Упомянули Eg-Walker — новый подход от Loro.dev, который вызвал интерес у участников.
Prime Number Grid 🔥 Горячее
Prime Grid
Старт
Строки
Столбцы
« » ·
Для работы страницы требуется включённый JavaScript.
Комментарии (90)
- Пользователи делятся ссылками на визуализаторы простых чисел и обсуждают разные способы отображения: решётки, Ulam spiral, «упаковки» по 100 чисел.
- Отмечают, что при простом числе колонок возникают диагональные полосы из-за одинаковых остатков по модулю.
- Удивляются «густоте» простых даже на больших числах, хотя теорема о простых числах говорит о снижении плотности как 1/log n.
- Просят добавить hover-числа, анимацию, другие основания, 3-D, экспорт изображений.
- Кто-то видит в узорах логотипы, «звёздные врата» или даже «клингонский» текст; другие предупреждают, что часть узоров — псевдопаттерны.
Left to Right Programming 🔥 Горячее 💬 Длинная дискуссия
Программа должна оставаться валидной по мере набора.
Python-списковые включения плохи: пока вы не допишете for line in text.splitlines(), редактор не знает тип line, не может подсказать split() и даже не понимает, существует ли переменная.
В Rust text.lines().map(|line| line.split_whitespace()) строится слева-направо: сразу после line. доступны методы, и код всё время «жив».
Принцип progressive disclosure: сложность появляется ровно тогда, когда нужна. В C функции для FILE* начинаются на f; вводишь f и видишь сотни вариантов, не понимая, какой подходит. В идеале file. показал бы read, close и т. д. прямо во время набора.
Python и JS:
map(len, text.split())
— неясно, как называется длина (len, length, size?).
text.split(" ").map(w => w.length)
— length и map подсказываются сразу после точки.
С ростом логики читаемость падает:
len(list(filter(lambda line: all([abs(x) >= 1 and abs(x) <= 3 for x in line]) ...
Комментарии (323)
- Обсуждение вращается вокруг идеи «слева-направо» синтаксиса: сначала контекст (объект, коллекция), потом действие, чтобы IDE могла мгновенно подсказывать.
- Критикуют Python- comprehensions и вложенные вызовы за «вправо-налево» порядок, мешающий автокомплиту и чтению.
- Многие хотят pipe-оператор (|>) или uniform call syntax, как в F#, Elixir, Nim, чтобы цепочки выглядели
data |> filter(...) |> map(...). - Противники считают, что язык не должен подстраиваться под автокомплит, а сложные цепочки лучше выносить в переменные или использовать методы.
- Примеры из SQL, JS/TS импортов, Rust for-loops и C# LINQ показывают ту же проблему: сначала надо указать, что ты хочешь получить, а потом — откуда.
My Retro TVs
MyRetroTVs
Для работы приложения включите JavaScript.
Комментарии (21)
- Пользователи делятся воспоминаниями и проектами по «оживлению» старых телевизоров на базе Raspberry Pi и сайтам вроде EXPTV.
- Отмечают ностальгию по ограниченному эфиру, «щелчку» переключения каналов и даже звуку размагничивания.
- Рекламы и новости 9/11 вызывают особые эмоции, подчеркивая, как медиа формируют «разные реальности» в разные годы.
- Канадский музей MZTV в Торонто и виртуальные туры рекомендуются для «настоящего» погружения.
- Мобильная версия сайта вызывает затруднения, но это не мешает «залипать» на часы.
An interactive guide to SVG paths 🔥 Горячее
SVG <path>: краткий путеводитель
<path> — единственный способ рисовать сложные фигуры и кривые в SVG. Синтаксис пугает, но разобравшись, становится удобным.
Основы
- Атрибут
d— последовательность команд, как «рецепт» для пера. - Каждая команда начинается с буквы и получает координаты как аргументы.
- Предыдущая точка автоматически становится началом следующей команды.
- Используйте пробелы и запятые — читаемость важнее байтов.
Команды
- M x,y — поднять перо и переместиться в точку.
- L x,y — прямая линия до точки.
- C x1 y1, x2 y2, x y — кубическая Безье.
- Q x1 y1, x y — квадратичная Безье.
- A rx ry x-axis-rotation large-arc-flag sweep-flag x y — дуга эллипса.
- Z — замкнуть путь к начальной точке.
Относительные координаты
Буквы в нижнем регистре (m, l, c…) двигают перо относительно текущей позиции, а не от начала координат.
Цепочки кривых
Повторяйте команды, чтобы строить сложные формы без лишних M.
Анимации
Изменяя d через CSS или JS, можно плавно морфить фигуры.
Советы
- Начинайте путь всегда с
M. - Для читаемости группируйте команды построчно.
- Проверяйте результат в интерактивном редакторе.
Комментарии (43)
- Участники обсуждают интуитивные способы задавать эллиптические дуги без булевых флагов, предлагая параметры вроде углов или контрольной точки.
- Хвалят интерактивный гайд по SVG-путям, его наглядность и звуковые эффекты.
- Делятся практическим опытом: динамическая генерация карт в играх, разметка сканов, чтение путей «с нуля».
- Рекомендуют инструменты для редактирования и генерации SVG: GodSVG, Boxy SVG, онлайн-редактор yqnn.
- Отмечают связь SVG с PostScript, Logo и даже коническими сечениями; обсуждают GPU-ускорение для кривых Безье и рендеринг шрифтов.
MapLibre Tile: A next generation geospatial format optimized for rendering
MapLibre Tile — новый формат векторных тайлов, призванный заменить Mapbox Vector Tile (MVT).
Основные цели:
- меньше размер (до 50 % экономии);
- быстрее парсинг (до 2× ускорения);
- простота реализации без внешних зависимостей.
Ключевые улучшения
- FlatBuffers вместо Protocol Buffers → компактнее и без распаковки.
- структурированные слои: геометрия, атрибуты, индексы — отдельные буферы, что ускоряет выборку.
- delta-кодирование координат и ID → ещё меньше байт.
- встроенный R-tree для быстрого поиска объектов в тайле.
Совместимость
- Поддержка JS, C++, Swift, Kotlin.
- Рендерится в MapLibre GL JS ≥ 5.0 без изменений API.
- Обратная совместимость: конвертер MVT → MLT доступен.
Roadmap
Q4 2024 — стабильная спецификация, конвертеры, примеры.
Комментарии (11)
- Участники рады ускорению декодирования и уменьшению размера тайлов, но опасаются сложности внедрения вне MapLibre.
- Некоторые считают, что узкое место не в загрузке/декодировании, а в памяти и рантайме при множестве слоёв.
- Уже ведётся работа над MapLibre GL JS/Native (Java, JS, Rust, TS); CLI-кодировщик почти готов.
- Ожидается интеграция с Planetiler и, возможно, форк tippecanoe; документация и анонсы через новостную рассылку MapLibre.
Node.js is able to execute TypeScript files without additional configuration 🔥 Горячее 💬 Длинная дискуссия
Node.js v22.18.0 LTS
31 июля 2025
Главное
- TypeScript без конфигурации
.tsфайлы запускаются напрямую:
Ограничения описаны здесь. Отключить:echo 'const foo: string = "World"; console.log(`Hello ${foo}!`);' > file.ts node file.ts # → Hello World!--no-experimental-strip-types.
Ещё важное
- amaro обновлён до 1.1.0
- import.meta.main в ESM
- fs лучше справляется с всплесками событий через AsyncIterator
- permission передаёт флаги модели разрешений при
spawn - sqlite поддерживает
readBigIntsна уровне соединения - url добавлен
fileURLToPathBuffer - watch новый флаг
--watch-kill-signal - Worker стал асинхронно disposable
Другое
- npm 10.9.3, sqlite 3.50.2, обновления minimatch, acorn, googletest
- мелкие исправления в crypto, build, assert и др.
Комментарии (222)
- Node.js теперь умеет запускать .ts-файлы «из коробки», вырезая типы без транспиляции, но поддерживает лишь подмножество TS (без enum и т.п.).
- Новая возможность не распространяется на node_modules, что вызывает вопросы о библиотеках и приватных пакетах.
- Многие радуются упрощённому DX, но часть пользователей уже сталкивается с ошибками обновления из-за ограниченного набора фич.
- Критики считают, что Bun и Deno давно решают эти задачи лучше и быстрее, однако Node остаётся «де-факто» стандартом.
- Итог: шаг вперёд для Node, но полноценная замена tsc/Bun пока невозможна; выбор рантайма по-прежнему зависит от проекта.
Eliminating JavaScript cold starts on AWS Lambda
Porffor — экспериментальный JS-движок, компилирующий код в WebAssembly и нативные бинарники. Вместо упаковки рантайма (как Node/Bun) он генерирует крошечные (<1 MB) и быстрые (миллисекунды) исполняемые файлы.
porf native hi.js hi # 12.9 KB
./hi # 631 µs
Сравнение с Deno/Bun: размер 16 KB против 80–100 MB, старт в 631 µs против 15–37 ms.
Lambda
На AWS Lambda Porffor показал:
- Node (baseline): до 300 ms холодного старта.
- LLRT: ~3× быстрее Node, но дороже из-за отсутствия managed runtime.
- Porffor: ~12× быстрее Node и ~4× быстрее LLRT, при этом дешевле даже с учётом «managed runtime» Node.
P99 Porffor быстрее P50 у конкурентов.
Итог
Porffor ещё pre-alpha: поддержка JS ≈60 %, нет I/O и Node-совместимости. Подходит для маленьких лямбд без Node-API.
Код и данные бенчмарков: GitHub.
Комментарии (67)
- Porffor — экспериментальный AOT-компилятор JS/TS → WASM → C, обещает убрать «холодные» старты Lambda и дать ~16 мс инициализации, но пока без GC, без полной совместимости с Node API и лишь ~60 % тестов ECMAScript проходит.
- Участники спорят, насколько критичны 200-600 мс холодного старта: кто-то считает проблемой для миллионов мелких запросов, кто-то — редким неудобством, решаемым резервными инстансами или переходом на Go/Rust.
- Сомнения в зрелости: «раньше быстро, пока не реализуешь оставшиеся 20 % фич»; безопасность и поддержка всей экосистемы JS вызывают скепсис.
- Плюсы: возможность компилировать в маленькие бинарники, использовать WASM-рантаймы, обходиться без JIT и доверять «своему» коду.
- Минусы: нет GC (хотят прикрутить WasmGC или Fil-C), нет I/O и полной Node-совместимости, корпоративные пользователи опасаются «экспериментов».
Traps to Developers
-
CSS
min-width: auto(по умолчанию) имеет приоритет надflex-shrink,overflow: hidden,width: 0; задайтеmin-width: 0.- Горизонталь и вертикаль различаются:
width: autoрастягивается,height: autoпо содержимому;margin: 0 autoцентрирует по горизонтали, но не по вертикали (вflex-direction: columnработает). - BFC (
display: flow-root) предотвращает схлопывание margin и «обнуление» высоты родителя с float-потомками. - Новый stacking context создают
transform,filter,opacity,position: fixed/sticky,z-index+absolute/relativeи др.;z-indexдействует только внутри контекста. - На мобильных
100vhвключает скрытые панели; используйте100dvh. position: absoluteориентируется на ближайший «positioned» ancestor, а не на родителя.floatне работает внутри flex/grid-родителя.- Процентные
width/heightне работают, если размер родителя не задан. display: inlineигнорируетwidth,height, вертикальныеmargin.- Пробелы между
inline-blockэлементами рендерятся; в flex/grid — нет. box-sizing: content-box(по умолчанию) не включает padding/border; включитеborder-box.- Указывайте
width/heightу<img>для предотвращения CLS. - Загрузка файлов не показывается в DevTools; используйте
chrome://net-export/. - Внутри
<script>строка</script>ломает парсинг.
-
Unicode
- Отличайте code point и grapheme cluster (последнее — то, что видит пользователь).
Комментарии (100)
- Маршрутизаторы могут тихо обрывать простаивающие TCP-соединения; настройте TCP-keepalive или HTTP-заголовки.
- Возвращать
nullизOptional<T>— антипаттерн; Kotlin и аннотации уже решают это. - UTF-16 в Java/C#/JS — деталь реализации; в Go строки — просто байты.
min-width: autoработает не везде; CSS-свойства нельзя читать изолированно.- Регексы, YAML, LF/CRLF,
rm -rf $DIR/— каждый язык/платформа имеет свои подводные камни.
Lazy-brush – smooth drawing with mouse or finger 🔥 Горячее
Lazy Brush — библиотека для рисования плавных линий мышью, пальцем или любым другим указателем.
GitHub | npm | Reddit
Параметры:
- Lazy radius (60 px) — минимальное расстояние, при котором кисть тянется к курсору.
- Friction (0.10) — инерция: 0 — без задержки, 1 — бесконечная.
- Brush radius (13 px) — толщина кисти, не влияет на логику.
Автор: dulnan
Комментарии (67)
- Библиотека Perfect Freehand и её демо drawmote от автора TLDRaw признаны лучшей альтернативой для плавных подписей и рисования.
- Техника «ленивого» курсора с гистерезисом/стабилизатором уже применялась в Wii-играх, Krita, ZBrush, Black & White и других графических пакетах.
- Пользователи отмечают, что визуальный «поводок» между курсором и пальцем делает рисование интуитивным, особенно на мобильных устройствах и при работе мышью.
- Некоторые считают задержку слишком большой и предлагают использовать фильтр Калмана или DynaDraw для меньшего лага.
- Проект вызвал восторг («лучшее бесплатное», «шокирующе хорошо»), но кто-то жалуется на пропадающие линии и невозможность «естественных» штрихов.
The beauty of a text only webpage 💬 Длинная дискуссия
Чар простой текстовой страницы
Открывая страницу из одного текста, я чувствую облегчение: нет баннеров куки, рекламы, всплывающих подписок и автозапуска видео.
Только чистый, быстрый, читаемый текст.
Такой контент можно скопировать в письмо, отправить в ChatGPT, распечатать или сохранить на Kindle — он везде работает.
Ссылка открывается мгновенно без CDN и предзагрузок.
Хостинг стоит копейки, сайт живёт даже на Raspberry Pi.
Читая, легко переключаться между беглым просмотром и вдумчивым чтением, не чувствуя вины за «потерянное» время.
Спасибо всем, кто публикует текст без лишнего.
Вы жертвуете «вовлечённостью», но дарите интернету простоту и покой.
Мне это безумно нравится.
Комментарии (156)
- Участники мечтают о браузере без JS, где только HTML и выбранная пользователем CSS-тема.
- Хвалят сайты вроде plaintextsports.com и berkshirehathaway.com за минимализм, читаемость и отсутствие трекеров.
- Спорят о шрифтах: кто-то любит моноширинные «под печатную машинку», кто-то просит sans-serif и контрастные цвета.
- Соглашаются, что картинки допустимы, если служат тексту, а главный враг — избыточный JS, баннеры и медленные фреймворки.
- Вспоминают лёгкие новостные «lite»-версии CNN/NPR и альтернативные протоколы вроде Gemini как примеры «текстового» интернета.
Show HN: I built a free alternative to Adobe Acrobat PDF viewer 🔥 Горячее
embed-pdf-viewer — легковесный компонент для просмотра PDF, который встраивается в любой JS-проект без зависимостей.
- Установка:
npm i embed-pdf-viewer - Использование:
import { EmbedPDF } from 'embed-pdf-viewer';
new EmbedPDF('#viewer', { url: 'file.pdf' });
- Фичи: масштаб, пагинация, печать, полноэкранный режим, темы.
- Лицензия: MIT.
Комментарии (78)
- Проект использует PDFium (движок Google/Foxit), а не собственный парсер.
- Основная цель — лёгкая интеграция в сайты и более плавный зум/рендеринг, чем у pdf.js.
- В Chrome аннотации работают, в Firefox и Safari частично: ломается выделение текста, закладки, печать.
- Планы монетизации: бесплатный MIT-вьювер + платные enterprise-фичи (хостинг, аналитика, контроль доступа).
- Разработка идёт 7 месяцев; roadmap включает подписание (PKCS#11/12) и, возможно, нативные приложения.
Chris Simpkins, creator of Hack font, has died
Хилари Палмен: «К сожалению, Кристофер Симпкинс умер…»
Для работы веб-приложения Mastodon включите JavaScript или установите нативное приложение.
Комментарии (9)
- Сообщество оплакивает кончину Криса Саури, создателя шрифта Hack и соавтора Google Sans Code.
- Пользователи вспоминают его тёплую переписку и благодарят за красивый, удобный моноширинный шрифт.
- Многие называют Hack «родным» для терминала и обещают продолжать его использовать в память о нём.
- Упомянуты альтернативы: Google Sans Code и патчи Nerd Font для обеих гарнитур.
Adult sites are stashing exploit code inside svg files
- Суть атаки: порносайты внедряют вредоносный код в файлы
.svg, которые при клике заставляют браузер ставить лайк заданным постам в Facebook без ведома пользователя. - Техника: SVG-файлы содержат скрытый JavaScript, зашифрованный через «JSFuck». После раскодировки загружается цепочка скриптов, завершающаяся трояном Trojan.JS.Likejack, который кликает «Like».
- Условие: пользователь должен быть авторизован в Facebook в этом же браузере.
- Масштаб: десятки сайтов на WordPress используют схему; Facebook блокирует связанные аккаунты.
- История: злоупотребления SVG-файлами фиксировались раньше — эксплойты Roundcube в 2023 г. и фишинг Microsoft в июне 2025 г.
Комментарии (71)
- Вредоносные SVG-файлы на порносайтах заставляют браузер ставить «лайк» на Facebook без ведома пользователя.
- Это работает через обычный CSRF: SVG, загруженный в iframe или открытый в новой вкладке, выполняет JavaScript, который вызывает Facebook-API.
- Если SVG вставлен как картинка (
<img src=file.svg>), скрипты не запускаются; уязвимость появляется только при «полном» показе SVG. - Некоторые считают, что проблема не в SVG, а в отсутствии защиты от CSRF со стороны Facebook.
- Пользователи советуют блокировать JS по умолчанию (NoScript/uBlock), использовать режим инкогнито или отдельные контейнеры для Facebook.
Bezier-rs – algorithms for Bézier segments and shapes
Bezier-rs — интерактивная документация
Для работы необходим JavaScript
Комментарии (40)
- Пользователи высоко оценили библиотеку Offsetting и её Rust-переписанный модуль булевых операций над кривыми.
- Обсуждаются возможности расширения: неравномерное обводное расширение, поддержка рациональных Безье для CAD, генерация равноудалённых точек, маршрутизация рёбер в диаграммах.
- Некоторые ищут обучающие ресурсы по математике для реализации подобных алгоритмов; рекомендованы видео Freya Holmér.
- Поднят вопрос о создании Python-биндингов и использовании WASM для работы в браузере.
Ultrathin business card runs a fluid simulation 🔥 Горячее 💬 Длинная дискуссия
flip-card
Проект Nicholas-L-Johnson на GitHub: публичный репозиторий, демонстрирующий карточку, переворачивающуюся при наведении.
- Технологии: HTML, CSS, возможно JavaScript.
- Функция: плавный 3D-переворот с лицевой стороны на обратную.
- Применение: карточки товаров, профили, интерактивные элементы UI.
Клонировать:
git clone https://github.com/Nicholas-L-Johnson/flip-card.git
Комментарии (214)
- Проект — ультратонкая электронная визитка с симуляцией жидкости; вызывает восторг, но кажется дорогой для раздачи.
- Ключевые плюсы: реалистичное движение «воды», простая и дешевая конструкция, легко отлаживать.
- Минусы: можно намочить одежду, толщина USB-C + ПКБ выглядит «толстой» для визитки, шрифт на обороте раздражает многих.
- Отмечены изюминки: USB-C на краю платы без дополнительных деталей, прошивка на Rust с плавающей точкой, аккумулятор почти кредитной толщины.
- Люди хотят больше деталей о сборке, просят sans-serif шрифт и чуть более игривый дизайн.
Cursed Knowledge 🔥 Горячее
- Zitadel: JS-движок не поддерживает именованные группы в regex.
- Entra: PKCE есть, но не указан в OpenID-доке → клиенты думают, что нет.
- EXIF: размеры в метаданных могут не совпадать с реальными.
- YAML: пробелы ведут себя неочевидно.
- Windows: скрытые файлы нельзя открыть флагом
"w"; опция SMBhide dot filesусложняет жизнь. - Git: автопреобразование LF ↔ CRLF ломает bash-скрипты.
- Cloudflare Workers:
fetchпо умолчанию используетhttp, даже если указанhttps. - Android/iOS: без разрешения на геолокацию GPS-данные могут тихо удаляться из фото.
- PostgreSQL NOTIFY: работает в транзакции → WAL растёт каждые 5 с при использовании socket.io-адаптера.
- npm-скрипты: каждый запрос к реестру → плохой health-check.
- JS-«пакетный» спамер: добавляет 50 лишних зависимостей «для обратной совместимости».
- bcrypt: учитывает только первые 72 байта пароля.
- JS Date: годы и дни считаются с 1, месяцы — с 0.
- ESM ↔ CJS: до Node 20.8 смешанный импорт мог вызвать segfault.
- PostgreSQL: максимум 65 535 параметров — большие bulk-insert ломаются.
- Clipboard API и др. работают только в HTTPS/localhost.
- TypeORM:
.remove()удаляет полеidиз переданного объекта.
Комментарии (131)
- Пользователи восторженно приняли идею «cursed knowledge» — каталога кошмарных нюансов, сопровождаемого коммитом-фиксом.
- Обсуждали PostgreSQL-лимит в 65 k placeholder’ов, причины появления 50 лишних npm-пакетов, скрытые потоки NTFS/ADS и «призрачные» файлы macOS.
- Упомянули, что bcrypt обрезает пароль до 72 байт, Cloudflare Workers могут игнорировать https, EXIF-даты в Immich — постоянная головная боль.
- Поделились личным опытом: неразрывные пробелы, case-insensitive имена в macOS, Java-классы в Oracle, «магия» YAML-парсеров.
- Кто-то предложил превратить подборку в репозиторий-«Awesome Cursed», другие подчеркнули пользу такого «терапевтического» лога ошибок.
Live: GPT-5
-
Introducing GPT-5 — YouTube
-
Пропустить навигацию
-
Поиск / Поиск голосом
-
Войти
-
Смотреть позже • Поделиться • Копировать ссылку • Покупки
-
Нажмите, чтобы включить звук • 2x
-
Если воспроизведение не началось, перезапустите устройство.
-
Вы вышли из аккаунта. Просмотры могут влиять на рекомендации на ТВ. Чтобы избежать этого, отмените и войдите на YouTube на компьютере.
-
Отмена • Подтвердить
-
37:35 • 7 августа, 10:00 GMT-7
-
Далее • Прямой эфир запланирован • Играть
Introducing GPT-5
- OpenAI • Подтверждено • 1,65 млн подписчиков
- Подписаться • Подписаны
- 6 522 ожидают • Запланировано на 7 авг. 2025
- 1K • Поделиться • Скачать • Сохранить
- Комментарии отключены
Описание
-
Introducing GPT-5
-
Присоединяйтесь к Сэму Альтману, Грегу Брокману, Себастьену Бюбеку, Марку Чену, Янну Дюбуа, Брайану Фиоке, Ади Ганешу, Оливеру Годеману, Саачи Джайн, Кристине Каплан, Тине Ким, Элейн Я Ле, Фелипе Миллону, Мишель Покрасс, Якубу Пахоцки, Максу Шварцеру, Ренни Сонгу, Жожену Вану — они представят и продемонстрируют GPT‑5.
-
OpenAI: Видео • О канале • Twitter • LinkedIn
Комментарии (92)
- Участники обсуждают качество ИИ для повседневного программирования: один отмечает сильное превосходство Anthropic (Sonnet 3.7/4 и Claude Code), причём в Cursor опыт хуже, чем в самом Claude Code, и OpenAI‑модели он почти не использует.
- Есть надежда, что GPT‑5 сократит отставание OpenAI, хотя мнения пользователей сильно расходятся.
- Другой комментатор ожидает, что грядущие анонсы покажут радикальное влияние на рынок: веб‑ и JS/TS‑разработчики могут стать частично или полностью невостребованными.
- При этом подчёркивается, что речь ещё не об «AGI» — максимум о ~10% от обещанных возможностей AGI.
- Отмечается ночной «слив», указывающий на фокус на кодинге; предполагается, что для названия «GPT‑5» OpenAI должен предложить существенное преимущество над Anthropic.
Gleam v1.12
-
Исправления
- Уточнено сообщение об ошибке с некорректной терминологией. (Louis Pilfold)
- JS: устранён сбой при использовании echo в модуле с функцией process. (Peter Saxton)
- Форматер: не переносит комментарий перед assert за него; корректно форматирует сообщения после echo/panic/todo/assert/let assert с комментарием перед ними; компилятор не генерирует неверный код для assert с пайпами на JS. (Giacomo Cavalieri)
-
Форматирование битовых массивов
- Трейлинг-Запятая управляет разбиением: с запятой — много строк; без — в одну строку.
- Если несколько сегментов на строке и убрана завершающая запятая, форматер сохраняет сегменты по одному на строку. (Giacomo Cavalieri)
-
Компилятор и генерация кода
- echo поддерживает пользовательское сообщение: echo 11 as "lucky number" печатает контекст и значение в stderr. (Giacomo Cavalieri)
- В сгенерированном JS doc-комментарии превращаются в JSDoc. (Giacomo Cavalieri)
- Уменьшен размер кода case на JS. (Surya Rose)
- Удаление неиспользуемого кода на этапе генерации (usage-based DCE). (Louis Pilfold)
- Улучшена поддержка echo для списков символов, ошибок и циклических ссылок JS. (Louis Pilfold)
- Улучшен внешний вид ошибок и предупреждений: контекстные метки выделяются иначе, чем источник проблемы. (Giacomo Cavalieri)
- Подсказка при импорте с точкой вместо слеша, с примерами корректного синтаксиса. (Zij-IT)
- Предупреждение при затенении импортированного имени верхнеуровневой константой/функцией. (Aayush Tripathi)
- Улучшено сообщение об неизвестной переменной, если, вероятно, имелась в виду проигнорированная (_x → x), с подсказкой. (Giacomo Cavalieri)
- Оптимизирован матчинг-паттернов на JS.
Комментарии (80)
- Обсуждение посвящено релизу Gleam: многие хвалят дизайн языка, читаемость, статическую типизацию и паттерн-матчинг; приводят пример кода и делятся позитивным опытом использования в проектах.
- Есть ссылки на пост о версии 1.12.0 и доклад на YouTube; некоторые ждут дальнейшего созревания экосистемы и возможности шаринга кода между фронтендом и бэкендом.
- Критика: отсутствие интерфейсов/тайпклассов и оператора композиции; кому-то синтаксис и «Error -> Error» кажутся неэлегантными; snake_case непривычен после TypeScript.
- В ответ отмечают осознанную простоту языка и официальную позицию Gleam по отказу от тайпклассов.
- Существенная часть треда уходит в спор о «идеологичном» футере сайта (инклюзивность, антинацистская позиция, права транс-людей): часть считает это лишним, другие — важным для безопасности и качества сообщества.
- Подчеркивается, что Gleam — это не только язык, но и сообщество с явным кодексом поведения; отсутствие позиции тоже является позицией.
- Некоторые участники призывают вернуться к техническим темам релиза, чтобы не повторять одни и те же дискуссии.
Комментарии (73)
- Обсуждение посвящено веб-инструменту в стиле TB-303: пользователи хвалят звук, музыкальность и авто-генерацию совместимых полиритмов для баса, лида и дрона, отмечают ностальгию по ReBirth и 90-м.
- Автор сообщает, что проект старый и незавершённый; добавил полифилл для cancelAndHoldAtTime в Firefox и выделил часть таймкипинга в библиотеку beatstepper.
- Многие просят открытый исходный код, локальный запуск, экспорт MIDI/стемов, визуализацию паттернов (пиано-ролл), сохранение/загрузку, MIDI синхронизацию и транспорт, а также продолжение воспроизведения при Regenerate.
- Есть баг-репорты: не работало в Firefox до полифилла, в Chromium после Stop остаётся тихий хвост/эхо, иногда нужно жать Stop несколько раз.
- Пользователи делятся альтернативами и вдохновляющими ссылками: Endless Acid Banger, roland50.studio, музыка Vitling, ивенты Acid August.
- Инструмент вызывает желание вернуться к электронной музыке; звучание напоминает Frank Klepacki/Red Alert 2, Dynamix на C64; просят добавить 909-кит.
- Автор кратко описал генерацию: ноты из выбранной гаммы/октавы, деление паттерна на чанки с вероятностным копированием/обновлением и настройкой повторов; сообщество хочет статью о методе.
Rethinking DOM from first principles 💬 Длинная дискуссия
Переосмысление DOM с нуля
Браузеры в странном положении: WebAssembly выстрелил, даже на сервере, а клиентская часть ощущается почти как 10 лет назад. Доступ к веб-API из WASM решают тонким JS-клеем — но зачем вообще лезть в DOM? Просто других опций нет. Пора отправить DOM и его API «на ферму», и вот почему.
Никто уже не знает браузеры целиком — и это часть проблемы.
Модель «документа»
Мало кто осознает, насколько DOM раздут. У document.body в Chrome 350+ ключей, а в document.body.style — около 660 свойств. Граница между свойствами и методами размыта, геттеры могут триггерить релэйаут, висят легаси-штучки вроде onevent. DOM толстеет; страничникам это почти не видно, а приложениям — боль.
Большинство избегают прямой работы с DOM; деклартивности мало и она несовременна. Способов сделать одно и то же много, ни один не приятен.
connectedCallback() {
const shadow = this.attachShadow({ mode: 'closed' });
const template = document.getElementById('hello-world').content.cloneNode(true);
const hwMsg = `Hello ${ this.name }`;
Array.from(template.querySelectorAll('.hw-text')).forEach(n => n.textContent = hwMsg);
shadow.append(template);
}
Веб-компоненты пришли поздно, непопулярны: API громоздкий, Shadow DOM плодит уровни вложенности и области видимости. Главная беда — строковая наследственность SGML/XML: состояние хранить в документе плохо; React-подобные это избегают, их «XML» — лишь синтаксис.
HTML почти не менялся 10–15 лет. ARIA стала заплаткой тому, что не дала «семантика HTML». Цели так и не достигли: нет <thread> или <comment>, правила странные. WHATWG (то есть вендоры) добавляет лишь заплатки по краям; даже CSS оброс выражениями — любая шаблонка хочет стать языком программирования.
Редактируемость HTML через contentEditable — теоретически есть, практически — темная магия; у команд Docs/Notion наверняка кошмары. Догмы про «прогрессивное улучшение» и разделение разметки/стилей в мире приложений мало кто исповедует.
Сегодня приложения склеивают HTML/CSS/SVG до «достаточно красиво», ценой огромных оверхедов — это анти-UI тулкит.
Подпись: Ввод Slack
Подпись: Оффскрин-хаки для буфера обмена
Списки и таблицы приходится виртуализировать вручную, перехватывая лайаут, ресайз, драги и т. п. «Прилипший вниз» скролл в чате — вечный TODO. Чем больше виртуализируешь, тем больше заново пишешь «поиск на странице», контекстные меню и пр. Веб стер грань между UI и «текучим контентом» — когда-то это было ново, теперь UI устарел, контент унифицировался.
CSS вывернут наизнанку
CSS не имеет стройной…
Комментарии (205)
- Участники признают, что веб-платформа сложна и разрослась из-за обратной совместимости, множества требований и долгой эволюции; переписывание «с нуля» в реальности лишь добавляет новые слои сложности.
- Многие защищают DOM/HTML/CSS: они кроссплатформенны, поддерживают доступность, приватность, IME/спеллчек и текстовые сценарии, с которыми канвас/кастомные рендеры часто не справляются.
- Критика фокусируется на перегруженности API, «текучих» абстракциях и смешении ролей (CSS как и стиль, и лейаут), предлагаются идеи модульности API, хранение состояния в документе, и дисциплинированное использование Web Components.
- Аргумент «выбросить и заменить» упирается в стоимость миграции и необходимость покрыть весь исторический функционал; успех веба объясняют именно гибкостью, хаками, позже закреплёнными стандартами, и жёсткой обратной совместимостью.
- Проводят параллели с нативными UI-стеками: многие считают веб-технологии более удачными; обсуждают Flutter/WASM/WebGPU как путь к «приложенческому» вебу без ломания существующего.
- Идеи разделения «документы vs приложения» всплывают часто (вплоть до «DOCTYPE app»), но консенсус: нужно сосуществование обоих подходов, а не замена.
- Скепсис к «HTML на Canvas» и «перезапуску браузера» высок: полезнее усиливать существующие примитивы (дешёвый доступ WASM к DOM, лучше продуманные формы/контролы, богатые стандартные виджеты), чем плодить новые параллельные стеки.
Apache ECharts 6 🔥 Горячее
—
Комментарии (34)
Props to them for keeping backwards compatibility. I always dread seeing these major releases, especially after being burned several times by the tire fire of react-router. Migrating a rather large project from 5.6 to 6.0 (10 chart types, around 1k charts in total) took maybe 15
Debounce
Дебаунс — это техника ограничения частоты вызова функции. В течение заданной задержки все входящие вызовы игнорируются, а выполняется только один — либо первый (leading), либо последний (trailing), в зависимости от настроек. Это помогает оптимизировать производительность и избежать лишних вычислений при частых событиях.
Применение:
- Обработчики ввода: ждать паузы перед запросом автодополнения.
- События прокрутки/изменения размера: запускать вычисления после остановки действий пользователя.
- Клики и сабмиты: предотвращать множественные отправки.
Отличие от троттлинга: троттлинг гарантирует вызовы с фиксированным интервалом, а дебаунс — один вызов после серии событий (или сразу первый, если включен leading).
Ключевые параметры:
- delay: время ожидания.
- leading/trailing: когда вызывать — в начале или в конце паузы.
- maxWait (если предусмотрено): гарантирует вызов, даже если события не прекращаются.
Комментарии (81)
- Обсуждение вращается вокруг корректности термина «debounce» в UI/FE-разработке и аналогии с электронным дебаунсом; часть участников считает аналогию неточной, другие — уместной как метафору, предлагая альтернативы: coalescing, edge detection, latch, request coalescing.
- Предупреждение: дебаунс/троттлинг с async-функциями может вести к неожиданному поведению (например, возврат предыдущего Promise); контраргумент — обычные async всегда возвращают новый Promise, проблемы чаще у мемоизации.
- Практика и инструменты: предлагают использовать AbortController для «debounced fetch», реактивные подходы (RxJS switchMap), а также отмечают, что ResizeObserver и события типа scrollend иногда снимают необходимость дебаунса.
- В бэкенде и других языках: в Java нет стандартной гибкой безопасной реализации дебаунса; в Kotlin помогают примитивы структурированной конкуррентности.
- Примеры применения/антипримеров: авто-сохранение по вводу, предотвращение многократных кликов; спор о поиске «на каждый ввод» как неудачном UX-примере.
- Технические нюансы из электроники: асимметричный дебаунс (быстрый «make», задержанный «break»), гистерезис через разные пороги, ссылки на материалы по контактному дребезгу.
- Метадискуссия: популярность темы в интервью, критика «модных терминов» во фронтенде и обсуждение ценности постов/ссылок.
How we made JSON.stringify more than twice as fast 🔥 Горячее 💬 Длинная дискуссия
—
Комментарии (165)
JSON encoding is a huge impediment to interprocess communication in NodeJS.Sooner or later is seems like everyone gets the idea of reducing event loop stalls in their NodeJS code by trying to offload it to another thread, only to discover they’ve tripled the CPU load in the main
Modern Node.js Patterns 🔥 Горячее 💬 Длинная дискуссия
—
Комментарии (421)
Whoa, I didn't know about this: # Run with restricted file system access node --experimental-permission \ --allow-fs-read=./data --allow-fs-write=./logs app.js # Network restrictions node --experimental-permission \ --allow-net=api.example.com app.js Looks like they were inspired
Комментарии (54)
Looks like this is a wrapper around: https://github.com/mlc-ai/web-llmWhich has a full web demo: https://chat.webllm.ai/ Fun demo but the model that's used seems to be pretty stupid:> What's the best way to get to space?>> Unfortunately, it's not currently possible for humans to