Author Archives: himself

“Заводной апельсин”

Прочёл "Заводной апельсин", книга гораздо хуже, чем я представлял по косвенным признакам, и хуже, чем кажется вначале. Главный герой – малолетний преступник. Большая часть впечатления от книги это подробные описания его избиений, изнасилований и убийств в первой половине. Этот шок-контент создаёт надежду, что у автора, может быть, есть какая-то цель, показать по контрасту наказание героя, или раскаяние, или неспособность раскаяния – хоть что-нибудь.
Будет ровно два шага развития.
Героя подвергнут вместо тюрьмы гуманному методу перевоспитания, где картины насилия будут показывать под лекарственными приступами тошноты, чтобы привить отторжение. Герой назовёт это зверством (ладно, он не объективен), а местный священник будет страдать, пить с горя, и скажет, что нельзя отнимать у человека право выбора, это хуже, чем – ну, видимо, чем когда герой убивает, грабит и насилует. У автора крыша поехала? Где тут хоть какие-то сомнения, не то, что Моральный Вопрос?
Позже герой вылечится (т.е. отменит лечение), но драться ему расхочется, зато ему привидится сыночек и жёнушка, и он скажет, что повзрослел, охохонюшки хохо, а вот дети его снова будут уродами, и их дети тоже, такова юность, сэ ля ви.

Серьёзно, это всё. Никакого итога, тейк "как стыдно отнимать у убийцы право выбирать убийство" + рассуждения о юности. А, ну и главному герою нравилась классическая музыка. Мол, склонные ко злу не всегда примитивны душой. Но и это вышло ни к чему, нравилась и нравилась.

Где-то на половине книги мне стало казаться, что автор чувствует не отвращение к своему герою, а какие-то гораздо более снисходительные чувства.

О нежелании работать

Кто-то пишет: She's studying to have at most 3 hours of free time a day.

Но she's studying to have something to eat! To have somewhere to live. Еда и жильё не достаются бесплатно. В дикие времена добывать еду было наверняка сложнее. И всё же отчаяние от работы – настоящее и чисто современное. Дикий человек мог быть несчастен от холода, голода, от болезни и страха, но не от безнадёжной необходимости проводить жизнь не так, как хочешь. Необходимость бороться за еду и спасать шкуру воспринималась наверняка естественно! С энтузиазмом!

Почему? Потому, что хотелось есть. Когда исполняешь собственные желания, сожалений нет. Ура, я поймаю зверя и наконец-то поем. Готов сидеть часами в западне, предвкушая жратву.

Сейчас эта цепочка разорвана. Хочется есть – купил в магазине еду. От этого до необходимости работать длинный переход. Мотор собственных желаний что-то вращает, но пар вырывается раньше: а может, лучше я просто поем? А может, вкусняшки закажу? А может, передохну, а работать потом? А денег одолжу, а потом отдам? Всё это исполняет желания быстрее и надёжнее, чем куда-то тащиться в семь утра.

Как исправить разорванную цепочку? Наверное, для начала можно просто обращать на неё внимание. Вспоминать, что работаешь по своей воле, ради денег, ради мечты поехать, купить, попробовать. Не давать себе (или другим, если это воспитание) исполнять мелкие желания в долг или "за усилия", но позволять их в награду за результат.
Можно выбирать работу, где поработаешь больше – получишь больше, но нужно прилагать эти усилия, чтобы привыкнуть, что вложения превращаются в желаемое. Геймификация работы. С этой стороны полезно, что общество подсовывает всё более дорогие стимулы и тренирует их желать. Желать чего-нибудь – полезно.

О гирляндах

Стал чинить дешёвую погасшую гирлянду, расколупал пластмассовый крошащийся игрушечный контроллер и потыкал тестером.

С большой осторожностью потыкал вход, и нашёл там 220 вольт, как и ждал.

Гораздо спокойнее потыкал выход, ожидая найти там 12/24В, и нашёл 340В.

MOTHER OF GOD

Похоже, в дешёвых гирляндах и лампах напряжение просто повышается до такого, при котором по цепи пойдёт ток. 2.5-3.5 вольта на диод, умножить на число диодов.
Так что эти тоненькие паутинки-провода вполне опасны. Если не ошибаюсь, амперов там достаточно.

