Hacker News Digest

Обновлено: 28 ноября 2025 г. в 08:55

Постов: 4635 • Страница 456/464

Typed languages are better suited for vibecoding (solmaz.io) 🔥 Горячее 💬 Длинная дискуссия

by hosolmaz • 03 августа 2025 г. в 23:55 • 273 points

ОригиналHN

#typed-languages

Комментарии (229)

I am managing projects in languages I am not fluent in—TypeScript, Rust and Go—and seem to be doing pretty well.This framing reminds me of the classic problem in media literacy: people know when a journalistic source is poor when they’re a subject matter expert, but tend to ass

How to grow almost anything (howtogrowalmostanything.notion.site)

by car • 03 августа 2025 г. в 22:55 • 201 points

ОригиналHN

#gardening#hydroponics#plant-care#agriculture

Комментарии (61)

Thought this was for plants, womp womp.We should have already made super-seeds that you can plant in concrete and grow all the tomatoes you'll need in a month with a single LED. Why be dependent on Big Ag or imports from Chile for tasteless nutritionless environment-poisoned over

So you want to parse a PDF? (eliot-jones.com) 🔥 Горячее 💬 Длинная дискуссия

by UglyToad • 03 августа 2025 г. в 22:24 • 403 points

ОригиналHN

#pdf#parsing

Комментарии (230)

Disclaimer - Founder of Tensorlake, we built a Document Parsing API for developers.This is exactly the reason why Computer Vision approaches for parsing PDFs works so well in the real world. Relying on metadata in files just doesn't scale across different source of PDFs.We conver

Monte Carlo Crash Course: Quasi-Monte Carlo (thenumb.at)

Monte Carlo Crash Course

  • Непрерывные распределения вероятностей
  • Экспоненциально лучшая интеграция
  • Сэмплинг
  • Кейс: рендеринг
  • Quasi-Monte Carlo
  • Скоро…

Мы уже определили и применили интеграцию Монте‑Карло — по сути, это единственный необходимый инструмент. Далее рассмотрим способы снижать дисперсию и эффективно сэмплировать сложные распределения.

  • Дисперсия и корреляция
  • Стратифицированный сэмплинг
  • Адаптивный сэмплинг
  • Латинский гиперкуб
  • Quasi‑Monte Carlo
  • Последовательности с низкой несоответственностью

Дисперсия и корреляция

Во второй главе мы увидели: дисперсия оценщика Монте‑Карло обратно пропорциональна числу выборок, а ожидаемая ошибка масштабируется как 1/√N в любом измерении. Это намного лучше экспоненциальной зависимости, но для очень высокой точности 1/√N всё ещё может быть недостаточно быстро; на практике N можно увеличивать лишь ограниченно.

Мы также предполагали независимость выборок, чтобы дисперсии складывались. Однако несмещённость интеграции Монте‑Карло не требовала независимости. Если выборки отрицательно коррелированы, ковариация < 0, дисперсия суммы снижается, и сходимость может быть быстрее 1/√N.

Poisson Disk Sampling

Перцептивно отрицательно коррелированные точки выглядят «более случайными»: независимые образуют кластеры и оставляют пробелы; отрицательная корреляция делает обратное — плотные области сэмплируются реже. Можно генерировать такие точки отбором с отказами: отбрасывать точки, слишком близкие к уже принятым (Poisson disk sampling). Это удобно для предгенерации с минимальным расстоянием, но плохо подходит для прогрессивных оценок, где нужно со временем покрыть весь домен.

Стратифицированный сэмплинг

Если минимальная дистанция не нужна, быстрее получать отрицательную корреляцию через стратификацию. Идея сочетает сильные стороны квадратур и Монте‑Карло: вместо N независимых точек по всему домену мы делим область на M равных ячеек и берём N/M независимых точек в каждой. Поскольку в ячейке не может быть больше N/M точек, они отрицательно коррелированы.

Рассмотрим оценщик на N стратифицированных выборках. Группировка по регионам переписывает его как сумму независимых оценок по каждой области Ωm, каждая с N/M выборками. По линейности матожидания такой оценщик несмещён: сумма интегралов по поддоменам равна интегралу по всему домену.

На примере с разбиением круга на M=64 областей получаем заметно меньшую ошибку, особенно при малых N. Точный выигрыш зависит от поведения функции f, но можно показать, что стратификация как минимум не увеличивает дисперсию.

Зачем стратифицировать?

Сравним равномерный N-выборочный оценщик по всему Ω с стратифицированным, равномерно сэмплирующим два поддомена A и B. Далее показывается, когда и почему стратификация уменьшает дисперсию за счёт контроля вариации внутри страт и отрицательной корреляции между ними.

by zote • 03 августа 2025 г. в 20:53 • 123 points

ОригиналHN

#monte-carlo#quasi-monte-carlo#sampling#probability-distributions#random-number-generation#statistics

Комментарии (9)

  • Участники отметили, что слабый PRNG и фиксированный seed в Монте-Карло часто полезны: ускоряют расчёты и обеспечивают воспроизводимость для отладки.
  • Однако @clickety_clack возражает: фиксированный seed создаёт иллюзию точности, а менеджеры должны видеть влияние стандартной ошибки.
  • Обсудили, что для 500 акций учесть все ковариации практически невозможно из-за сложности взаимодействий.
  • Спор о скорости CSPRNG: один считает их дорогими, другой приводит пример быстрого алгоритма Randen.
  • Рекомендовали курс Steve Bruntonа как более доступное введение в вероятность и статистику.

