TW: нудный гик-стафф про бытовую технику.
Кофемашина в какой-то момент не включила индикатор переполненности контейнера для жмыха. Это странно, поэтому я стал разбираться. Вообще, техника редко глючит непонятным образом и ведет себя хаотично. Всегда есть какая-то причина. При отладке программы это тоже надо всегда помнить.
Как машина узнаёт, что контейнер полон? Никак. У контейнера есть герконовый датчик, показывающий факт его установки в корпус. Когда ты его вытаскиваешь, машина думает, что ты его очистил. А дальше программа просто знает, что одинарный кофе наполняет контейнер на X, двойной на 2X, а вместимость nX.
Что произошло: я открыл контейнер посмотреть, заполнен ли он целиком. А потом закрыл обратно, не очистив. В оценке уровня жмыха появилась аддитивная погрешность.
Если позволить человеку ввести систему в неправильное состояние, он рано или поздно это сделает. Кстати, по той же причине мне нравится DDD как архитектура для энтерпрайз разработки: если всё правильно спроектировать, то программист слоя приложения, который является "пользователем" домена, не сможет сломать состояние сущностей и агрегатов.
В общем, в машине не хватило защиты от дурака. Как бы я решал эту задачу? Сходу приходит в голову какой-нибудь оптический датчик в верхней части контейнера. В худшем случае он запачкается и сработает ложно-положительно, что вызовет необходимость для пользователя лишний раз почистить контейнер.
Но ТРИЗ намекает нам на другой подход. Можно попробовать полностью исключить появление жмыха. Так устроены, например, капсульные машины. У нас такая была, но перешли на зерновую, потому что вкусный качественный кофе в зёрнах на порядки дешевле, чем в капсулах, а пьем мы его много. Особенно кофе с молоком, для которого в капсулах просто концентрат, а не настоящее молоко.
Если исключить жмых нельзя, то нужно сделать его удаление неотъемлемой частью процесса обслуживания машины. Думаю, я бы попробовал объединить конструктивно контейнер для зёрен и для жмыха, и рассчитать объёмы так, чтобы второго хватило на один цикл траты первого. Тогда даже датчики не нужны: кончились зёрна, и ты неизбежно достаешь контейнер и очищаешь.
Сфоткал для вас чашечку ароматного капучино.
#life
#lua
99 is an alpha Neovim plugin for skilled coders that streamlines AI requests using OpenCode. Install via Lazy with the given Lua config, set keymaps like `<leader>9f` to fill functions, `<leader>9v` for visual AI edits (visual mode only), and `@` for cmp skill autocompletion from custom SKILL.md rules or AGENT.md files. View logs with `:lua require("99").view_logs()`. It boosts your workflow by keeping AI help inside Neovim for fast, restricted code generation without leaving your editor.
https://github.com/ThePrimeagen/99
#lua
OTClient Redemption is a flexible and complete alternative client for the game Tibia, designed to work with OTServ servers. It uses LUA scripting and CSS-like syntax for easy customization of the game interface, allowing you to create new mods and extend features. Written in modern C++20, it supports advanced graphics, sound, multi-language, and mobile platforms through OpenGL. It offers many features like shaders, animated textures, transparency, and an in-game LUA terminal. This client improves performance with multi-threading and garbage collection, and adapts smoothly to server latency for better gameplay. You benefit by having a customizable, high-performance client that enhances your Tibia experience and supports modding and mobile use.
https://github.com/mehah/otclient
#lua
Path of Building 2 is a free offline tool for planning your Path of Exile 2 character builds. It helps you calculate your damage, defenses, life, mana, and other stats accurately by including buffs, auras, and enemy resistances. You can plan your passive skill tree, add and toggle skills, and manage items by importing them directly or crafting custom gear. It supports minions, party play, and sharing builds with others. This tool saves you time and effort by showing exactly how changes affect your character, helping you create strong, optimized builds before playing. It updates automatically and works offline for convenience.
https://github.com/PathOfBuildingCommunity/PathOfBuilding-PoE2
#lua#github#neovim
Octo.nvim lets you edit and review GitHub issues, pull requests, and discussions right in Neovim. Just open with commands like `//github.com/user/repo/issues/1` or `w` to sync changes instantly. Add reactions, labels, assignees, or reviewers easily. This saves time by keeping all GitHub work in your editor—no browser switching—boosting productivity for developers managing repos.
https://github.com/pwntester/octo.nvim