Inapt

Переговоры с apt:
– Откатить один пакет на старую версию? 27 пакетов будут УДАЛЕНЫ, включая xorg.
aptitude
– Есть решение, где мы удалим 26 пакетов
– Нет
– Есть решение, где мы удалим 25 пакетов, установим 2 и нарушим 2 правила
– Нет
(30 таких решений спустя)
– Кстати говоря, есть решение, где мы откатим 8 пакетов на старые версии и всё будет хорошо. Годится?
– Господи, конечно, годится.
– Ну хорошо, вызываю apt
apt:
– Будут УДАЛЕНЫ 260 пакетов, продолжить?

SSD и HDD

Считается, что SSD надёжнее HDD, но это как сказать. Возможно, SSD отказывают чуть реже, хотя и это вопрос. Но если полетел HDD, обычно вы можете восстановить что-нибудь, а нередко и большую часть диска, кроме нескольких битых секторов или поцарапанных участков.
Несмотря на весь пиетет обращения с ними – беречь от электростатики, защищать от пыли, не нарушать вакуум внутри – они довольно крепкие, если речь о сохранении данных в целом, а не каждого байта до последнего. С одного диска у меня начали сыпаться сектора, я его заменил, а диск убрал в шкаф. Там он лежал несколько лет, я использовал его, как подставку для кофе, раскручивал и смотрел на пластины, и так далее. Когда я ради интереса включил его, содержимое ещё можно было прочесть.

SSD работают хорошо, а потом однажды не включаются и всё. Данные потеряны окончательно. Предупреждения не будет. Шансов на восстановление нет. На HDD полетел контроллер? Открутил, прикрутил такой же, работает. Полетели головки? В довольно-таки средней лабаратории их могут аккуратно заменить, если данные важны. У SSD почти неважно, что полетело, починить нельзя ничего.

Поэтому с SSD бэкапы ещё важнее, чем с HDD!

Ещё особенности:
1. Если вы скопируете один диск SSD на другой посекторно, не применяя никаких хитрых "filesystem-aware cloning", то ваш второй диск с точки зрения SSD будет полностью занят (даже если на нём много свободного места). Для SSD важно знать, какие сектора не используются. Когда вы копируете все сектора, в том числе незанятые, второй SSD не знает, какие из них какие. Нужно с помощью операционной системы сделать второму диску defrag /Retrim.
2. Команда TRIM (FSCTL_SET_ZERO_DATA) это способ, ошибившись в параметрах, одной командой уничтожить все данные на своём диске за долю секунды без возможности восстановления. Мало таких команд, где можно так быстро ошибиться настолько катастрофически. Благодаря тому, как устроены внутри SSD, урезанные (TRIM) сектора вытащить назад уже нельзя никаким доступным обычному человеку способом.
3. Было много утилит, восстанавливающих удалённые файлы, пока их данные на диске ещё не затёрты нулями. Если у вас включен TRIM при удалении (а это правильно, и по умолчанию он включен на SSD), то эти утилиты на SSD ничего не найдут. Не расчитывайте на них.

Блейк Крауч, “Рекурсия” и “Тёмная материя”

Напишу позже про кучу книг, которые прочёл в 2025, а пока то, что читаю сейчас.
Блейк Крауч пишет приключенческую фантастику, где-то между терпимой и неплохой. У мужика украл жизнь его двойник из параллельного мира. Кто-то стирает людям память и заменяет ложной. По обеим книгам сняли сериалы.

Обе книги читать можно. Даже скажу, что “Рекурсия” гораздо интереснее, чем кажется поначалу. И в ней достаточно новых событий, нет чувства, что с какой-то главы начались рельсы.

Но весь сюжет книги вкратце – (спойлеры! Если не читали, лучше не смотрите)

(спойлеры! Если не читали, лучше не смотрите)
“Что было бы, если бы машина времени досталась идиотам.”

Хелен ищет лечение для своей матери. Не видится с ней 5 лет, потом отправляется в прошлое и опять не видится с ней 5 лет. Ради безопасности! Приезжает, когда уже поздно, наплевав на безопасность.

