Статьи
Пишу об AI-инжиниринге, архитектуре программных систем, инженерных практиках и техническом лидерстве.
По темам
AI-инжиниринг
Заметки про MCP, агентов, инженерию контекста, RAG, векторный поиск и встраивание AI в реальные программные системы.
Программная инженерия
Архитектура, сложные системы, эволюция legacy, поставка и инженерные практики, которые оставляют систему изменяемой.
Последние материалы
-
Что такое MCP (Model Context Protocol) и как он работает
MCP не делает модели умнее. Он стандартизирует, как AI-приложения подключаются к файлам, базам данных, API и другим внешним системам.
-
Context Engineering: что это и как управлять контекстом LLM
Context Engineering — это проектирование рабочей памяти LLM: что положить туда сейчас, что оставить снаружи и в какой момент это сделать.
-
Векторный поиск и embeddings: как работает поиск по смыслу
Обычный поиск сравнивает слова. Vector search сравнивает embeddings: похожие объекты оказываются рядом в пространстве, даже если формулировки почти не совпадают.
-
Code review с AI: что проверять, когда код стало слишком легко писать
AI удешевил написание кода, но не понимание. Review смещается с синтаксиса на intent, scope, архитектуру и вопрос, должен ли этот код вообще существовать.
-
Как внедрить AI в legacy-систему без переписывания проекта
Legacy остаётся system of record, а AI появляется рядом как новый слой: adapters, read-only сценарии, shadow mode и постепенное расширение возможностей.
-
Кто отвечает за код, написанный AI
AI поменял, кто производит текст, но не то, кто решает оставить его в системе. Ownership остаётся у человека, который понимает изменение и принимает merge.
-
MCP для Obsidian: как подключить заметки к ChatGPT, Claude и Cursor
Obsidian и LLM долго жили отдельно: заметки копировались в чат руками. MCP-сервер даёт модели доступ к vault — искать, читать и при необходимости изменять заметки.
-
AI ускоряет внесение изменений быстрее, чем мы успеваем их осмыслить
ACDD, атомарное мышление и контроль ответственности в эпоху AI. Как история коммитов отражает инженерное мышление и почему атомарные изменения особенно важны при работе с AI-кодингом.
-
Системные языки
Системными языками программирования обычно называют такие, на которых создают низкоуровневые ПО вроде операционных систем, драйверов или новые языки программирования.
-
Как компилируется Rust
Компилятор Rust, известный как rustc, проходит через несколько стадий, чтобы преобразовать исходный код на языке Rust в исполняемый файл.
-
Немного про Rust
Язык программирования Rust был создан для разработки безопасного и эффективного ПО, позволяя контролировать низкоуровневые детали, при этом обеспечивая безопасность и предотвращение ошибок.
-
Хвостовая рекурсия
Хвостовая рекурсия — это форма рекурсии, в которой рекурсивный вызов становится последней операцией в функции. Хвостовая рекурсия быстрее за счет оптимизации компилятором.
-
Ранний возврат ошибок
Ранний возврат ошибок — это подход, при котором функция возвращает ошибку как можно раньше, если ее можно определить. Это облегчает чтение и понимание кода.
-
Garbage Collector
Сборщик мусора (Garbage Collector, GC) — это автоматическое управление памятью, которое избавляет разработчиков от ручного выделения и освобождения памяти, предотвращая ошибки и сбои программы.
-
Зачем изучать СИКП
СИКП (Структура и интерпретация компьютерных программ) является одним из наиболее известных учебников по программированию. Изучение СИКП полезно по нескольким причинам.
-
Zero Cost Abstractions
Благодаря отсутствию GC в Rust мы получаем нулевую стоимость абстракций (zero cost abstractions). Дело в том, что абстракции обычно не даются нам бесплатно.
-
TOML
TOML (Tom's Obvious, Minimal Language) — это простой язык конфигурации, разработанный Томом Престон-Вернером. Активно используется в Rust для указания зависимостей библиотек Cargo.
-
Стек и куча
В большинстве языков разработчик не думает о том, как данные хранятся в памяти. Но в языках системного программирования, одним из которых является Rust, то, какое значение находится в стеке или в куче, влияет на поведение языка.