TW: нудный гик-стафф про бытовую технику.
Кофемашина в какой-то момент не включила индикатор переполненности контейнера для жмыха. Это странно, поэтому я стал разбираться. Вообще, техника редко глючит непонятным образом и ведет себя хаотично. Всегда есть какая-то причина. При отладке программы это тоже надо всегда помнить.
Как машина узнаёт, что контейнер полон? Никак. У контейнера есть герконовый датчик, показывающий факт его установки в корпус. Когда ты его вытаскиваешь, машина думает, что ты его очистил. А дальше программа просто знает, что одинарный кофе наполняет контейнер на X, двойной на 2X, а вместимость nX.
Что произошло: я открыл контейнер посмотреть, заполнен ли он целиком. А потом закрыл обратно, не очистив. В оценке уровня жмыха появилась аддитивная погрешность.
Если позволить человеку ввести систему в неправильное состояние, он рано или поздно это сделает. Кстати, по той же причине мне нравится DDD как архитектура для энтерпрайз разработки: если всё правильно спроектировать, то программист слоя приложения, который является "пользователем" домена, не сможет сломать состояние сущностей и агрегатов.
В общем, в машине не хватило защиты от дурака. Как бы я решал эту задачу? Сходу приходит в голову какой-нибудь оптический датчик в верхней части контейнера. В худшем случае он запачкается и сработает ложно-положительно, что вызовет необходимость для пользователя лишний раз почистить контейнер.
Но ТРИЗ намекает нам на другой подход. Можно попробовать полностью исключить появление жмыха. Так устроены, например, капсульные машины. У нас такая была, но перешли на зерновую, потому что вкусный качественный кофе в зёрнах на порядки дешевле, чем в капсулах, а пьем мы его много. Особенно кофе с молоком, для которого в капсулах просто концентрат, а не настоящее молоко.
Если исключить жмых нельзя, то нужно сделать его удаление неотъемлемой частью процесса обслуживания машины. Думаю, я бы попробовал объединить конструктивно контейнер для зёрен и для жмыха, и рассчитать объёмы так, чтобы второго хватило на один цикл траты первого. Тогда даже датчики не нужны: кончились зёрна, и ты неизбежно достаешь контейнер и очищаешь.
Сфоткал для вас чашечку ароматного капучино.
#life
Некоторые жанры игр очень хорошо демонстрируют поведение сложных систем: стратегии с симуляцией, градострой, игры-фабрики и так далее. И конкретно фабрики мне в этом образовательном отношении кажутся идеальными, потому что всю систему строишь ты сам, у тебя даже ограничений на ресурсы особо нет. При этом системы получаются инертные и склонные к каскадному усилению проблем, то есть как и в реальной жизни.
Всего каких-то лет десять назад я всерьёз не понимал, почему в какой-то большой компании или, например, в государстве существуют совершенно очевидные и серьёзные проблемы, которые руководство или правительство годами не решает. Варианта было только два: «все дураки» (то есть, глупые, не знают, как решить) и «все мудаки» (то есть, знают, но им плевать). Рекомендую всем, кто так думает, попробовать наладить производство плутониевых стержней в Satisfactory (научных колб в Factorio, деталей для сферы в Dyson Sphere Program и так далее).
Смотрите: я полностью контролировал весь процесс, буквально каждую его деталь. И я был заинтересован в том, чтобы все узлы работали правильно. Я всё, что мог, посчитал заранее в экселе, был очень аккуратен при проектировании, и все равно в какой-то момент в отдельных цехах не работали машины по сборке модульных каркасов, потому что при протяжке конвейера туда попала руда вместо деталей. Я знал о проблеме с рудой ещё раньше и устранил её, проверил в первых трёх цехах из десяти, проверил что сумма каркасов увеличивается и оставил. А через несколько недель (!) игры буфер опустел и каркасов стало не хватать.
То есть да, проблема не видна сразу в пространстве из-за масштабов системы и не видна сразу во времени из-за инерции системы.
А теперь представьте, что исполнители в системе это не идеально запрограммированные машины с предсказуемым поведением, а люди, которые могут творить практически что угодно, и над ними нужен постоянный контроль, который тоже обеспечивают люди. Даже самый компетентный и заинтересованный управленец может годами не знать о чём-то, что для находящихся в конкретном месте кажется очевидной и серьёзной проблемой.
Мне особенно запомнился случай с недавней линии президента, когда жительница пожаловалась на то, что застройщик забрал деньги за квартиру и свалил в закат. В ответ ей было искреннее удивление: «А разве деньги были не на эскроу-счёте?». Потому что внезапно у государства уже есть хороший механизм для предотвращения таких проблем, но в системе такого масштаба невозможно учитывать все до единого случаи вроде «Даже в такой важной операции, как покупка жилья, люди будут вести себя глупо и игнорировать рекомендованные механизмы». И там же ещё была другая жалоба: пенсионерка заявила, что банк обманом оформил на неё кредит с выплатой, превышающей пенсию. Тут уже проявляется инертность: проблема на самом деле старая, но только сейчас шестерёнки докрутились до введения функции «Самозапрет кредитов» в Госуслугах с марта 2025 года. То есть на самом деле решение придумано и запущено на введение, и решение хорошее, но конкретные люди всё ещё сталкиваются с проблемами. И будут сталкиваться дальше, потому что не все узнают про функцию, не все сумеют ей воспользоваться и так далее.
Конечно, понимание работы сложных систем приходило ко мне не из-за игры, а просто по мере взросления и получения жизненного опыта. В 25 лет нормально думать, что все чиновники/начальники идиоты, а я бы вот всё это сделал лучше. Но в 35 это плохая модель, особенно после того, как сам попробовал управлять командой пусть даже из трёх-пяти человек. Однако, интерактивные симуляции помогают кристаллизовать это понимание. Увидеть на личном опыте, как сильно падает внимание к отдельным узлам системы при увеличении её размеров. И в какой-то момент ты обнаруживаешь полное отсутствие алюминиевых корпусов, хотя ведь всё продумал очень внимательно! А оказывается, из-за дефицита боксита цикл обратной связи воды при производстве глинозёма вызывает переполнение и блокирует отвод избытка.
#games#life
3. Комбо стратегия (One Turn Kill). Стратегия со ставкой всего, что имеешь, основанная на постепенном накоплении некоторого преимущества в один основной атакующий инструмент, и разыгрывании этого инструмента в конце партии. Такие колоды активно защищали себя, но в течение партии на поле развивались слабо, зато копили силу в каком-нибудь особо смертоносном заклинании, чтобы просто разыграть его в конце и сразу уничтожить противника.
Смотреть за этими матчами тоже было интересно, хотя зависимость от случайности была относительно высокая. Если комбо-игроку не приходила та самая карта с Очень Мощным Заклинанием, ему просто нечего было делать, никаких других инструментов для сражения особо не было.
В реальности бывают люди, которые ставят много на какое-то одно направление. Они, как правило, вполне компетентны в том, что делают, но сильно проседают буквально во всём остальном. А ещё если вдруг что-то случается с основным направлением, то их может ждать крах (например, много лет занимался бизнесом, но потом бизнес рухнул из-за внешних обстоятельств).
#games#life