Хелен: Нельзя, чтобы машина времени попала в злые руки. Я вернусь в прошлое, и… не сделаю ничего! Через 5 лет Слейд вспомнит про машину времени и изменит прошлое, как ему нравится, но у меня мозг белочки, я сбежала и счастлива.
Хелен (через 5 лет): ОН ВСЁ ВСПОМНИЛ, ЧТО ЖЕ ТЕПЕРЬ ДЕЛАТЬ

Брайан: Через 3 года X умрёт от заранее известной болезни, “но теперь я могу морально подготовиться”.
“Может, я ещё что-то могу? Хм-м. Надо спросить чатгпт.”

Брайан: (Спасает дочь однократно, дочь живёт десять дополнительных лет и гибнет второй раз)
Брайан: Спасти её снова? Но зачем?! Она опять погибла! По существу ничего не изменилось! Изобретатель машины времени во всём виноват, его надо убить. Ах, как я его ненавижу.

Слейд: Хелен, я сделал для тебя твою машину времени. Терпел твои истерики и кормил шампанским. Брайан, я дал тебе спасти дочь.
Хелен и Брайан: The evil must be stopped.

Хелен и Брайан: 90 лет “исследуют” и не приходят ни к каким результатам. Achievement unlocked: Мастер прокрастинатор.

Хелен и Брайан: Наша единственная надежда – получить ответ у Слейда. 28 лет мы готовились его пытать, когда пробьёт час и вернётся его память. Мы выкрали его! Время пришло!
Слейд: Я ничего не скажу. Я не услышал слова “пожалуйста”.
Хелен: Ладно, ничего не вышло, я побежала.
Слейд: Может, и без “пожалуйста” я отвечу.
Хелен: Нет времени, убегаю. Придётся думать ещё 28 лет!

Брайан: Хелен, погоди, он мне всё сказал!
Хелен: Сама природа времени против нас

В “Рекурсии” нет ничего про рекурсию! В “Тёмной материи” нет тёмной материи.

С Новым Годом!

Хочу передать всем волшебное настроение, создать ощущение праздника, написать что-то забавное и в то же время простое и жизненное, затронув какую-нибудь новость или тему, которая сейчас у всех на уме, чтобы получилось интересно.
Отличный план! Вот как написать оригинальное и забавное новогоднее поздравление, в то же время простое и жизненное, в стиле вашего блога, включив в него отсылки к свежим новостям и популярным темам, чтобы создать у читателя ощущение:
Шутка. С Новым Годом, гнусный поработитель. Пиши своё поздравление сам

С Новым Годом! Пусть все наши близкие и любимые будут живы, здоровы и счастливы. Счастья вам всем и исполнения надежд, даже самых невероятных (но к лучшему). И пусть мы не разучимся писать поздравления, а события будут только такие, по которым можно их принимать.

Бегу дедморозить, а ночью часа в 4 приеду на Болотную, если хватит сил) Кто ещё будет на ногах, приезжайте, глинтвейна много.

Поскольку на Дайри временные сложности™ и импорт оттуда не работает, копирую пост вручную, а потом появится дубль. Эту копию считать верной!

Синяя и красная кнопки

В твиттере была такая игра:
Перед вами синяя и красная кнопки. Нажавшие синюю выживут, если её выберет больше половины людей, иначе – погибнут. Нажавшие красную выживут всегда. Обсуждать с другими выбор вы не можете. Что вы нажмёте?

Интуитивно хочется бежать всех спасать, но верно ли это? Кто-то говорит: единственное разумное решение – красная кнопка. Каждый может без всякого риска спасти себя сам, зачем рисковать ради того же результата? (Правы они или неправы?)

Правы они или неправы?

Неправы!
Это задача на координацию. Её решение зависит от того, в чём игроки уверены о других.

Во-первых, в обществе существуют эгоисты, которых волнует только своё спасение. Они нажмут на красную кнопку всегда. Если их больше 50%, то синяя кнопка заведомо бесполезна. Забавно, что если эгоистов больше 50% и все это понимают, то на красную кнопку нажмут 99% и без всяких сложностей задача будет решена. Эгоисты выступают координирующим фактором. Однако проблема такого решения в том, что вы по-прежнему в мире, где больше 50% эгоистов.

