Гнев
Вчера, в конце очередного месяца я подбивал домашнюю бухгалтерию. Шёл восьмой месяц беременности жены, вся наша жизнь и привычки перевернулись с ног на голову. Расходы на еду выросли почти в 3-4 раза и здесь уже не получится винить инфляцию. Их вина здесь, конечно есть, но ближе к уровню погрешности. Основная вина лежит на следующей цепочке проблем:
- У жены нет сил готовить, потому что она себя плохо чувствует.
- У меня нет сил готовить, потому что я и так взял на себя почти весь быт, при этом работаю. Удалёнка тоже работа, хотя и дома.
- Иногда бывает импульс заказать нормальные продукты из супермаркета и приготовить нормальной еды. Еда заказывается.
- Потом еда оказывается ещё не приготовленной, а есть надо срочно, потому что чуть голод - сразу рвота, поэтому заказывается доставка готовой еды.
- А неприготовленные продукты портятся и постепенно отправляются в мусорное ведро.
- Некоторая еда портится в холодильнике подолгу. Сегодня вот выкинул творог, срок годности которого закончился ещё в конце марта.
- Иногда силы приготовить еду находятся, но в холодильнике уже есть готовая еда из доставок. В живых остаётся кто-то один, но в конце-концов этот кто-то доживает до спокойной смерти от старости и снова отправляется в мусорное ведро.
- Доставка, блин, дорогая, как и готовая еда из ресторанов. Иногда приятно себя побаловать, но каждый день - дороговато.
Решение проблемы заключается в периодической инвентаризации холодильника и дисциплины в готовке еды. Всё предельно банально, придумано давным давно, ещё Голдратт сказал, что все беды из-за избытка складских запасов, которые лежат мёртвым грузом.
Торг
Разбираем цепочку проблем дальше - что мешает её проводить? Лень? Вряд ли - есть вполне назревшая боль, мотивации достаточно. Сложно. Результатом такой инвентаризации должно быть не полное мусорное ведро просрочки - с этим мы как раз таки боремся, его не должно быть. Что же должно быть результатом? Готовая еда на следующий день, причём приготовленная из продуктов, которые не могут ждать - срок годности которых истечёт на следующей неделе.
Стоять перед холодильником и думать что именно приготовить - плохая стратегия. Во-первых еда есть не только в холодильнике - она есть и в полках кухонного гарнитура. Во-вторых всё равно глазами охватить разом все сроки годности не получится. Вместо этого вы приготовите первое, что попалось в голову. Исходя из тезиса, что еду у которой срок подходит к концу надо "спасать" нам нужен сортируемый список продуктов. Где проще всего сортировать списки продуктов? В Excel.
Депрессия
Как загнать список продуктов в эксель? Можно по-разному.
- Стоять перед холодильником с ноутбуком. Открываем холодильник, смотрим на продукт - закрываем холодильник - записываем - идём дальше. Долго, одни только открывания-закрывания займут около пяти минут.
- Печатать на ноутбуке не так удобно как записывать ручкой. Можно взять блокнот и писать там. Но потом придётся перепечатывать. Долго.
- Можно привлечь жену. Один смотрит в холодильник, диктует, другой записывает (можно на ноут, сразу в эксель, можно в блокнот). Но тоже долго, надо давать дописать человеку, а синхронизация людей та ещё гадость.
Внезапная краткая историческая справка
Я пошёл другим путём. У меня есть диктофон. Как-то раз в ходе ремонта, после встречи с прорабом я вернулся домой и понял, что я совершенно не помню, что от меня требуется и зачем. Точнее помню что-то надо, но забыл что именно. Подумал что запомню, мелочь же, а достать телефон и печатать в заметках было лень. И это было не в первый раз. Особенно сильно такие ситуации меня раздражали в общении с людьми, которые говорят со мной на разных языках - электриками, сантехниками, мебельщиками, специалистами по потолкам и окнам.
Слушать аудиозаписи в диктофоне, встроенном в телефон мне быстро надоело. Никто не любит голосовухи. И тут меня осенило. Мы же живём в будущем. 100% есть нормальный рабочий софт, который сносно распознаёт речь в текст. Нашёл vosk, потыкался, накидал на основе примеров в репозитории несколько скриптов для обработки WAV-файлов. Столкнулся с проблемой - с iPhone нелегко скинуть все аудиозаписи на компьютер с Linux и удалить их с телефона в автоматическом режиме. Настолько нелегко, что я не понял как. Скидывать по одной через Telegram мне категорически не нравилось - я полюбил бубнеть прямо в промышленных масштабах, да и гонять заметки через интернет мне не нравилось ещё больше, я ж селфхостер в конце-концов.
Поэтому я купил маленький мини-диктофон за 2000 рублей. 16гб (мне бы хватило и двух), одна кнопка - включить запись, она же - выключить диктофон. Есть ещё встроенный динамик, но мне это всё не особо нужно. Главное, что есть USB Type-C, оно подключается к компьютеру как флэшка, а файлы именуются в формате YYYYMMDDHHMSS, так что эти метаданные очень легко достать и использовать в автоматической сортировке.
Итак, у меня есть пачка WAV-файлов, у меня есть vosk, python, запускаем, расшифровываем и ужасаемся качеству выхлопа. Если диалог длинный, разбивки на предложения нет. Пунктуации почти нет. Некоторые предложения разбиты по отдельным строкам, иногда в одной строке несколько предложений. Много опечаток, рассогласований рода, времени и падежей. Вручную разбирать этот мусор довольно тяжело, а проку от него, самого по себе мало.
Я использую локально развёрнутый mistral-small:24b в качестве секретаря, который выполняет пост-обработку таких заметок. На выходе получается сдобренная галлюцинациями, но на 95% правильная заметка, которую можно вставить в свой дневник в Obsidian и обдумать. Ниже ссылка на статью о том, как крутить нейронки дома и что для этого нужно.
Принятие Решение проблемы
За полтора месяца владения диктофоном мне только сейчас пришло в голову использовать уже имеющийся процесс и ресурсы для упрощения инвентаризации продуктов. Я просто открыл холодильник и бубнил в диктофон что я вижу, сколько этого и когда оно помрёт. Подключил диктофон к компу, запустил скрипт, отошёл набрать и поставить чайник, вернулся и получил текстовую кашу из того, что у меня есть в холодильнике.
Дальше скормил это мистралю со следующим промптом.
Я дам тебе распознанную голосовую заметку, в которой я перечисляю что у меня есть в холодильнике. Отоформатируй список продуктов в CSV файл с разделителем - “;”
Используй следующие заголовки:
название продукта;
остаток - штук, граммов или в процентах;
дата изготовления;
конец срока годности, иногда он явно не указан, если вместо него указана дата изготовления и срок годности - вычисли дату, когда продукт будет просрочен;
для кого предназначен.
Если в строчке нет точной информации - не выдумывай, оставь поле пустым. Если в заметке сказано, что продукт уже просрочен или отправляется в помойку - можешь пропустить строку с ним.
Сперва я думал - вставлю получившийся CSV в Excel, подчищу косяки в данных, отсортирую, с часок подумаю, но... решение оказалось ещё проще. Сильно проще. Можно было вообще обойтись без Excel (не верится, что рука повернулась такое напечатать, а ведь я ещё называл себя Ambassador Tablicek), а сразу попросить LLM составить список блюд, которые можно приготовить на следующий день, в первую очередь используя блюда с истекающим сроком годности. И это сработало чертовски хорошо.
Я дам тебе текст распознанной голосовой заметки, в ней перечисляется, какие у меня есть продукты в холодильнике. Составь на основе этого меню на пару дней. Учти, что готовую еду нужно съесть в первую очередь, а готовить нужно из того, что скоро испортится. Сейчас 1 мая 2025 года. Если я упоминаю дату, не упоминая года - считай, что это 2025 год.
Вот текст:
необработанная распознная портянка текста
Вот выхлоп:
Примерное меню на пару дней:
Каши на завтрак: Приготовьте овсяные хлопья или кашу из чечевицы.
Готовая еда: сперва доешьте рис с хумусом и фалафелем.
Ужин: паста с песто и сыром: используйте макароны, уже открытые упаковки соуса песто и сыра пармезан.
Кастрюля борща на несколько дней: используйте заправку для борща.
Источники белка: запеките лосося и сварите пельмени на обед.
Бонус: не понравился ответ - перегенерируйте. Это буквально 1-2 нажатия мыши и 20-30 секунд ожидания. Радикальных изменений скорее всего не будет, но позволит обойти редкие галлюцинации.
Весь процесс занял у меня 30 минут из которых я 15 минут бубнил в диктофон, 10 минут сочинял промпты, 5 минут офигевал с того, насколько всё было просто и насколько будущее уже здесь. В следующий раз получится быстрее. Это, конечно, отвратительно, что компьютер буквально диктует, что есть, но когда ты измотан из-за недосыпа, мозги уже не работают, а есть хочется - похеру мне уже на всю дистопичность ситуации.
Ссылки: