Pico CSS – Minimal CSS Framework for Semantic HTML 🔥 Горячее
Pico CSS — микро-фреймворк, который делает красивый интерфейс из обычного HTML без классов.
Подключил — и готово: адаптив, тёмная/светлая тема, 0 JS, 15 КБ.
<form><input type=email placeholder=Email></form>
- 130 CSS-переменных для настройки
- 20 цветовых тем, 30 компонентов
- Вес ≈ 10 КБ, без зависимостей
Комментарии (86)
- Pico CSS — фаворит для быстрых сайтов и прототипов: «включаешь — и красиво», без классов.
- Пользователи хвалят тёмную тему, accessibility и переменные, но жалуются на 50+ КБ, «огромные» контролы и отсутствие компонентов (табы).
- Кто-то берёт Pico как анти-Tailwind: семантичный HTML, нет «супа классов», легко править.
- Для LLM-флоу советуют засунуть доку Pico целиком в контекст, чтобы модель не тянула Tailwind.
- Альтернативы: Neat (ещё меньше), Newcss, Beercss; обзоры на cssbed.com и dropin-minimal-css.
Everything from 1991 Radio Shack ad I now do with my phone (2014)
- В рекламе Radio Shack 1991 г. 15 гаджетов; 13 из них теперь в телефоне.
- Плеер, часы, калькулятор, камкордер, телефон, CD-плеер, сканер, диктофон и др. — всё заменил iPhone.
- Суммарная цена тогда: $3054 (~$5100 сегодня).
- Не заменил: радар-детектор и колонка с 15-дюймовым сабвуфером.
Комментарии (148)
- Участники спорят, что смартфон не полностью заменил CB-рации, радар-детекторы и сканеры: «функции есть, но дух и удобство — нет».
- CB-живее всех живых: продаётся в крупных магазинах, разрешена за рулём, по-прежнему спасает вдали от сетей.
- Радар-детектор формально не нужен — Waze и онлайн-радары делают ту же работу, но железный «бип» никто не отменял.
- Сканеры тоже не умерли: любители слушают авиацию, спасателей, гонки; просто теперь это цифровые P25-коробки вместо 10-канального «Realistic».
- Телефон убил рынок «подарочных гаджетов» — вместо $20-игрушек теперь дарят $5-приложения или $500-аксессуары.
- Итог: всё слито в одну коробку, но энтузиасты всё равно покупают отдельные устройства — ради звука, ради хобби, ради свободы.
No Silver Bullet: Essence and Accidents of Software Engineering (1986) [pdf]
Содержимое PDF-файла представляет собой бинарные данные, которые нельзя напрямую интерпретировать как текст. В представленном фрагменте — это служебные структуры PDF (объекты, потоки, метаданные), а не читаемый текст документа.
Перевод и сокращение невозможны, поскольку отсутствует осмысленный текстовый контент.
Комментарии (24)
- Брукс по-прежнему прав: основная трудность — «существенная сложность» предмета, а не инструменты.
- За 40 лет не появилось ни одного «серебряного пули», дающего 10× прирост продуктивности.
- Экосистемы (Python, AWS и др.) снизили accidental complexity, но добавили новую через зависимости и «слоёный пирог».
- LLM и ИИ ускоряют рутину, но не решают существенную сложность и не умеют формулировать требования.
- Культура SWE изменилась: скорость вытеснила ответственность, код пишут «на скорую руку» и быстро забывают.
Clojure's Solutions to the Expression Problem
Clojure и «проблема выражений»
- Проблема: добавлять новые типы данных и новые операции без перекомпиляции всего кода и без нарушения существующих вызовов.
- ООП-языки решают лишь половину: легко новый класс, трудно новый метод.
- Функциональные языки наоборот: легко новая функция, трудно новый вариант данных.
Как Clojure объединяет лучшее
-
Протоколы
- Описывают набор методов без привязки к типу.
- Реализуются для любого существующего класса поздно, «извне».
- Компилируются в обычный Java-интерфейс, быстрый вызов.
-
Мультиметоды
- Выбор реализации по произвольной функции-диспетчеру (тип, значение, метаданные).
- Позволяют «разрезать» иерархию по другим осям, не только по классу.
-
Records и types
defrecordсоздает неизменяемую структуру с заранее известными полями и автоматическим доступом по ключам как к карте.deftypeдаёт полный контроль, поля хранятся примитивно, без лишних обёрток.
-
reify
- «Анонимный класс» на Clojure: создаёт объект, реализующий нужные протоколы/интерфейсы, без отдельного файла.
Практический итог
- Новый тип →
defrecord/deftype+ реализация нужных протоколов. - Новая операция → добавляем метод в протокол и реализуем для всех существующих типов.
- Старый клиентский код не трогается, компиляция не требуется.
Комментарии (16)
- Протоколы в Clojure теперь умеют диспатчиться по метаданным, а не только по типу.
- Участники скучают по временам, когда посты о продуктивности были про REPL, функциональность, композабельность и иммутабельность.
- Поделились ссылкой на демонстрацию решения «expression problem» в Clojure.
- Люди недооценивают готовые решения вроде Datomic и вместо этого пишут свои костыли.
- Один из участников вспомнил, как в 2013–15 писал тесты на Clojure и расширял фреймворк для Selenium.
How to make metals from Martian dirt
- Учёные Суинберна и CSIRO впервые получили железо из марсианского реголита при давлении и составе атмосферы Красной планеты.
- Процесс: 1000 °С → металлическое Fe, 1400 °С → жидкий сплав Fe-Si; шлак отделяется как на Земле.
- Использовали имитатор грунта кратера Гейла; в качестве восстановителя — CO₂ из атмосферы.
- Цель: добывать металл на месте (ISRU), чтобы не возить тонны с Земли (1 т груза ≈ 243 млн USD).
- Следующий шаг — «нулевые отходы»: шлак пойдёт на стройматериалы, сплавы — на корпуса домов и технику.
Комментарии (85)
- Учёные добились выплавки железа из марсианского реголита без углерода; остаётся вопрос, где взять 1400 °C на Марсе.
- Основные кандидаты — солнечные панели + батареи или компактный ядерный реактор (MSR), но масштаб и логистика пока неясны.
- Amazon уже продаёт «марсианский» реголит-имитатор, так что эксперименты можно начинать в гараже.
- Добыча на астероидах теоретически богаче (платина), но Δv и возврат убивают экономику; марсианское железо — проще и дешевле.
- ISRU (местное сырьё) — ключ к выживанию на Луне/Марсе; станции в вакууме такой роскоши не имеют.
- Споры о радиации и безопасности ЯТТ топлива сведены к «опаснее не реактор, а сама космическая радиация».
Keeping secrets out of logs (2024)
Коротко:
Секреты в логах — это не «одним фиксом» решить нельзя. Ни 80/20, ни чудо-инструмента нет. Есть 10 «свинцовых пуль» — несовершенных, но при правильной раскладке работают.
Почему течёт
| Причина | Пример |
|---|---|
| Прямой логинг | log.info(user) вместо log.info(user.id) |
| «Мусорные» дампы | logger.debug(req.headers) |
| Конфиги | debug=true выводит весь env |
| Зашитые секреты | JSON-поле password внутри структуры |
| Телеметрия | APM-сборщик хватает всё подряд |
| Пользователь | Вводит пароль в поле «имя» |
10 «пуль»
-
Архитектура данных
Разделяем «чувствительное» и «остальное» на уровне схемы; в логи идёт только последнее. -
Трансформации
Сериализуем черезsanitize()илиtoLog()— явно выбрасываем секретные поля. -
Domain-primitives
- Компиляция:
SecretStringне реализуетDisplay. - Рантайм:
Redactableинтерфейс,toString() → "***".
- Компиляция:
-
Read-once
Пароль читается 1 раз, дальше объект пустой — логировать нечего. -
Taint-tracking
Помечаем вход как «грязный»; если доходит до логгера — exception. Дорого, но точно. -
Форматтеры логов
Пишем свойLayout/Encoder, который режет заранее заданные ключи рекурсивно. -
Unit-тесты
ПроверяемassertThat(log).doesNotContain(secret); запускаем на каждый PR. -
Сканеры
Regex-правила + entropy-фильтры в CI и в production-потоке. Сэмплируем, чтобы не умереть от CPU. -
Pre-processors
Vector / Logstash / Cribl вырезают поля ещё до попадания в Elasticsearch. -
Люди
Code-review чек-лист: «есть ли тут .toString / JSON.stringify / printf без фильтров?».
Стратегия
- Фундамент: классификация данных, единый словарь «что считать секретом».
- Карта потока: от источника до хранилища логов.
- Контрольные точки: валидация, sanitize, redact.
- Защита в глубину: 2-3 слоя из списка выше.
- План на инцидент: ротация, оповещение, forensics.
Итог:
Нет волшебства — только дисциплина и много мелких фиксов. Начните с 2-3 «пуль», которые дешёвле всего у вас, и двигайтесь дальше.
Комментарии (42)
- Отличный пост: чёткий разбор проблемы «секреты в логах» и конкретные техники борьбы.
- Основные идеи: taint-tracking, in-band метки, GuardedString/SecureString, доменные примитивы
new Secret(...). - Сложности: стектрейсы, JSON, core-dumps, динамически создаваемые секреты, человеческий фактор.
- Защита в глубину: маскировать, ограничивать доступ к логам, не писать всё подряд, валидировать маски (Kingfisher).
The MacBook has a sensor that knows the exact angle of the screen hinge 🔥 Горячее 💬 Длинная дискуссия
JavaScript отключён.
Включите его или смените браузер.
Проблема может быть в расширениях — отключите их и обновите страницу.
Комментарии (470)
- В MacBook есть датчик угла крышки; он сериализован к материнке, и после замены требует калибровки у авторизованного сервиса.
- Apple использует его для Desk View (коррекция перспективы камеры), а также, возможно, для настройки звука, яркости и диагностики.
- На базе датчика уже сделали «терамен», «протрактор», гироскопические игры и конкурс «самый тупой регулятор громкости».
- В Linux датчик тоже есть (драйвер intel-hinge), но не всегда работает; данные лежат в
/sys/bus/iio/devices/. - Пользователи жалуются, что датчик ломается, вызывает разрядку в сумке и может быть следом «держи ноутбук неправильно».
Комментарии (86)
- Участники спорят: блокировки Facebook/TikTok в Непале — это борьба с вредом соцсетей или удар по свободе слова.
- Западные комментаторы упрекают азиатские власти в авторитаризме; местные отвечают: «не нам учиться демократии у стран, где Fox News = свобода».
- Непал требует у платформ регистрации и локального представителя; игнорировавшие правила заблокированы, а не «все подряд».
- Мнения разделились: кто-то радуется «цифровому детоксу», кто-то боится прецедента цензуры и слежки.
- Общий вывод: соцсети одновременно и «площадка свободы», и «инструмент пропаганды»; решение о блокировке зависит от контекста, но всегда рискует стать политическим оружием.
SQLite's Use of Tcl (2017)
SQLite начинался как TCL-расширение и до сих пор носит его отпечаток: гибкая типизация, синтаксис $var в SQL и единственный адаптер внутри ядра — tclsqlite.c. Сегодня ядро на чистом C и работает без TCL, но вся разработка и тестирование держится на нём: 90 % кода тестов на TCL, генерация сборок, документация и релизы полностью автоматизированы скриптами makefile.tcl.
Комментарии (29)
- Команда SQLite общается в приватном чате на собственном Tcl/Tk-скрипте (~1000 строк), который работает и как клиент, и как сервер.
- С 2021 г. основное общение перешло в встроенный Fossil-чат: он E2E-шифрован и доступен из любого браузера.
- SQLite сохраняет Tcl-наследие: sqlite3_analyzer — это тоже Tcl-программа, упакованная в С-обёртку.
- Подстановка
$uidв SQL безопасна: токен распознаётся парсером SQLite, а не «eval»-ится Tcl. - Участники защищают выбор Tcl: он компактен, стабилен и удобно встраивается в С, что важнее модных языков.
Delayed Security Patches for AOSP (Android Open Source Project)
- JS отключён. Включите его или смените браузер.
- Расширения, блокирующие трекинг, могут мешать — отключите их и обновите страницу.
Комментарии (83)
- Заголовок на HN неверен: задержка касается всех Android, не только AOSP; security-патчи для 13–15 вышли 2 сентября.
- Google всё чаще прячет код в GMS и свои приложения, превращая AOSP в «заготовку» и снижая пользу для GrapheneOS и прочих форков.
- Пользователи обсуждают разделение Android и Google: считают, что без регулирования Google окончательно убьёт открытую часть экосистемы.
- Альтернативы вроде PostmarketOS и «линуксофонов» пока сыроваты: не хватает VoLTE, камеры, GPU и людей для поддержки.