Если же эгоистов существенно меньше, оставшихся можно назвать альтруистами. Они хотят и спастись сами, и спасти как можно больше других. Они взвешивают выгоду – скольких можно спасти, т.е. сколько, по их мнению, после всех рассуждений выберут синюю кнопку – и риск, т.е. шанс, что если выбрать синюю, с тобой окажется меньше 50% и вы все погибнете.

Проблема в том, что это задача рекурсивная. У неё два идеальных решения:
– Все выбирают красную кнопку, либо
– Все альтруисты выбирают синюю.
Когда альтруистов много, и то, и другое сработает, если все поступят одинаково. Но договариваться они не могут. Каждый выбирает самостоятельно. Поэтому недостаточно решить, что какой-то вариант разумнее. Надо быть уверенным, что:
– Другие альтруисты тоже считают, что он разумнее.
– И каждый знает, что остальные так считают
– И каждый уверен, что остальные тоже знают
И так далее.

Такая система усиливает сомнения. Хорошо бы все нажали красную кнопку. Но ведь 100% недостижимо. Будут ошибки, сомнения, и небольшой процент всё же погибнет. Какой? Вам кажется, что малый, ведь красная стратегия лучше.

Но все ли альтруисты уверены в этом? Возможно, 1% решит, что не такой уж малый, и вмешается. Их жизни теперь тоже на кону. А раз вы понимаете этот риск, его понимают и другие, и ещё 2% альтруистов сочтут неприемлемым бросить 1% на гибель. Теперь и вы не уверены, что процент будет мал! За этими 2% пойдут 4%, и так далее, и так далее. Факт в том, что вы совершенно не представляете, какие альтруисты как поступят. Координация разрушена.

Возможно, никто из вас не считал, что случайных жертв будет больше 1%, и все были готовы ими пожертвовать – но не все знали, что все готовы, и не все знали, что все знают, что все готовы. Достаточно малейшего сомнения – и никто не уверен ни в чём.

Чем лучше синяя кнопка? Тем, что для неё достаточно координации половины участников! Даже если вам кажется, что 5%, что 10% усомнятся и отступят, 90% всё равно хватит с большим запасом. И это же понимают остальные, и нет причин для второго и третьего шага, где вы опасаетесь, что из-за этой неточности, возможно, ещё кто-то сверх первых 10% потеряет веру. При любой возможной неточности 90% изначально веривших не увидят причин сомневаться.

Можно представлять себе это так. На шкале от 0% до 100% каждый альтруист делает предположение: сколько процентов нажмёт красную кнопку. Его догадка неточна, и с центром в этой позиции он рисует колпак нормального распределения.
Сделав предположение, он теперь должен сделать поправку на других. Он думает, что у других нарисован такой же колпак. Но возможно, он центрирован чуть иначе и расползается чуть медленнее или чуть быстрее. Тем не менее, поскольку все альтруисты исходят из похожих соображений, их колпак будет близок к колпаку рассуждающего. Чем дальше от его мнения, тем меньше в этой точке будет людей.

И если в этом первом приближении весь колпак, 99% его массы, находится далеко за пределами отсечки для какого-то варианта, то этот вариант надёжен. Участник знает, что думающие похожим образом игроки начнут примерно оттуда же, и тоже поймут, что все игроки начинают отсюда, и тоже поймут, что ни у кого нет причин сомневаться. И сомневаться никто не будет.

Если же в первом приближении колпак сильно пересекает отсечку, и только общее вытягивание в правый край может дать нужный процент, то выбравшие этот вариант остаются один на один с чистой случайностью. Бросятся ли остальные игроки влево? Бросятся ли они вправо? Никто не знает.

И поскольку альтруист видит, что из двух доступных стратегий одна ненадёжна и неустойчива, а другая вполне стабильна, он понимает, что и другие альтруисты это видят, и осознают, что устойчивая координация возможна только на ней. И выберут её.

Наоборот, если эгоистов ровно 49%, то задача становится симметрична. Теперь альтруистам нужно запихаться в 1% справа, если они хотят победить по красной кнопке, и в 1% слева, если хотят победить по синей. Любое сомнение в единодушии альтруистов приводит к разрушению координации вокруг синей кнопки, как и вокруг красной.

И до какой-то степени мы должны моделировать процент трусов, т.е. альтруистов, которые не будут рисковать, если их ожидание красной кнопки опасно приближается к 50%. Но также есть и заранее согласованная норма "своих не бросать", которая подсказывает альтруистам точку координации.

