Навигация по каналу.
Всем привет, с вами разработчик из Петербурга, а здесь мой личный блог. Многие люди говорят мне, что им нравится, как я пишу, и это поддерживает существование данного канала. Тут совершенно точно не будет примитивного агрегатора новостей, очередной подборки мемов или филиала твиттера с короткими эмоциональными высказываниями. Данный блог — вдумчивый и авторский, содержит мои размышления и пережитый опыт. Подписывайтесь, если вам действительно интересно читать. Буду рад также вашему участию в обсуждениях.
Вот основные теги:
#dev — программирование
#gadgets — гаджеты
#games — видеоигры и настолки
#fiction — книги, фильмы
#hobby — DIY и другие хобби
#web — интернет, соцсети
#life — просто о жизни
Год был сложный. Не в том смысле, что плохой, просто много задач, высокая потребность во внимании. И в семье и на работе.
В семье, потому что Ромка как раз в том возрасте, когда уже может нанести немало ущерба и себе и вещам вокруг, но ещё не понимает повеления родителей. В какой-то момент он научился внезапно выключать мой компьютер нажатием кнопки на системнике. Очень, знаете ли, тонизирует, когда посреди рабочего созвона или в момент концентрации на сложном коде операционка закрывает все окна и уходит в шатдаун.
Пришлось напечатать специальную заглушку на кнопку. Рома был недоволен.
А на работе у нас уволилась вице-президент по цифровизации. Когда уходит руководитель такого уровня, круги на воде остаются надолго, и не любая организация может справиться с образовавшейся волной кризисов. В конце года разработчики даже гасили техдолг, а я — солюшен-архитектор — занимался бюрократией. Это очень плохой знак, показывающий, что настоящих функциональных задач почти не было.
Посмотрим, что будет в итоге. Возможно всякое.
Кстати, занятие делом отлично избавляет от любого рода страданий и философствований. Вы могли заметить, что постов было меньше, чем раньше. Нередко я несколько дней крутил в голове какие-то мысли, но в текст так и не облёк, потому что особо некогда. Всегда нужно помнить, что среди активных комментаторов под политическими новостями не так много занятых работой семейных людей, а ведь именно они вносят основной вклад в развитие общества.
Зато с хобби есть прогресс. В этом году реализовал давнюю мечту, и теперь дома есть мастерская . Уже вовсю использую. Собирал вот новую «третью руку», а в одной из лап недорезана резьба. Не проблема: второй сверху ящик в левом ряду, в глубине лежит набор плашек и метчиков. Две минуты, решено. Или вот у оконной гирлянды сгорел сглаживающий конденсатор. Тоже легко: кассетница с электронными компонентами, ящик с SMD, в нем ячейка с конденсаторами. SMD 1206, впаял, работает.
В нашем хаотичном мире очень приятно иметь кусочек пространства, который организован так, что там можно найти решения для многих проблем. Это успокаивает, дает чувство контроля. Даже если конкретная проблема никогда не возникнет, просто хочется знать, что в третьем ящике справа лежит измеритель объёма красных резиновых шаров.
Точно понимаю, что в 2025 у меня будет много изменений в разных сферах жизни. Так что там и увидимся. С Новым Годом :)
#life
Guilty pleasure: наблюдать, как любители парковаться во дворе занимаются раскопками.
С приходом снега выросло количество дискуссий "Пешехонов vs автомобилисты". В основном с друзьями, конечно, потому что лезть с урбанистикой во внешние интернеты это примерно то же самое, что приходить с правилами застольного этикета к зэкам в тюрьму.
Интересно, что нередко в качестве аргументов используется сослагательное наклонение или фантастика в жанре альтернативной истории: "Вот если бы сделали бесплатный паркинг напротив дома...", "Вот надо было изначально иначе проектировать дворы..." и т.д. Самое обидное, что я с этими посылами полностью согласен, но никакого решения они не предлагают. Я даже больше скажу: государство тоже не особо много что может сделать с урбанистическими проблемами города. Разве что в Москве, где у чиновников больше управленческой воли, потому что в соседнем кабинете сидит Путин, встречающий в этой самой Москве всяких Такеров Карлсонов и Си Дзинь Пиней. Но в других местах администрация действует популистски, а люди, как мы видим, выбирают некрасивые и неудобные общественные и жилые пространства в угоду личной выгоде.
Тем приятнее, что эти же самые люди, за небольшими исключениями, сейчас берут в руки щётки и лопаты, во всех смыслах разгребая последствия своего выбора.
#life
Началась пора украшения домов к Новому Году, так что напомню всем, что у меня есть процедурный генератор бумажных снежинок: https://snowflake.ispretty.fun
Можно задать сложность ползунком, а дальше сгенерировать себе PDF. На распечатке будет схема складывания, серым отмечены места для вырезания.
#life
Вот и 35. Я, кстати, родился ровно в 0:00, маму даже спрашивали, какую дату записываем. Это ещё и момент перемены знака зодиака, так что я наполовину Скорпион, а наполовину Стрелец, если верить во всю эту фигню. Но я не верю, а звёзды с момента создания зодиакального круга давно сместились.
Пишу сейчас вам это, потому что 35 с небольшим лет назад мои родители приняли решение завести ребёнка. С появлением Ромки я ещё более уважительно стал относиться к этому. Мы воспринимаем жизнь, как должное, но количество сил, нервов и внимания, которое наши родители в нас вложили, трудно оценить. К тому же, нас с вами выращивали в девяностые, и это отдельный челлендж. Во-первых, доступно было гораздо меньше, чем в наши дни: я нажимаю две кнопки в телефоне, и через час у меня любая еда и любой товар, в том числе для ребёнка. Во-вторых, обстановка была опаснее, даже с учётом нынешней геополитической ситуации.
Что могу сказать. Дети, не верьте взрослым. Молодые, не верьте старым. Вот мне 35. Зубы не выпали, лысеть не начал, так и не понял, зачем люди курят, сохранил многих друзей, сохранил многие хобби, не пребываю в депрессии, а поясницу ломит разве что на следующей день после становой, и быстро проходит. Зато приобрёл много интересных способностей. Например, в юности мне было очень тяжело вставать по будильнику, физически это ощущалось, как предельно неприятное состояние. И я каждый раз перед будним днём засыпал с плохим настроением. Сейчас спать в такие моменты тоже хочется, но катастрофой подъём по будильнику не кажется. Или, скажем, легче переносятся долгие поездки куда-то. Спокойнее терплю людей, которые пытаются вывести меня из себя глупыми шутками, едкими замечаниями или критикой. Уверенности во многом тоже прибавилось.
Подарил себе не таблеточки, не сертификат к врачу, не унылую бытовую фигню, а новый 3D-принтер, завтра расскажу подробнее.
Поздравлять можно в комментах. Только не звонками, пожалуйста. Их я всё ещё не переношу. Наверное после 70-ти смогу.
#life
У меня в голове сложилась модель, объясняющая, в частности, почему не взлетели бизнесы типа "Доставляем сырые, но расфасованные продукты, чтобы из них быстро готовить блюдо". И в эту модель укладывается много других вещей.
Всё дело в том, какой труд мы исключаем из цепочки действий для получения результата — квалифицированный или нет. Неквалифицированный труд, грубо говоря, это то, что вы можете сделать сами, чтобы сохранить деньги и не платить их кому-то. Исключение неквалифицированного труда отлично работает и превращается в новые бизнесы. Например, такси это "труд + оборудование" (доставка автомобиля к вам и разрешение переместиться на нём куда нужно). Но если исключить водителя, схема всё ещё работает: каршеринг, а за рулём вы сами. Если исключить кассира в магазине, мы получаем терминалы самообслуживания, на которые всё больше переходят сети. Если исключить риелтора, получим AirBnb, если продавца-консультанта — маркетплейсы. Без сборщиков мебели будет IKEA, без официантов — фастфуд и так далее.
Кстати, добавление к чему-то неквалифицированного труда тоже генерирует новые бизнесы, но тут важная составляющая: неквалифицированный час должен стоить значимо меньше, чем ваш час, чтобы вы отдали деньги, а не время. Доставка еды или какой-нибудь клининг работает только за счёт того, что людям платят очень мало, без нормального оформления по ТК и без выплаты налогов.
Так вот. Доставка продуктов для готовых блюд это исключение части квалифицированного (!) труда шеф-повара. Я заказывал такие наборы пару раз, и получалось не то чтобы плохо, но средненько, хуже, чем готовит профессионал в ресторане. Получается я плачу меньше, но адекватно заменить тот труд, за который не заплатил, не могу. Так что мне выгодно или совсем купить обычные продукты, без фасовки (это дешевле), или уже купить готовое в ресторане (это вкуснее). И любая другая попытка частично исключить квалифицированный труд не будет сходиться. Либо полностью исключать, роняя цену, либо полностью включать. Кстати, я думаю low-code по этой же причине особо не стал массовым стандартом ни для чего. Либо совсем исключать код и оставлять какой-нибудь конструктор из готовых компонентов, либо кодить.
#life
TW: нудный гик-стафф про бытовую технику.
Кофемашина в какой-то момент не включила индикатор переполненности контейнера для жмыха. Это странно, поэтому я стал разбираться. Вообще, техника редко глючит непонятным образом и ведет себя хаотично. Всегда есть какая-то причина. При отладке программы это тоже надо всегда помнить.
Как машина узнаёт, что контейнер полон? Никак. У контейнера есть герконовый датчик, показывающий факт его установки в корпус. Когда ты его вытаскиваешь, машина думает, что ты его очистил. А дальше программа просто знает, что одинарный кофе наполняет контейнер на X, двойной на 2X, а вместимость nX.
Что произошло: я открыл контейнер посмотреть, заполнен ли он целиком. А потом закрыл обратно, не очистив. В оценке уровня жмыха появилась аддитивная погрешность.
Если позволить человеку ввести систему в неправильное состояние, он рано или поздно это сделает. Кстати, по той же причине мне нравится DDD как архитектура для энтерпрайз разработки: если всё правильно спроектировать, то программист слоя приложения, который является "пользователем" домена, не сможет сломать состояние сущностей и агрегатов.
В общем, в машине не хватило защиты от дурака. Как бы я решал эту задачу? Сходу приходит в голову какой-нибудь оптический датчик в верхней части контейнера. В худшем случае он запачкается и сработает ложно-положительно, что вызовет необходимость для пользователя лишний раз почистить контейнер.
Но ТРИЗ намекает нам на другой подход. Можно попробовать полностью исключить появление жмыха. Так устроены, например, капсульные машины. У нас такая была, но перешли на зерновую, потому что вкусный качественный кофе в зёрнах на порядки дешевле, чем в капсулах, а пьем мы его много. Особенно кофе с молоком, для которого в капсулах просто концентрат, а не настоящее молоко.
Если исключить жмых нельзя, то нужно сделать его удаление неотъемлемой частью процесса обслуживания машины. Думаю, я бы попробовал объединить конструктивно контейнер для зёрен и для жмыха, и рассчитать объёмы так, чтобы второго хватило на один цикл траты первого. Тогда даже датчики не нужны: кончились зёрна, и ты неизбежно достаешь контейнер и очищаешь.
Сфоткал для вас чашечку ароматного капучино.
#life
На недавнем тимбилдинге было "бинго" для знакомств с коллегами. "Бинго" это листок с 24 ячейками, в которых написаны утверждения о людях, например: "Попадал в телевизор", "Любит экзотическую еду" и так далее. Задачей было заполнить все ячейки фамилиями коллег без повторений. Я один из двух людей (среди ~300), кому это удалось, хочу поделиться алгоритмом. Вообще, знание игровых механик и алгоритмическое мышление могут пригодиться вам в самых неожиданных ситуациях.
Во-первых, я взял несколько разных листов с "бинго". Всего было 5-6 версий с немного разными ячейками, логично было пытаться заполнять тот, где меньше редких утверждений, под которые сложно найти человека.
Во-вторых, и это основное, половина листа заполнилась после рассадки за столы. Я предложил соседям по столу такой подход:
1. Каждому присваивается число
2. Все листы с бинго собираем в стопку и передаём стопку от одного края стола до другого по часовой стрелке
3. Когда к тебе попали листы, ты на каждом, кроме своих, ставишь свой номер в углу тех ячеек, которые содержат верные для тебя утверждения
4. Когда стопку все заполнили, возвращаем каждому его листы
5. Получив лист, ты выбираешь в нём ячейки с самым маленьким ненулевым количеством номеров в них (обычно это один номер) и вносишь в одну из них фамилию вместо номера
6. Номер внесённого человека зачёркивается во всех ячейках этого листа
7. Пункты 5 и 6 повторяются, пока незачёркнутых номеров не осталось
Быстро выяснилось, что вообще все варианты листов без проблем заполняются на N-1 ячеек, где N — количество людей за столом (потому что себя вносить нельзя).
Оставалось только дозаполнить остатки, половина из которых опять же закрывалась теми коллегами, кого я знаю, потому что столы были сформированы так, чтобы вы с меньшей вероятностью сели со своими прямыми знакомыми. Профит.
Я принёс листок сдавать, но выяснилось, что чуть раньше полностью готовое бинго сдал мой коллега Дмитрий, который, представляете, ходил и общался с людьми ради этого. Вот прямо разговаривал! Ужас какой.
#life
С год назад я поставил новый замок на общую с соседями дверь. А через несколько месяцев он сломался — стал заедать. Подпружиненная защёлка начала западать внутрь и не выдвигалась сама в некоторых случаях, приходилось дёргать ручку туда-сюда, чтобы закрыть дверь.
Мне было очень лень снова разбирать весь замок. Способ закрыть дверь был, поэтому я ничего не делал. Сосед пару раз звонил мне, но и сам тоже не взялся.
Пару дней назад замок окончательно сломался, и внешняя ручка перестала его открывать. Я чудом вышел в этот момент встречать курьера и открыл дверь соседке, которая не могла попасть домой. Делать нечего — пришлось разобрать и посмотреть. Я был готов идти в магазин за новым, но всё оказалось очень просто: кто-то специально выкрутил два винта, которые притягивают внутренний механизм к планке. Сначала механизм чуть-чуть провалился, из-за чего стал заедать, а потом упал окончательно и рассоединился с внешней ручкой. За минуту я нашёл у себя два подходящих винта и всё восстановил до полностью рабочего состояния, заедания тоже пропали.
Кто и зачем мог это сделать? Выкрутить винты в замке можно только тогда, когда у тебя есть ключ, либо когда кто-то открыл тебе дверь. Моя гипотеза — третьи соседи, которые здесь не живут, некоторое время назад делали ремонт, и рабочие, которых они позвали, пытались заблокировать замок, чтобы он "не мешал" им ходить туда сюда по много раз в день. Они сделали это, а потом по-мудачески не вернули всё назад.
Видите, как вышло. Вероятность того, что абсолютно новый замок сломается за несколько месяцев обычной эксплуатации, очень низкая. И тем не менее, я предположил изначально именно это, из-за чего не стал его разбирать, потому что считал, что починка займёт много времени. Я не подумал, что это намеренный саботаж людьми. Если бы я так подумал, то заменил бы винты в тот же день. А мог ведь и не попасть домой в какой-то момент.
#life
Trigger Warning: санкции, вкусовщина, личное мнение.
Прочитал новость о снижении посещаемости кинотеатров в России.
Спустя почти три года могу сказать, что нынешняя ситуация целиком уничтожила лично в моей жизни только две вещи: дроны и походы в кино. Всё остальное или чуть-чуть видоизменилось (перешёл с Fusion 360 на Компас, проблем не испытываю), или подстроилось вообще без заметных внешних эффектов (вместо Google Pay теперь платёжный модуль банка, например Alfa Pay, работает не хуже). Какие-нибудь 3D принтеры от топовых брендов всё так же продаются на Aliexpress с доставкой из России напрямую от производителя. Для покупки видеоигр и софта тоже куча вариантов. Стройматериалы есть (сделал 2 ремонта за последние 2.5 года), инструмент есть, электроника есть.
Наверное, люди, которые любили путешествовать по Европам, испытывают больше неудобств. А пользователи Инстаграма и Фейсбука неудобств не испытывают, потому что они и так непрерывно едят кактус. Как и пользователи айфонов, впрочем, эти вообще готовы терпеть что угодно.
И если с дронами всё очень трагично, то вот от кинотеатров я, похоже, отказался сам. Рефлексировал этот момент и понял вот что: иногда в кино выходило что-то, что я хочу посмотреть. Я порывался купить билет, но не из-за того, что в кинотеатре удобнее или качественнее, а просто ради возможности посмотреть что-то уже сейчас. Почти во всех случаях меня в итоге закручивали дела, и через пару месяцев я уже смотрел нужный фильм у себя дома. В этом смысле фильмы являются заложниками тех правил, по которым их сначала выпускают в кинотеатры и только потом уже в широком доступе.
Был бы я готов платить деньги просто за получение фильма в момент выхода? Билет в хороший кинотеатр стоит порядка 1000 рублей, но ты отдаёшь эти деньги за инфраструктуру: комфорт, зал, звук, большой экран. Билет в плохой кинотеатр на тот же фильм будет стоить рублей 150-300. Если я не использую инфраструктуру кинотеатра и плачу только за доступ, то именно по этой цене и нужно смотреть. В таком случае да, пожалуй: дайте мне возможность заплатить эти 300 рублей и посмотреть дома фильм в момент его выхода, а не через несколько месяцев. Тем более, качество и комфорт дома будут кратно выше, чем в кинотеатре за 300 рублей.
Понятно, что так не делают в первую очередь из-за пиратства, потому что кинотеатры позволяют гарантировать платёж, а цифровое распространение не позволяет. Но, всё-таки, надеюсь, современный тренд со всеми этими стриминговыми сервисами приведёт куда-то туда.
#life