Выложил Blackhole — Python ASGI mock server для тестирования black-box сканеров, обучения и воспроизводимых бенчмарков.
Пока вайбили с Уроборосом родился релиз в другом жанре, о нем ниже. Он offtopic но да простит меня Хабр великий и могучий, не смог удержаться.
Привет, Хабр.
Несколько месяцев назад я вышел ближе к ночи в магазин и, проходя мимо стойки с яблоками, придумал рабочую мысль, которую, как обычно, скинул себе в Telegram. Дома меня ждал знакомый ритуал: включить ноут, открыть Telegram, скопировать текст, открыть Obsidian, найти нужную заметку с идеями и только после этого вставить мысль туда, где она и должна была оказаться изначально.
Меня в тот момент зацепили не сами действия, а их архитектурная странность. Формально мои заметки лежали в обычной локальной папке и принадлежали мне. Практически же доступ к ним был завязан на конкретный десктопный клиент, плагины, sync и костыли. Попробуйте, например, нормально достучаться до своей локальной базы заметок с телефона или прикрутить к ней простую автоматизацию и быстро обнаружите БОЛЬ.
Именно тогда у меня появился не ответ, а вопрос: это моя частная боль или уже ставший привычным сценарий у других людей, которые уже ведут большие vault'ы в Obsidian, Logseq, Zim и других PKMS? И если проблема реальна, то чего им на самом деле не хватает — стабильной синхронизации, нормального плагина, ещё одного клиента... или отдельного серверного слоя?
Этот текст — не история в духе «смотрите, я сделал notes‑as‑a-service». Хотя соблазн подать его именно так есть, говорить об этом пока рано. Это дискавери о том, как из личной боли, ресерча и создания MVP у меня сложилась гипотеза, что части пользователей markdown‑заметок нужен не новый редактор и не мощные плагины, а бэкенд поверх уже существующей папки с заметками.
Читать далееВ посте рассмотрим модель эффективной команды под названием "Учпочмак".
У него есть три вершины: достижение целей, мотивированная команда, метрики, обеспечивающие предсказуемость.
Обсудим, как диагностировать проблемы на каждой вершине "треугольника", какие таргеты поставить, а также почему несогласованность целей на масштабе нескольких команд - это главная проблема, с которой нужно бороться.
Читать полностьюДо этого мы говорили о том, где лучше не экспериментировать. Но интерфейсы все же меняются — и иногда довольно радикально. Это подтверждается современными UX-трендами и анализом развития интерфейсных решений.
Это происходит не из-за желания обновить визуал, а из-за изменений в сценариях работы: растет объем данных, усложняются процессы, увеличивается частота операций, появляются новые устройства. В таких условиях старые решения начинают замедлять работу. Сейчас мы начнем рассматривать именно эти случаи — когда изменения в интерфейсах и сценариях их использования помогает продукту работать эффективнее.
Еще недавно большинство действий в цифровых продуктах строились вокруг страниц и кнопок. Затем появились мобильные устройства, свайпы, жесты, бесконечные списки и контекстные действия. То, что сначала казалось непривычным, со временем стало стандартом.
Хороший пример — автосохранение. Когда-то закрыть документ без ручного сохранения означало потерять работу. Сегодня автосейв — базовое поведение системы, о котором пользователь даже не задумывается. Та же история с бесконечной прокруткой. Infinite scroll начинался как экспериментальная альтернатива пагинации, а сейчас это норма для лент, каталогов и социальных сервисов.
Чаще это происходит в B2C-продуктах, где аудитория легче адаптируется к новому. В B2B все иначе: интерфейс — рабочий инструмент. Любое изменение влияет на скорость работы и экономику процессов. Поэтому здесь особенно важно понимать, где нововведение действительно улучшает сценарий.
Читать далееЗнакомо чувство, когда стоишь в магазине перед полкой с йогуртами и не можешь выбрать? Мозг просто вышел из чата. Так выглядит дофаминовая яма после многочасового дебага «неуловимого» бага.
Почему 8 часов сна не возвращают нас в строй, как наш мозг эксплуатирует систему вознаграждения и что происходит с рецепторами, когда мы «в потоке»? Разбираемся в нейрофизиологии кодинга с помощью неврологов, психиатров и глимфатической системы, а в конце — мой личный «Протокол выживания», чтобы не сжечь извилины раньше времени
Читать далееНедавно поймал себя на знакомом состоянии. Сел разбираться с задачей, открыл IDE, начал копаться в логике — и в какой-то момент оказалось, что прошло почти шесть часов. Без перерывов.
Обычно про концентрацию говорят через призму продуктивности: техники, таймеры, планирование. Но мне стало интереснее другое — что происходит в мозге разработчика во время длинной сессии кодинга.
Я немного почитал исследования, немного понаблюдал за собой и сделал несколько маленьких экспериментов. В том числе написал пару простых скриптов на Python, чтобы попробовать зафиксировать изменения в состоянии во время длинной работы.
Получилась странная смесь нейробиологии, самонаблюдений и небольших прототипов.
Читать далееПоследние несколько лет я только и делаю что целенаправленно избавляюсь от повторяющихся задач. Отчёты, копирование данных из таблиц, инвестиционный учёт, оплата счетов и даже мониторинг тех, кто звонит во входную дверь.
Но в какой‑то момент я понял, что для того чтобы всё это автоматизировать не нужна какая‑то единая сложная система. Достаточно небольших скриптов и связки трёх инструментов:
Массовое внедрение AI в работу менеджмента и экспертов формирует пузырь, который удивительно точно повторяет механику ипотечного кризиса 2008 года. Парадокс в том, что формируется он на самом видном месте. Эксперты, инвесторы, акционеры — все пристально смотрят в документацию компании (или института). Но качество документа не гарантируют качества экспертной информации, которая должна была отражаться конечным артефактом. Документ может быть "токсичным": логично выглядеть, но содержать ошибки, противоречия и «галлюцинации» AI.
“Документы не должны противоречить друг другу” как отдельного требования нет, но оно кажется очевидным из ISO 9001, ITIL и BPM.
Читать далееЕсли вы давно работаете в безопасности или IT, то хорошо знаете этот сценарий, когда разработчик уходит из компании и его аккаунт деактивируется, но где-то в AWS тихо лежит IAM-ключ с правами админа, который он создал «на время». Никто не знает, что он есть, и никто не знает, что с ним делать. Он будет лежать там ещё два года.
Управление сервисными аккаунтами, API-ключами, OAuth-сертификатами проблема не новая. Однако, с приходом вездесущих ИИ-агентов появился свежий термин Non-Human Identity (NHI). Почему же вдруг NHI захватил конференции и слайды инвесторов?
Читать далееЕсли вы давно работаете в безопасности или IT, то хорошо знаете этот сценарий, когда разработчик уходит из компании и его аккаунт деактивируется, но где-то в AWS тихо лежит IAM-ключ с правами админа, который он создал «на время». Никто не знает, что он есть, и никто не знает, что с ним делать. Он будет лежать там ещё два года.
Управление сервисными аккаунтами, API-ключами, OAuth-сертификатами проблема не новая. Однако, с приходом вездесущих ИИ-агентов появился свежий термин Non-Human Identity (NHI). Почему же вдруг NHI захватил конференции и слайды инвесторов?
Читать далееКогда меня спрашивают о задачах, я обычно перечисляю стратегические проекты: Гильдия Героев, Школа Продаж, автоматизация, методология. Но есть одна вещь, которая не видна на слайдах презентаций, но отнимает не меньше сил и нервов, — ежемесячная новостная рассылка для продавцов.
Казалось бы, подумаешь, письмо написать, но в компании 50+ продавцов в трёх департаментах, и у каждого своя голова, свои боли, свой уровень включённости. Если продавец не в курсе новых кейсов, фич, историй побед или изменений в процессах — он продаёт хуже. А если он продаёт хуже, планы не выполняются и больно всем. Поэтому рассылка — не просто информирование, а бизнес-инструмент. И веду я её лично.
Читать далееMeshtastic позволяет обмениваться сообщениями через LoRa mesh-сеть даже без доступа к интернету. Но можно ли связать такую сеть с обычной электронной почтой?
Как получать и отправлять email там, где нет интернета и мобильной связи? Я сделал Python-шлюз для Meshtastic, который позволяет передавать письма через LoRa mesh-сеть и также писать ответ в сеть, который потом отправится как обычная почта.
Скрипт проверяет почтовый ящик через IMAP, разбивает письма на небольшие фрагменты и отправляет их через Meshtastic-ноду в сеть. В обратную сторону всё работает похожим образом: сообщение из mesh-сети можно отправить в определённом формате, после чего шлюз превратит его в обычное email-письмо и отправит получателю.
В статье я расскажу, как устроен этот шлюз, как решалась проблема ограниченного размера LoRa-пакетов, как реализована фрагментация сообщений и как подключаться к Meshtastic-ноде через USB или Bluetooth, автоматически находя её текущий адрес.
Читать далееИтак, я решил довести до реально работающего проекта превосходный эмулятор синтезатора Roland JV880. Это рэковый модуль (без клавиатурный), сделанный на базе синтезатора JV80. Соответственно он поддерживает все карты расширения этого синтезатора и почти все MIDI команды.
ПодробнееМедузы-кристаллы обладают таинственной красотой: благодаря особому белку они излучают слабое зелёное свечение. На протяжении десятилетий исследователи использовали этот зелёный флуоресцентный белок и подобные молекулы, чтобы «осветить» область биологии, отслеживая процессы, происходящие внутри клеток.
Теперь эти широко применяемые инструменты обретают новую жизнь: их квантовые свойства используются для того, чтобы превратить их в подобие фундаментальных элементов квантовых вычислений. «Эти флуоресцентные белки, которые все используют в качестве флуоресцентных меток, на самом деле можно превратить в кубиты», — говорит Питер Маурер, инженер-квантовик из Чикагского университета в Иллинойсе. Эта идея «звучит как научная фантастика», — признаёт Маурер. Но физика здесь не нова, и уже доказано, что этот подход в принципе работает.
Читать далееРынок CRM-систем в России плотно занят: Битрикс24, amoCRM, Мегаплан и другие. Но к сожалению, бесплатных и открытых мало или возможно нет вовсе.
Open-source дает полный контроль над кодом, self-hosted развёртывание и возможность кастомизировать каждый компонент. Сэкономленные деньги с лицензии ПО можно потратить на дополнительную кастомизацию под себя или другие цели кампании.
Я создал FARA CRM — open-source CRM, построенную на современном стеке, запускающуюся одной командой из Docker.
Стек: Python 3.12+ · React 18.2.0 · FastAPI · Docker · PostgreSQL
Читать далееИдея этого проекта родилась у меня после двух событий.
Первое случилось в самолёте. Мне было нечем заняться, и я решил посмотреть фантастический фильм «Она» (Her, 2013). Я человек впечатлительный, и если в истории есть драма, то легко начинаю сопереживать героям. Фильм рассказывает об одиноком мужчине, который устанавливает ИИ‑операционную систему, начинает с ней общаться и постепенно влюбляется в неё. Спойлерить не буду - фильм действительно стоит посмотреть.
Второе событие - это хайп вокруг OpenClaw. Я как раз вернулся домой, занялся своей обычной работой и в свободное время решил изучить, что это такое. К тому моменту вокруг проекта уже было много шума, и он успел набрать около 300 тысяч звёзд на GitHub.
Меня это действительно впечатлило. Ощущение было почти как в фильме про Железного человека: ты запускаешь ИИ, и он, как Джарвис, выполняет задачи и отвечает тебе почти как живой собеседник. Но довольно быстро стало понятно, что у такого подхода есть две серьёзные сложности.
Первая - нужно хотя бы в общих чертах понять, как внутри устроен OpenClaw: что такое ноды, каналы, связи между компонентами и прочие технические сущности.
Вторая - всё настраивается через пошаговый текстовый визард в терминале. Такой подход скорее рассчитан на технически подготовленного пользователя или ИИ‑специалиста, а не на обычного человека.
Неудивительно, что сегодня многие компании либо предлагают уже преднастроенный OpenClaw у себя в облаке, либо продают услуги по его установке и настройке под конкретные задачи.
Читать далееПродолжение серии статей о параллелях между недокументированными особенностями советских ПМК и концепциями Карлоса Кастанеды, начало — тут...
Читать далееВокруг AI слишком много шума, поэтому особенно полезны материалы, которые показывают не теорию, а реальные рабочие сценарии. В этой статье собрана подборка ресурсов HubSpot о том, как применять нейросети в маркетинге, продажах и ежедневных задачах — от промтов и AI-поиска до автоматизации и AI-агентов.
Открыть подборкуРефакторинг — это не уборка, это хирургия на живом коде. Большинство провалов здесь не технические: смешали рефакторинг с улучшениями, сделали один огромный коммит, затянули релиз — и три недели работы ушли в мусор. Собрал 10 ошибок из реальных проектов: с примерами кода, разбором механики и способами не наступить на те же грабли.
Читать далееЭто не отдельная статья, а продолжение статьи про теорию объектов в с++, почему объекты в плюсах такие какие есть. Все завершенные главы я также выкладываю на github'e в английском и русском варианте. Продолжаем разбираться в теории С++...
Отдельного разговора заслуживает идентичность объектов, потому что в реальном мире конкретные сущности обладают идентичностью и Сократ останется Сократом независимо от того, перекрасил ли он волосы, сменил адрес или умер, а государство остаётся тем же государством, даже если меняет флаг, конституцию или размер населения.
Чтобы отразить это в программе, объекты, представляющие конкретные сущности, нуждаются в своём определении идентичности, которая отделена от текущего состояния. Удобный способ ввести такую идентичность будет сделать некий токен идентичности, уникальное значение, которое выражает "кто это", а не "в каком он сейчас состоянии". Таким токеном может быть, например, адрес объекта в памяти, индекс в массиве, или табельный номер сотрудника в кадровой системе и проверяя равенство токенов идентичности, мы фактически проверяем тождественность объектов: один и тот же объект или разные.
На протяжении жизни программы конкретный объект может менять свои токены идентичности, потому что его могут переместить в другой участок памяти или переложить из одного контейнера в другой, или назначить ему новый идентификатор, но логическая идентичность сохраняется, если мы поддерживаем сопоставление между "старым" и "новым" токеном.
Читать далее