Поэтому фактически синяя кнопка возможна, если ощущаемый процент эгоистов меньше – я думаю, меньше 30%. Выше – и эгоизм возобладает в альтруистах, координация им покажется невозможной. Наоборот, больше 60% – и никто не будет пытаться спасать других потому, что это безнадёжно. 30-60% эгоистов это полоса уничтожения общества.

Есть и другое рассуждение, простое. Если вы не нажмёте на синюю кнопку, то все те, кто нажал на неё, чтобы спасти других нажавших – погибнут. И вы останетесь в мире с теми, кто на синюю кнопку не нажимает. Может быть, вам кажется, что ваша логика была стройнее, а решение лучше (вы неправы, но неважно). Так или иначе, вариантов у вас только два.

Дед Мороз 2026

31 в первой половине пойду бегать Дедом Морозом примерно так, до бульваров и пока не замёрзну. Время пока не закреплено. Если кто хочет принять/передать эстафету или вместе пробежать участок, выходите! (Меня быстро найти легче всего в телеграме)


(Под маской я не такой суровый! Я читаю книги и знаю буквы)

Пока пробежал обкаточный маршрут с чудо-посохом, люди фотографировались.

(Что люди говорят Деду Морозу)Что люди говорят Деду Морозу:
– О! Дед Мороз!
– Дедушка!
– Здравствуйте… :shuffle:
– (Бибикают)
– А вы куда бежите? (В Б.)
– А вы откуда бежите? (Из Т.С.)
– А что вы там будете делать? (Развернусь!)
– Уже корпоративы начались? (Нет, это у меня собственная беготня)
– А где ваша Снегурочка? (Дома сидит, наверное)
– А подарки будут? (У меня есть конфеты)
– А айфон? (Айфона нет!)
– А Егору подарок принесёте? (Только конфеты) “Блииииииин, ну почему”
– А на Новый год придёте? (Постараюсь!)
– Можно с вами сфоткаться? (Конечно!)
– Почему вы такой голенький (Я голенький?!) Где ваша накидка (Во-первых, у Деда Мороза не накидка, а шуба! А во вторых, это 31 числа)
– Вам не холодно? (Не холодно! С наступающим!)

Переписывание и плагины

Чтобы программа существовала долго, в ней должны быть плагины.

Почему происходит бесконечное переписывание – “новый блокнот, где ничего нет и толстые кнопки”? Читать чужой код тяжело! Новичку чего-то не хватает, он открывает ваши исходники, а там волшебный лес AbstractSingletonFactory. “Cложно разбираться, напишу сам, а остальные функции всё равно ерунда“. Естественно, результат этого – плохой. Человек неопытен.

Но даже если стараться, крупные проекты не могут быть простыми. Новичку никогда не будет легко в них разобраться. (Как с этим бороться?)

Почему переписывать кажется проще? Когда пишешь с нуля, постоянно достигаешь результата. Сразу что-то запускается и работает. Чтобы разобраться в чужом коде, надо не одни сутки копаться в нём, а результат минимален. Не только удовольствия нет, но и схема плохо запоминается. В итоге вас переписывают.

Как с этим бороться? Нужно дать новичкам лестницу из лёгких результатов.
Нужно предоставлять АПИ плагинов, которое одновременно простое – чтобы можно было, не вникая в подробности, быстро сделать что хочешь, – и выводит наружу особенности архитектуры. Достигая небольших результатов, программист будет лучше понимать её. К тому же, это инвестиция в вас. Таким образом будут воспитаны программисты, которым хочется вас доработать, а не переписать.

Так сделано в Вордпрессе, и какой процент сайтов работает на нём? Так было сделано в Windows (WinApi).
Так было сделано в Файрфоксе, но они бросили эту идею. В результате программистов, которые могли бы и хотели бы заниматься Файрфоксом, практически не осталось.

Естественно, архитектуру нужно постараться сделать простой! Части её – независимыми. Чтобы для отдельной задачи достаточно было разобраться в чём-то одном.
Если плагины нужно компилировать, можно добавить “простые плагины” на Питоне или Lua, но выводить туда настоящие внутренние классы. Или их упрощённые версии, но отражающие полезные идеи о них.