The Weird Concept of Branchless Programming
Безусловное программирование — это подход, при котором условные конструкции заменяются битовыми и арифметическими операциями для исключения ветвлений. Это позволяет избежать дорогостоящих промахов предсказателя переходов в процессоре, которые могут стоить 15–20 циклов при работе с непредсказуемыми данными, например, в циклах или при обработке ввода.
Основная идея заключается в замене условий на манипуляции с битами. Например, вычисление модуля числа без ветвления: с помощью арифметического сдвига вправо на 31 бит получается маска (0 для неотрицательных, -1 для отрицательных), затем применяются сложение и XOR для инверсии знака. Аналогично, функция clamp, ограничивающая значение диапазоном, реализуется через вычитание и побитовое И с маской, что исключает проверки if.
Такой подход не только ускоряет выполнение за счёт линейного потока инструкций, но и повышает детерминированность, что критично в криптографии и высокопроизводительных вычислениях. Хотя код становится менее читаемым, выигрыш в производительности оправдывает его использование в узких местах.
Комментарии (57)
- Обсуждаются техники и преимущества branchless-программирования для оптимизации кода и избежания штрафов за предсказание переходов.
- Отмечается, что современные компиляторы и процессоры с продвинутым предсказанием ветвлений часто эффективно преобразуют условные конструкции в безветвевые (например, с помощью cmov).
- Подчеркивается применение branchless-подходов в криптографии для защиты от атак по времени, а также их критическая важность в GPU-программировании.
- Упоминаются потенциальные проблемы с неопределенным поведением (UB) и необходимость проверки ассемблерного вывода компилятора при низкоуровневой оптимизации.
- Затрагиваются исторические и современные особенности архитектур процессоров (x86, ARM, RISC-V) в контексте выполнения условных операций.
Why I'm not rushing to take sides in the RubyGems fiasco
Автор выражает сомнения в однозначности ситуации вокруг конфликта в RubyGems, подчёркивая, что публичная дискуссия сильно упрощена и сводится к нарративу «альтруисты против корпораций», хотя реальность сложнее. Он указывает на давний неразрешённый конфликт между сторонами, где одна активно высказывается публично, а другая хранит молчание, что оставляет рядовых разработчиков в неведении и тревоге.
Ключевая проблема — запутанное управление экосистемой Ruby, разделённое между разными группами: разработчиками языка Ruby, инструментами RubyGems/Bundler и хостингом RubyGems.org. Исторически эти части развивались отдельно, а recentние слияния (например, поглощение Ruby Together Ruby Central в 2022 году) усугубили неразбериху в правах доступа и ответственности, что теперь вылилось в публичный кризис доверия.
Комментарии (68)
- Обсуждение касается конфликта вокруг RubyGems и Ruby Central, где ключевой фигурой является André Arko, чье поведение и профессиональные действия ставятся под сомнение.
- Участники отмечают предвзятость и неоднозначность представленных точек зрения, включая мнение Джастина Сёрлса, который, хотя и считается авторитетом, может быть необъективен из-за связей с Shopify.
- Поднимается вопрос финансирования open-source: должна ли работа оплачиваться пропорционально вкладу, и как действия спонсоров (как в случае с Shopify) влияют на проекты.
- Обсуждаются юридические и этические аспекты, включая обвинения в плагиате кода и потенциальные судебные разбирательства, что заставляет многих участников избегать публичных комментариев.
- В целом, дискуссия сводится к необходимости прозрачности и добросовестности со всех сторон для разрешения конфликта и обеспечения устойчивости open-source проектов.
The AI coding trap 🔥 Горячее 💬 Длинная дискуссия
ИИ-кодинг переворачивает традиционный процесс разработки: вместо долгого обдумывания задачи и последующего написания кода разработчики теперь генерируют код мгновенно с помощью ИИ, а затем тратят время на его осмысление и интеграцию в сложные системы. Это создаёт парадокс — хотя скорость написания кода растёт в разы, общая продуктивность в доставке работающего ПО увеличивается лишь на ~10%, так как основное время уходит на тестирование, исправление ошибок и документацию.
Проблема напоминает «дилемму техлида»: опытные разработчики, как и ИИ, могут быстро решать сложные задачи, но если они забирают всю сложную работу себе, команда становится хрупкой и зависимой. Ключ — в балансе между делегированием и контролем, чтобы избежать выгорания и обеспечить устойчивое развитие команды. ИИ не заменяет глубокого понимания системы, а лишь смещает фокус с создания на осмысление.
Комментарии (377)
- Использование ИИ в программировании требует тщательного планирования и проверки, аналогично традиционной разработке, иначе код становится нестабильным.
- ИИ эффективен для быстрого создания прототипов и решения рутинных задач (80% работы), но финальную доработку и интеграцию (20%) выполняет человек.
- Существует риск снижения глубины понимания кода и качества обучения новичков при чрезмерном reliance на ИИ-генерацию.
- Инструменты ИИ наиболее полезны как "сверхопытные pair-программисты" для обсуждения идей, рефакторинга и поиска решений, а не как автономные кодогенераторы.
- Текущие ИИ-агенты не заменяют junior-разработчиков, так как не способны к обучению, уточнению требований и обладают ограниченным контекстом системы.
Scm2wasm: A Scheme to WASM compiler in 600 lines of C, making use of WASM GC
Разработан экспериментальный компилятор Scheme в WebAssembly, который автор сам называет «очень плохим» и минималистичным. Он написан преимущественно на C (97.2%) и способен преобразовывать код Scheme в валидный WASM-модуль, который затем можно запускать через Wasmtime.
Процесс включает компиляцию исходного кода, валидацию и дизассемблирование выходного файла. Пример демонстрирует выполнение простой программы, возвращающей число 30. Проект служит учебным примером, показывающим базовые принципы трансляции функционального языка в низкоуровневый бинарный формат.
Комментарии (23)
- Упомянуты проекты на WebAssembly: минимальный OOP рантайм, Forth, компилятор в твите и книга о WebAssembly.
- Обсуждается компилятор Scheme в WebAssembly (Guile Hoot), его особенности и поддержка WASM-GC.
- Затронуты технические вопросы: возможность использования как интерпретатора, поддержка tail call и call/cc.
- Отмечается важность самодостаточных инструментов и независимости от платформ.
- Поднята тема различий между Asm.js и WebAssembly в контексте исторического развития.
NJ theme park puts animatronic dinosaurs on Facebook Marketplace
Тематический парк Field Station: Dinosaurs в Нью-Джерси закрывается в ноябре и выставил своих аниматронных динозавров на продажу через Facebook Marketplace. Цены варьируются от $500 до $2900 за экземпляр — например, спинозавр длиной 52 фута стоит $2900, а анкилозавр — $2100. Некоторые модели оснащены голосовыми модулями и ограниченной подвижностью.
Покупатели должны самостоятельно организовать демонтаж и транспортировку гигантских фигур. Парк, работавший с 2012 года, не смог остаться на плаву даже после участия в реалити-шоу о помощи бизнеса. До закрытия запланированы специальные мероприятия, включая ночные экскурсии и день посещения с собаками.
Комментарии (51)
- Пользователи обсуждают продажу и покупку аниматронных динозавров, отмечая выгодные предложения и высокую стоимость доставки.
- Упоминаются различные тематические парки и достопримечательности с динозаврами по всему миру, а также личный опыт их посещения и обслуживания.
- Обсуждается исторический контекст и ностальгия по старым аттракционам, таким как "Lost World" или динозавры из Pacific Science Center.
- Затрагиваются практические сложности владения большими конструкциями, включая реакцию соседей или ТСЖ и логистику.
- Поднимается вопрос о реалистичности моделей, в частности отсутствии перьев у некоторых видов, и предлагаются альтернативные способы их приобретения или создания.
What’s New in PostgreSQL 18 – a Developer’s Perspective
PostgreSQL 18 добавляет нативную поддержку UUID v7 через функцию uuidv7(), что позволяет использовать UUID в качестве первичных ключей без потери производительности благодаря их последовательной природе. Это устраняет необходимость в сторонних расширениях или реализации генерации на уровне приложения.
Также введены VIRTUAL generated columns — теперь вычисляемые столбцы по умолчанию генерируются при чтении, а не записи, что экономит место на диске и избегает перезаписи таблиц при их добавлении. Эти изменения упрощают разработку, делая работу с базой данных более гибкой и эффективной.
Комментарии (17)
- Участники обсуждают преимущества вычисляемых столбцов в базах данных, отмечая их полезность для миграций схем и единообразия логики между разными клиентами.
- Поднимается вопрос о производительности: выполнение вычислений на стороне БД может быть эффективнее, чем в клиентских приложениях, особенно при использовании индексов.
- Высказываются опасения о возможном злоупотреблении этой функцией и усложнении схемы, но признаётся, что иногда это единственное решение.
- Упоминается конкретный пример использования для преобразования временных зон, чтобы упростить запросы.
- Обсуждение начинается с упоминания функции
pg_get_acl()и сложности составления запросов для проверки привилегий.
She Sent Her iPhone to Apple. Repair Techs Uploaded Her Nudes to Facebook (2021)
Женщина из Орегона отправила iPhone в Apple на ремонт, а сотрудники подрядчика компании выложили её обнажённые фото и видео в её же Facebook. Инцидент произошёл в 2016 году, но стал известен лишь сейчас из-за судебного разбирательства между Apple, ремонтной компанией Pegatron и страховщиком. Apple выплатила пострадавшей многомиллионное возмещение за вторжение в частную жизнь и моральный ущерб.
Этот случай демонстрирует, что даже при жёстком контроле Apple над ремонтной инфраструкторией гарантировать конфиденциальность невозможно. Компания годами лоббирует ограничение доступа к ремонту, аргументируя это рисками для безопасности, но здесь утечка произошла внутри её собственной цепочки. Пользователи часто вынуждены отправлять устройства в непрозрачные сервисные центры, лишаясь контроля над личными данными. Открытый рынок ремонта позволил бы людям выбирать проверенных мастеров или чинить устройства самостоятельно.
Комментарии (50)
- Пользователи возмущены требованием пароля для ремонта и рисками утечки конфиденциальных данных
- Подчеркивается необходимость права выбора сервиса и возможности самостоятельного ремонта
- Отмечается системная проблема хищения личных данных в индустрии и призывы к строгой ответственности
- Предлагаются меры предосторожности: сброс к заводским настройкам или отказ передавать пароль
- Обсуждаются технические причины требования пароля для тестирования устройств после ремонта
Комментарии (112)
- Предложены инструменты для конвертации HTML в PDF: браузерные решения (headless Chrome, Puppeteer, Playwright), open-source (WeasyPrint, Gotenberg, Pandoc) и коммерческие (Prince XML).
- Обсуждаются нюансы: важность настройки print CSS для корректной пагинации, возможность обхода браузера через прямую генерацию PDF (Apache PDFBox, Typst).
- Упомянуты альтернативы: архивация страниц в единый HTML-файл (SingleFile), конвертация из Markdown (KeenWrite), обратная задача — PDF в HTML для доступности.
- Отмечена надежность браузерного подхода для сложных версток, но также ресурсоемкость и сложность поддержки такого решения.
- WeasyPrint получил несколько положительных отзывов за стабильность и простоту интеграции, особенно в Django-средах.
Show HN: Toolbrew – Free little tools without signups or ads
Библиотека toolbrew предлагает набор чистых и полезных инструментов для разработчиков, фокусируясь на удобстве использования и минималистичном дизайне. Включает утилиты для работы с текстом, данными, кодом и веб-разработкой, такие как конвертеры, генераторы и анализаторы. Все инструменты открыты для модификации и интеграции в проекты.
Особенность — отсутствие лишних зависимостей и простота внедрения, что ускоряет рабочий процесс. Например, можно быстро форматировать JSON, шифровать строки или проверять валидность кода. Практический вывод: снижает потребность в поиске разрозненных сервисов, экономя время.
Комментарии (53)
- Пользователи обсуждают полезные онлайн-инструменты (CyberChef, easyinvoicepdf, cobalt.tools, simonwillison.net) и делятся своими проектами.
- Поднимаются вопросы безопасности и доверия к сторонним инструментам, а также желание видеть больше информации об их надежности.
- Предлагаются идеи для новых функций: улучшение мобильного интерфейса, добавление поиска, агрегатора инструментов, генератора QR-кодов без трекеров.
- Обсуждаются конкретные технические нужды: мерж PDF, проверка ссылок, генерация SSH-ключей, сетевые утилиты.
- Отмечается проблема с YouTube-загрузчиком и predatory-моделями монетизации некоторых сервисов (например, QR-кодов).
A replica of Citizen Quartz watch based on Harel's paper introducing statecharts
Статья рассказывает о Citizen Watch — японской компании, известной производством высококачественных часов. Она подчёркивает инновационный подход бренда, включая использование экологичных технологий, таких как световые батареи Eco-Drive, которые заряжаются от любого источника света. Это делает часы удобными и долговечными, устраняя необходимость в замене батареек.
Также упоминается приверженность компании устойчивому развитию и корпоративной социальной ответственности. Citizen активно участвует в экологических инициативах и поддерживает глобальные проекты, что укрепляет её репутацию не только как производителя точных приборов времени, но и как социально ориентированного бренда.
Комментарии (16)
- Участники делятся опытом создания подобных проектов на XState и обсуждают преимущества визуализации состояний через Stately Editor.
- Рекомендуется классическая работа Харела по Statecharts как полезное расширение для проектирования систем на основе state machine.
- Отмечается эстетичный дизайн страницы и поднимаются технические вопросы, такие как быстрая разрядка батареи и неточное отображение её уровня.
- Обсуждаются сложности и разногласия в современных реализациях statecharts, а также потенциальные улучшения, например, добавление новых типов guard-условий.
- Высказываются идеи о создании графического редактора statecharts, реализованного самими statecharts.