Writing a good design document (grantslatton.com) 🔥 Горячее

by kiyanwang • 03 августа 2025 г. в 20:21 • 569 points

ОригиналHN

Комментарии (142)

The structure I prefer for a technical design document is like a three-layer onion.The first layer is the problem statement, goals, non-goals, and requirements, both functional and non-functional. The next layer is the functional specification, which describes precisely how the s

Комментарии (52)

I’m not sure this title is completely correct“The researchers identified the type of water loss on land, and for the first time, found that 68% came from groundwater alone — contributing more to sea level rise than glaciers and ice caps on land.”They are saying the leading loss o

The Dollar Is Dead (mathmeetsmoney.substack.com) 🔥 Горячее 💬 Длинная дискуссия

by nhp_fermi • 03 августа 2025 г. в 19:48 • 258 points

ОригиналHN

#finance#economics

Комментарии (351)

The country is getting forced by markets into realizing pain for overspending, and only congress can manage this pain. Manage the pain, not remove it is key here. Manage it.Conrgess is totally inept and ridiculously politicized, so it's unlikely they will do anything except make

Modern Node.js Patterns (kashw1n.com) 🔥 Горячее 💬 Длинная дискуссия

by eustoria • 03 августа 2025 г. в 19:16 • 852 points

ОригиналHN

#nodejs#javascript

Комментарии (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

Comptime.ts: compile-time expressions for TypeScript (comptime.js.org)

Простой компилятор TypeScript для вычисления выражений с пометкой comptime на этапе сборки. Полезно для переноса вычислений из рантайма в компиляцию. Вдохновлено Bun macros и Zig comptime.

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

Содержание

  • Что такое comptime.ts?
  • Примеры: 1) простая сумма; 2) CSS без рантайма; 3) константы во время сборки
  • Установка
  • Использование: Vite, Bun, CLI, API
  • Принудительная оценка и промисы, отказ от «вирусности»
  • Запуск кода после comptime, как работает, ограничения, практики, отладка, поддержка, лицензия

Что это comptime.ts вычисляет выражения при компиляции, сокращая работу в рантайме.

Примеры

  1. Простая сумма import { sum } from "./sum.ts" with { type: "comptime" }; console.log(sum(1, 2)); // => console.log(3);

  2. Emotion CSS без рантайма import { css } from "@emotion/css" with { type: "comptime" }; const style = csscolor: red; font-size: 16px;; div({ class: style }); // => const style = "css-x2wxma"; div({ class: style });

Примечание: импорт @emotion/css удаляется. Стили нужно вывести отдельно (после comptime или плагином бандлера).

  1. Константы на этапе сборки import { ms } from "ms" with { type: "comptime" }; const HOUR = ms("1 hour"); // => const HOUR = 3600000;

Поддерживаются многие выражения (включая индексацию и импортированные константы), результат должен быть сериализуем в JSON. Импорты с type: "comptime" удаляются; лишнее убирает ваш бандлер.

Установка bun add comptime.ts pnpm add comptime.ts npm install comptime.ts

Использование

  • Vite: import { comptime } from "comptime.ts/vite"; export default defineConfig({ plugins: [comptime()] });

Только в прод-сборке, если поведение совпадает с рантаймом: export default defineConfig({ build: { rollupOptions: { plugins: [comptime()] } } });

  • Bun: import { comptime } from "comptime.ts/bun"; await Bun.build({ entrypoints: ["./index.ts"], ou ... })

by excalo • 03 августа 2025 г. в 19:11 • 139 points

ОригиналHN

#typescript#compilation#vite#bun#zig#macros

Комментарии (30)

  • Обсуждение крутится вокруг идеи “comptime”/макросов в JS: часть хочет Rust‑подобные макросы и proc‑макросы (вплоть до JSX как jsx! или вообще писать фронт на Rust/wasm), другая сторона категорически против макросов в TS/JS.
  • Есть путаница в терминах: “макросы” vs “comptime”; участники критикуют переиспользование терминов и вспоминают неудачный опыт sweet.js.
  • Практические вопросы: можно ли делать агрессивный dead‑code elimination через if (comptime …) как в C препроцессоре? Ответ: само comptime подставит true/false, но для выкидывания веток нужен отдельный шаг минификатора/бандлера (Vite/Bun поддержат).
  • Дискуссия об импорте with { type: 'comptime' }: одни считают это неправильным использованием атрибута type (ожидается соответствие MIME), другие указывают, что спецификация оставляет семантику type открытой.
  • Обсуждают границы возможности: поддержка типов/генериков на уровне comptime (как в Zig) пока ограничена; возврат именованных функций и сложные случаи с замыканиями не поддерживаются из‑за требований к гарантиям и сохранению функций между процессами.
  • Альтернативы: настроить сборку для JSX без макросов; использовать библиотеки вроде lite-jsx; для Rust‑фронта рекомендуют Dioxus/Leptos; спорят о реальной применимости wasm и памяти/управления ей в вебе.
  • Применимость: идея удобна для предсборки (например, markdown) и константной подстановки, но не заменяет полноценных препроцессоров/макросистем уровня Rust/Zig.

UN report finds UN reports are not widely read (reuters.com) 🔥 Горячее

by anjneymidha • 03 августа 2025 г. в 16:49 • 352 points

ОригиналHN

Комментарии (142)

https://archive.md/JVG8r This is an institutional reflection of the individual tendency to talk about problems rather than solving them. Or, an important variant, where the urge to help those in need is expressed as directing them to "appropriate resources", which are also servic