В августе я отдал ИИ-агенту не отдельную
задачу, а проект целиком: замысел, дизайн, код, тексты и выкладку.
За 25 рабочих дней получился сайт из 145 страниц. Эта публикация
разбирает, как была устроена работа, что в ней измеряется точно
и где заканчиваются выводы из одного авторского проекта.
Паспорт исследования
Вопрос
Что меняется, когда человек и ИИ-агент вместе ведут
сложный веб-проект от замысла до выкладки?
Материал
Файлы проекта, сборка и журналы 284 сессий
за 1—26 августа 2026 года.
Граница
Числа описывают объём и процесс. Они не доказывают
качество и не сравнивают результат с командой без ИИ.
Портрет из 14 000 цифрхудожник, аниматор, фронтендервечер
Два десятка тетрадных игркоманда на кварталнеделя
Лупа с настоящей оптикойкурс физики и месяц на шейдердень
Своя система вёрстки и темдизайнер и верстальщикдва дня
Слева — во что идея обходилась мне раньше.
Справа — сколько она заняла в августе.
У каждого, кто долго делает продукты, есть папка идей, до которых
не дошли руки. У меня она копилась двадцать лет. Каждая идея в ней
стоила чужих месяцев, а платить за эти месяцы было некому.
В одиночку такая идея отнимала столько времени, что интерес
кончался раньше работы, и она возвращалась в папку. В августе
я увидел, что цена упала — и упала там, где раньше было дороже
всего. Шаблонный лендинг и десять лет назад собирался за день;
подешевело то, чего никто бы не заказал.
Вещь, интересная буквально одному человеку, теперь
стоит вечер. А раз она стоит вечер — её не жалко выбросить.
Это и есть первое, что я на этом сайте проверял. Раньше проверка
стоила месяцев, поэтому я её и не делал, и идея оставалась
в голове, где ни одна из них ни разу не провалилась.
Теперь вещь, которая может не понравиться никому, кроме меня,
делается за вечер: посмотрел живьём и стёр.
Второе, что я проверял, касается читателя. Охвата я не ищу:
сайт задуман полезным прежде всего мне самому и кругу друзей, коллег
и товарищей, и для каждого из них живёт по-своему.
Могут ли сайты снова стать личными — такими, где автор
не гонится за охватом и говорит так, как считает нужным?
Я отвечаю «да, но по-новому», и страница, которую вы читаете, —
часть этого ответа.
Три задачи, которые я себе поставил
Проверить ИИ на комплексном проекте.
Пройти весь путь на одном проекте — замысел, дизайн, разработка,
продакшен, выкладка — и посмотреть, на каком шаге пара из человека
и агента развалится.
Свести в одном проекте картинку, звук и текст.
Текстовая часть тянет на отдельный рассказ: архив работ,
заметок и комментариев потребовал ревизии не меньшей,
чем код.
Сделать разом отложенные хобби-проекты.
Два продукта Choosy, сборник из двадцати четырёх игр, двойник
для рекрутеров и исследовательский раздел, который наружу
пока не выходит.
Что я заодно попробовал руками
Каждая из этих вещей годами оставалась прочитанной и отложенной.
В августе я опробовал их сразу все, и каждую — на странице, которую
открывают читатели.
рисованная анимациямоушн и роликишейдеры и оптикафизика на холстетипографика по Мильчинудизайн-система на переменныхдве темы без инверсииSEO и оптимизация под ИИ-агентовсинтез речиредактура и контенткэш и отпечатки файлов
Показанное здесь — меньшая часть сделанного: на каждую вещь,
которая осталась, приходится несколько заходов, не переживших первого
взгляда. Половина из 34 стендов лаборатории — как раз такие.
это нормальная цена — теперь её можно платить
§ 2 Заходы: два сайта, которые не открылись
Папка «потом» осталась не только на словах. Личный сайт
я начинал дважды — в 2006—2007 годах и в 2009—2010-м, —
и оба раза дело кончалось макетами: домен жил, страницы
не выходили. С тех пор они пролежали в архиве и на сайте
показаны впервые. Показываю потому, что по ним видно, чего
я хотел от личного сайта за двадцать лет до того, как это
стало стоить месяц. Каждый макет открывается целиком
по нажатию: на телефоне полоса ужата, и набор 2006 года
иначе не прочесть.
2006: лента, у которой единица — день
Первый заход держался на двух блоках. Сверху «Панорама
работ» — четыре колонки со ссылками и датами: сайты,
графдизайн, «Барахолка» со старыми работами и экспериментальный
стол. Снизу «Лента рутины», и мерила она дни: под каждым кадром
стоит число месяца, а число, в которое ничего не вышло,
в ленту не попадало — между четвёртым и вторым в полосе
дырка.
В подвале — счётчик, бегущая строка новостей и приписка,
которой на главной странице место особое: «Да, у меня нет
домашней странички».
Первая раскладка: имя в плашке посередине,
четыре колонки работ, лента днями. Внизу слева — заповедь,
которая доехала до подвала этой страницы.
Тот же заход, доведённый: имя ушло
в подпись, заголовком стало слово «Портфолио»,
и при нём завёлся счётчик работ — 40.
2010: главная начинается с признания, что сайта нет
Спустя три года я вернулся к той же затее и начал
с объяснения. Под именем на главной стоит строка: «Сайт
не открыт с середины 2007 года по сегодняшний день».
Работы к тому времени отдавались файлом — «Часть портфолио
за 2008 год, PDF, 400 Кб», — а внизу справа считался
приход: «Здесь было 23 403 человека и Амик».
Правки к макету я вносил прямо поверх вёрстки, красным:
«При нажатии выезжает серая плашка снизу. Сама ссылка остаётся
статичной». Тем же красным сегодня правит плёнку голос
на «Резюме».
Чистовой вариант. Под именем — строка
о том, что сайт не открыт; справа PDF на 400 Кб,
заменявший раздел работ.Он же в работе: красным — что должно
происходить по нажатию и что означает кружок с цифрой
у пункта меню.
Лента к тому времени выросла в отдельный раздел —
с разбором по годам, гистограммой публикаций и счётом:
«Всего опубликовано 45 работ, из них 432 баннера, 5 сетов
иконок». Тогда же у сайта появился переключатель языков
и почта, которой я пользуюсь до сих пор.
«Рутина за 2009 год»: работы по месяцам,
слева счёт событий, справа гистограмма — в каком месяце
сколько вышло.
Двуязычный вариант: переключатель RU / EN,
месяцы ленты по-английски — и в подвале уже та самая
почта. Середина пуста потому, что врезка «Основные
направления» здесь закрыта.
Админка: календарь вместо списка записей
К ленте прилагалась своя админка, и устроена она была
календарём: месяц сеткой, работа лежит в том дне, в который
вышла, сегодняшнее число подсвечено, переход между месяцами —
стрелками с клавиатуры. Записи в ней не перечислялись —
их раскладывали по числам, и пустая неделя была видна сразу.
Февраль 2009-го в админке. Работа лежит
в своём дне, а не в строке списка: так видно, сколько
дней подряд ничего не выходило.
Что из этого дожило до сегодняшнего листа
Обоих сайтов нет, но кое-что перешло сюда дословно.
В подвале 2006 года стоит: «Копирование материалов сайта
без моего благословения является грехом, нарушением
8-й заповеди — „Не укради“». Та же строка стоит внизу
страницы, которую вы читаете: за двадцать лет из неё ушло
одно слово — «сайта».
Перешла и сама мысль о ленте. «Мои
заметки» — это та же «Лента рутины»: короткие публикации,
которые не заслуживают отдельного рассказа, но жалко терять.
Разница в том, что двадцать лет назад их приходилось
раскладывать по календарю руками, а теперь запись пишется
в телеграме и приезжает на сайт сама.
третий заход открылся
§ 3 Система: тетрадь, ручка, маркер
Дизайн-система пришла со школьного стола: тетрадь в клетку,
шариковая ручка, маркер. Я дизайнер по первой профессии, и краски
брал по памяти, а не по палитре.
Тетрадь, ручка, маркеры — стиль моего детства
и юношества. А правки, перечёркивания и врезки — не дань стилю:
грамматика никогда не была моей сильной стороной.
Бумагалист, на котором всё лежит: тёплый белый днём, тёплый чёрный в изнанке
Черниланабор, рисунки пером, всё написанное
Знакрамка листа, значки шапки, приписки от руки
Правкачерта поверх зачёркнутого — одна на весь сайт
У каждой краски одна работа, и подпись говорит какая.
Пятой на сайте нет: четыре помещаются в пенал, пятую уже
пришлось бы объяснять.
Красок на том столе было четыре, и на сайте их ровно столько же.
Бумага белая, чернила чёрные, синим набраны знаки — рамка листа,
значки шапки, ссылки, перо схем, большие числа, — а красный отдан
правке и больше нигде не встречается.
Синих при этом два, и делят они работу как две ручки в пенале.
Чистый стоит там, где краска обязана быть одинаковой на любой
бумаге: рамка, значки шапки, приписки от руки. Рабочий набирает
ссылки и в темноте светлеет, иначе его не прочитать.
Когда лист выворачивают, местами меняются белое с чёрным:
бумага чернеет, перо светлеет. Синий уходит в красный вместе
с листом, и на этой странице вы видите его красным. Красный правки
не меняется никогда — пометка обязана выглядеть одинаково на любой
бумаге, — поэтому на изнанке знак и правка оказываются рядом двумя
почти одинаковыми красными. Это единственное место на сайте, где их
можно спутать.
Отсюда красная черта поверх слова и маркер поверх закрытого: те же
знаки, которыми правят на бумаге. Чертит их перо, а не браузер —
тонкая линия посреди буквы и серая плашка выглядят настройкой, а рука
должна оставаться рукой.
Шаблона у страниц при этом нет, и бумага у каждого раздела
своя: у заметок за листом плывёт облако, у игр лист тетрадный,
у лаборатории чертёжный, у кино тёмный зал. Это не разнобой,
а условие: шесть одинаковых подложек подряд читаются одним слайдом,
повторённым шесть раз. Выбирается подложка по смыслу — схеме нужна
сетка, шейдеру экран, диаграмме лента без рамки, а единство
держится на материале.
Миллиметровкаглавная, «Изнанка»
Тетрадная клетка«Бумажные игры»
Точки«Публикации прошлых лет»
Косая линейка«Резюме»
Линейкасписки и ряды на этой странице
Крапинкаблог, страницы ответа
Тёмный экраншейдеры, зал Choosy
Лентадиаграммы: кромки растворяются
Узоры настоящие: плитка берёт ту же переменную, что
и сама страница, и в натуральную величину. Поправят узор —
поправится и плитка. Крапинка кажется пустой не зря: её тайл
480 пикселей, и на плитку попадает две-три точки — ровно так
она и лежит на странице блога.
Общий у них шаг — 15 пикселей, и это то же число, что у тетрадной
клетки. Игровая клетка ему кратна, а холст игры сам сдвигается
на доли клетки, чтобы лечь на фоновую сетку страницы. Косая линейка
«Резюме» — та же клетка, повёрнутая на 45°, и шаг у неё поэтому
21,213: это 15 × √2.
Гарнитур четыре, и у каждой одна работа. Рука
стоит под наклоном −4,5° — тем же, что и все приписки сайта,
от «просто Амик» на главной до реплик кнопки темы. Курсива
у неё нет: у почерка нет наклонного начертания, и браузер
рисовал бы поддельное.
Последнее в этом ряду не видно вовсе, но без него не работает
остальное: правка обязана дойти до читателя. Браузер,
который уже был на сайте, берёт файл из кэша, и человек видит
вчерашний CSS поверх сегодняшней разметки. Поэтому адрес файла меняется
вместе с содержимым: сборка считает отпечаток от самого файла
и дописывает его к ссылкам. Страница не кэшируется, отпечатанный
файл кэшируется навсегда. Так на 404 надпись от руки однажды оказалась
набрана чужим шрифтом, а стрелка при ней — вдвое жирнее
положенного.
Висячая пунктуация и прочее, чего не заметят
Русский текст набран по «Справочнику издателя и автора» Мильчина
и Чельцовой: тире с неразрывным пробелом, «ёлочки», наращения
падежных окончаний. За набором следит сторож в сборке — прямые
кавычки, три точки вместо многоточия, дефис вместо тире и неверное
наращение до страницы не доезжают.
Одну деталь заметят разве что дизайнеры. У эпиграфа
на главной открывающая кавычка вынесена на поле целиком:
левый край набора держит первая буква, а не знак препинания.
Отступ первой строки я приравнял к ширине знака, а не к его
половине: кавычка написана рукой и в 1,4 кегля, и на половине
первая строка отъезжала от остальных на семь пикселей.
как обычно
«Вещь,
интересная одному человеку, стоит вечер» —
так я объясняю, зачем сайт вообще есть.
как на главной
«Вещь,
интересная одному человеку, стоит вечер» —
так я объясняю, зачем сайт вообще есть.
Отвесная черта — кромка колонки. Сверху
кавычка стоит внутри неё и толкает букву вправо; снизу кавычка
вынесена, и кромку держит буква. Знаки набора здесь настоящие,
но написаны рукой сайта и красными чернилами пометок.
У узлов есть имена
Повторяющийся узел берётся с эталона и заново не рисуется: две
карточки с разной тенью или две формы с разным полем на одном экране
читаются двумя сайтами. Поэтому у каждого узла есть имя и страница,
где он доведён до конца. Имён девятнадцать — от листа, рамы и ступеней
вёрстки до панели, всплывающей карточки и ручек, которыми настраивают
эффект. Имя при этом не класс: в разметке классы остаются страничными,
а имя нужно затем, чтобы об узле было чем говорить — в задаче,
в комментарии, в переписке с агентом. Ниже два узла из девятнадцати,
оба живые.
Узел · am-icon
Рисованный знак: попкорн у кино, шпаги у игр,
дуделка у резюме, книга у Choosy. Черта у всех одна,
та же, что у пера «Бумажных игр»: окружность неидеальна,
конец обводки перехлёстывает начало, углы скруглены, а дрожание
вписано в координаты руками и на ходу
не считается — иначе знак менялся бы при каждой
перерисовке. Заливка достаётся зрачку и искрам. Знак сперва
чертится штрихом, а дочертив, начинает кривляться: это второе
движение, отдельное от черчения.
Тем же пером начерчены знаки, стоящие
прямо в строке набора, — молния и обе кавычки
фирменного эмодзи-пака: такой знак растёт вместе с кеглем,
а растр в сто пикселей мылится на ретине
и разваливается в заголовке. На десктопе знак
показывает курсор-подпись по наведению; там, где наводить
нечем, он встаёт прямо в строку оглавления —
весь набор обязан достаться обеим половинам читателей.
Узел · am-format
Как выглядит форматирование, приехавшее извне. Записи блога
пишутся в телеграме, а там есть зачёркнутое слово
и спойлер: браузер рисует первое тонкой чертой посреди буквы,
второй — серой плашкой. На сайте это чертит перо —
красная черта от руки поверх зачёркнутого и жирный маркер
Z-образным ходом поверх закрытого. Координат у пометки нет:
место она каждый раз спрашивает у самого набора и переезжает
вместе со словом, когда строка перенеслась иначе.
⚡ Московский Лондонский робот-стартап стал
единорогом за два года.
Дальше — то, что я
закрыл до нажатия.
Ткните в замазанное: маркер сотрётся.
Ещё раз — вернётся.
Красная черта одна на весь сайт
и от темы не зависит: пометка обязана читаться одинаково
на любой бумаге.
Маркер, наоборот, живёт цветом пера — на белой бумаге
чёрный, на чёрной белый. Слова под ним прячет прозрачный
набор, а не сама краска: не нарисовался слой —
остаётся плашка, и закрытое всё равно закрыто. Открывается оно
тем же ходом, которым уходит всё нарисованное на сайте,
только без огня: маркер снимают, а не жгут. Слова
при этом открываются по мере стирания — снята
треть маркера, читается треть.
Третий узел лежит поверх всех страниц сразу.
Общий слой
Курсор договаривает за ссылку
Ссылка говорит, куда ведёт. Курсор добавляет, зачем туда идти.
1
За стрелкой с задержкой едет синяя точка. Над ссылкой она разворачивается в плашку со словом: «читать», «играть», «выбрать». Синий тот же, что у рамки листа.
2
Значок чертится на глазах. У двадцати ссылок вместо слова показывается рисунок, и рисуется он штрих за штрихом. Держится это на pathLength=1: длина любой линии приравнивается к единице, и «начертить за 0,34 с» пишется одним правилом. Сверх черчения у девятнадцати значков есть своё кривляние.
Изнанка — это ещё и режим
Имя страницы работает в обе стороны. Изнанка — то, что лежит
под лицевой стороной работы: правила, отказы, переделки, решения,
которых никто не заметит, если они приняты верно. И изнанка — другой
мир, в который страница выворачивается кнопкой темы. Заголовки
на игре слов я считаю отдельным жанром: так их делали в деловой
газете в начале десятых, и я собирал их годами.
Тёмная сторона у этой страницы стоит по умолчанию, так что изнанку
вы уже видите. Вот обе стороны рядом.
лицоизнанка
Оба листа нарисованы одними и теми же координатами,
разными у них только краски. Бумага и перо меняются местами, синий
уходит в красный вместе с листом — а красная черта правки посреди
строки на обеих сторонах одна и та же.
По кромкам изнанки вьётся гирлянда, в воздухе плывут споры,
изредка бьёт гроза. Вдоль правого края идёт жилец с цветком вместо
головы, пока вы листаете; дойдя до низа, он сходит на нижнюю грань,
и мимо него уезжают четверо велосипедистов.
Вместе с изнанкой заводится мелодия; выключить её можно значком
в шапке. Esc гасит всё живое разом, и само оно не заводится снова.
При настройке «меньше движения» остаётся неподвижная гирлянда,
и музыка сама не играет.
эту сторону листа мало кто видит первой
§ 4 Прогулка: двенадцать разделов и что в них спрятано
Надстрочные числа у «Медитирую» — коды ответа
сервера, и каждый объясняет свою страницу: 303 See Other — «то самое,
но смотрите в другом месте», 508 Loop Detected — обход зациклился
и конца не будет.
84механики движения и интерактива на страницах сайта
21рисуется холстом, из них 4 — шейдерами WebGL
89 %выключаются при настройке «меньше движения»
1чужая библиотека на все эти механики: three.js за облаком 404
Сайт статический: HTML, CSS и ванильный JS без сборщика. Чужого
кода здесь два файла: three.js в облаке за страницей 404 и chess.js,
который судит ходы в шахматах. Остальное написано для этого сайта
и больше нигде не используется.
Главное правило структуры: страница — это папка
с index.html, и всё, что принадлежит только ей,
лежит рядом. В корне — общее: шапка, подвал, тема, шрифты. Адрес
отдаёт сам сервер, без единого правила переписывания. Правило
переписывания однажды молча погасило у меня целый раздел работ:
рядом с файлом появилась папка с тем же именем, и страница
перестала открываться, не сказав об этом ни слова.
Адресов в карте сайта 65. Ещё восемьдесят страниц в карту
не входят: раздел работ, пока закрытый; лаборатория, где движение
проверяют до того, как выпустить его на страницу; четырнадцать
страниц ответов сервера — и 404, которой по определению нет.
У каждой страницы есть markdown-двойник: то же содержание
без разметки, втрое легче. Сайт читают не только люди, и ИИ-агенту
незачем тратить половину контекста на меню и скрипты.
Почти каждая механика работает в паре с соседней, и включаются
они, только когда до них дотянутся: наведут стекло, нажмут
на портрет, дослушают запись.
Правила у движения жёсткие. Без JS на странице остаётся содержание.
Тяжёлое грузится в момент, когда кадр доехал до экрана. Esc гасит всё,
что играет, и остановленное руками само больше не заводится.
При системной настройке «меньше движения» само не запускается ничего.
Дальше семь остановок. По одной на раздел, ради которого
я его и затевал.
Главная выстроена как оглавление книги — или дипломной работы.
На десктопе читатель по умолчанию не видит ни одной картинки,
хотя графики здесь больше, чем на любой другой странице сайта.
Одна строка, четыре слоя
Имя во всю колонку выглядит как набранный заголовок. Под стеклом видно, что в нём происходит ещё три вещи.
1
Кегль посчитан, а не выставлен. Скрипт меряет натуральную ширину набора и делит на неё ширину колонки. Правый край последней буквы всегда приходит туда же, где кончается линейка. В CSS кегль стоит запасным, на случай выключенного JS.
2
Стекло преломляет свет. Луч идёт через плоско-выпуклую линзу и считается по Снеллиусу. Увеличение в середине 2,2, у кромки 3,5, поэтому читать под стеклом можно только серединой. Ходит оно по полосе, которая шире строки: иначе «Жизнь» у крыши букв всегда оставалась бы у края.
3
Внутри букв идёт «Жизнь» Конвея. Маской служит сам глиф: клетки бурлят по всему листу, но видны только там, где стоит буква. Без подсева поле садится в неподвижные фигуры за полминуты, поэтому каждое поколение подсевается заново.
4
В буквах живут. Десять сюжетов: на вершине «А» дозорный с трубой, между горбами «м» канатоходец, по кромке чаши «б» бежит белка, под перекладиной «н» проходит гондола. Геометрия букв измерена по той же клеточной маске, поэтому при смене кегля сюжеты переезжают вместе с буквами.
Это расчёт. Графику я спрятал в детали, чтобы набор и вёрстка
читались сами по себе, без спецэффектов, которые их перекрикивают.
Хотелось, чтобы вёрсткой и набором можно было
насладиться без излишеств. А кто присмотрится — увидит
остальное.
Под стеклом два слоя, и оба про одно.
«Жизнь» Конвея. Я считаю её наглядным
имитационным доказательством того, как устроена эволюция: правил
четыре, замысла нет, а из случайного посева выходят структуры,
которые движутся, размножаются и гибнут. Внутри букв она идёт
по маске глифа, и знак, который выглядит набранным, оказывается
живым.
Пиксельные человечки. Второй слой — дань
пиксель-арту: в моих ранних работах он виден невооружённым
глазом. Тогда это была необходимость: полупиксели влияли на вес
картинки, оптимизацию делали руками, и делал её дизайнер
или продакт, а не «профильный разработчик».
Сюжеты в буквах читаются метафорами, и я их не прячу.
Человечек лезет по склону «А», срывается и лезет снова. Белка
бежит в чаше «б», не сдвигаясь с места. Канатоходец держит
равновесие между горбами «м». По уровню под словом бежит дино
и перепрыгивает кактусы — тот самый, что бегает в браузере
без интернета.
Текста здесь мало, и это тоже расчёт: так я знакомлюсь
с людьми. Короткого ответа на вопрос «чем ты занимаешься» у меня
нет — ответ зависит от года.
Разнорабочий. За двадцать лет — дизайнер,
вебмастер, маркетолог, продуктолог, предприниматель. И это
не жалоба: монотонной работы у меня почти не было, и я этому
рад.
Поэтому вместо должности на странице стоит табло, которое
перебирает роли, а вместо портрета — инсталляция: фотография,
разлетающаяся осколками, и куча кубиков внизу, живущая своей
физикой.
Одно нажатие запускает три вещи сразу
Смена роли в заголовке тянет за собой портрет рядом. Кубики внизу живут своей физикой.
1
Портрет разлетается осколками. Фотография разрезана на треугольники заранее и лежит кусками одной картинки. Каждый уезжает по своей траектории, а собирается медленнее, чем разлетался. Движение делает CSS, холста здесь нет.
2
Табло перебирает роли. На месте второго слова несколько мгновений идут случайные буквы, из них выпадает следующая роль. Ширина строки взята по самому длинному слову набора, поэтому соседний текст не дёргается.
3
Кубики считаются кругами. При столкновениях кубик — круг, при отрисовке — квадрат: сближение решается раздвиганием. Нажатие собирает кучу в столбики. Esc доводит текущее движение до конца и останавливается, потому что кубики, замершие на полпути, выглядят сломанными.
Из прикладного там же — короткая справка об опыте и навыках.
Она стоит затем, чтобы машины были довольны: читают её не столько
люди, сколько поисковики и агенты.
PDF на этой странице не скачивают. Вместо него стоит
автоответчик с одним непрослушанным сообщением — для рекрутеров,
хедхантеров и любителей блиц-интервью.
Резюме, которое проигрывают
Вместо кнопки «скачать PDF» — автоответчик. Сообщение играет, расшифровка идёт следом.
1
Дорожка зажигает полосы по ходу записи. Пройденная часть светится, дальше идёт тихая. В конце звучит сигнал, как на кассете.
2
Подсветка держится на отметках времени. У каждой строки расшифровки своя отметка, поэтому перемотка и пропуск не сбивают её с толку.
3
Текст никуда не девается. Пропустить запись можно в любой момент: расшифровка остаётся на месте и читается глазами.
Голос на плёнке зависит от листа. На тёмном её перехватывает
тот, у кого шлем и дыхание; на светлом — тот, кто прожил
девятьсот лет и говорит с конца. Ни франшиза, ни персонажи
по имени не названы, и это условие, а не забывчивость: шутка
держится как пародия ровно до первого имени.
Второй ответ на этой странице серьёзнее. Я думаю, что найм
высокоэкспертных специалистов вот-вот поменяется, и вот почему.
Скоринг по ключевым словам HR освоили давно, а ИИ дал ему
второе дыхание, ничего не изменив по существу: путь, который
не складывается в одну специализацию, такой фильтр не читает.
Настоящих профессионалов в этом ремесле я за двадцать лет
пересчитываю по пальцам одной руки — как и в риелторском.
Отсюда двойник. Он знает цифры, проекты, контекст проектов
и людей, дообучен на моих ответах на стандартные вопросы,
упакован скиллом и отдаётся MCP-сервером: поговорить с ним
может и человек, и агент на той стороне.
О моём опыте он расскажет лучше, чем я сам, —
как о моём здоровье раньше рассказывал врач по анамнезу,
диагностике и анализам.
Дальше идёт прогноз. Агенты общаются с агентами, пока
не найдут кандидата достаточного качества; прескоринг
и двухстраничное профильное саммари достаются им, а разговор
человека с человеком начинается там, где он и должен, — после
мэтчинга.
Три архива: статьи, заметки и промостраницы 2013 года
«Публикации прошлых лет» — собрание сочинений: статьи разных
лет, которые я забэкапил на сайте целиком, а не ссылками на чужие
домены. Ссылка на оригинал стоит рядом, но текст живёт здесь
и переживёт закрытие любой площадки. У двух материалов оригинала
уже нет, и об этом сказано словами.
За разделом прячется вторая работа. Несколько агентов помогают
мне готовить публикации будущего — вернее, образ будущего,
без которого не строится ни стратегия, ни любопытство.
«Мои заметки» устроены проще. Шеф-редактор — тоже агент —
подбирает материалы и новости по моим темам; то, что вызывает
отклик, я комментирую и выкладываю в телеграм-канал, а оттуда
запись через минуту стоит на сайте со своим адресом, разметкой
и кадрами.
Третий архив — сами работы.
Избранные работы
Промостраница 2013 года открывается и работает
У пяти работ Сотмаркета под текстом лежит сама страница со своими скриптами и обратным отсчётом. Копий четырнадцать, сняты с боевого сервера в январе 2015-го.
1
В копию можно потыкать. Прокрутка, счётчик до конца акции, переходы по витрине — всё работает так же, как работало тогда.
2
Наружу копия не ходит. Счётчики выключены, шрифты и картинки лежат у нас, ссылки на умерший сервер магазина погашены.
3
Год в углу ставит скрипт. Уголок с годом не лежит в разметке копии, его дорисовывают поверх. Он ведёт к описанию работы.
Бумажные игры — детское увлечение: часть из них я в детстве
и правда расчерчивал на полях. Другую часть открыл для себя, пока
делал раздел.
Морской бойБалдаТочки и рамки
На карточках хаба начерчены партии —
тем же пером и по той же клетке, что и настоящее поле.
Рисунки собирает сборщик, руками их не правят.
Собрано это как собственный сборник в эстетике, которую
я выдумал: один лист, одно перо, одна палитра на все двадцать
четыре игры. Побочная польза — насмотренность в гейм-дизайне,
которой у меня до этого не было.
Мне нравится думать, что это мой сборник.
Посмотрим, что из этого выйдет.
Правил у раздела больше, чем видно. Поле чертится на глазах
и прогорает, когда партия кончилась. Игровая клетка кратна
тетрадной, а холст сам сдвигается на доли клетки, чтобы лечь
на фоновую сетку. Сборка при этом не выпустит наружу нерешаемую
нонограмму, шахматную ловушку без обещанного мата
и несобираемую раздачу пятнашек.
Двенадцать лет назад мы с товарищем запустили Choosy
и потратили на разработку несколько месяцев. В августе та же
работа уложилась в вечер.
Это личный памятник переменам. И заодно ответ
на вопрос «что посмотреть» — теперь мне есть чем
поделиться.
По двум адресам стоят два самостоятельных продукта. У них своя
шапка, свой свод правил и две разные палитры. Устроены они как
приложения: один файл на продукт, экраны рисует роутер, адреса
меняются на ходу. Правила этого сайта на них не действуют,
и наоборот.
Кино: выбор без списка
Шестьдесят лент, и ни одного каталога с фильтрами. Ленты идут
колодой. Слабая прокрутка листает по одной, бросок уносит дальше:
два разных действия с настоящей инерцией.
Кино не показывают на свету. Внизу — счёт коллекции: 60 лент, 158 «Оскаров» на всех, 286 персон.Награды — значками, а не списком. Ниже начинается стена фактов: сколько заплатили за права, во что обошлась одна сцена.«Кадры» — полотно, сомкнутое по обеим осям: тянешь в любую сторону и никогда не упираешься в край.
Оценки остаются в браузере и перестраивают ленту «дальше».
Аккаунта нет, и заводить его негде.
У сорока лент собран лист фактов, всего их 373:
гонорары, отказы, дубли, вырезанные сцены. Источник у каждого
факта записан в данных и проверяется сборкой, а читателю
он не показывается — ссылка на сноску переводит разговор
в справку.
Книги: сначала спор, потом ответ
Пятьдесят книг нон-фикшн, и у каждой — утверждения,
с которыми можно не согласиться ещё до чтения.
Формулировок на весь набор 62, и одна и та же стоит
у нескольких книг: по ней они и спорят друг
с другом.
А книгу читают на бумаге. Тот же каркас, тот же росчерк от руки — и совсем другой лист.Обложка — настоящая, того издания, что вышло. Три кнопки справа: прочитано, отложить, не моё.«Зачем читать» — это три утверждения, с которыми можно не согласиться. Спорите вы первым, книга отвечает второй.
Порядок жёсткий. Сначала вы говорите «согласен»,
«не согласен» или «не думал», и только потом появляется ответ
книги. Прочитав ответ первым, спорить уже не с чем.
У каждой книги есть оппонент: другая книга из набора, которая
с ней спорит. Число изданий, языки и оценка качаются из открытых
баз. Оценку прячут, если за ней меньше двадцати голосов или
неизвестно, кто считал.
Польза у обоих продуктов простая. Восемь-десять лет назад
я ходил на премьеры чуть ли не каждый четверг; сегодня не хожу
и зависеть от чужих алгоритмов не хочу.
Мне нравится иногда обратиться к собственной
случайной выборке. Это упрощает выбор кино на вечер —
такого, чтобы, пересматривая его, уснуть.
Пиксели на этих страницах не лежат готовыми — их считают
на каждый кадр, и в расчёт входит то, что делает читатель.
Есть и вторая мысль, необязательная: все пять иронизируют.
Кнопка тем на чёрно-белой странице отвечает репликами от руки
и на десятом нажатии сдаётся — лист переворачивается в белый,
а портрет осыпается вниз чёрной горкой.
Цифровое искусство
Портрет набран цифрами, и портретов два
Четырнадцать тысяч цифр в сетке. Тон держит густота чернил, само начертание значения не имеет.
1
Цифра случайна и мерцает. Она подменяется каждые 50 миллисекунд, а тон клетки задаёт светлота исходного пикселя. Ниже порога густоты цифра не рисуется вовсе, и света остаются чистой бумагой.
2
На тёмном листе всё зеркально. Перо там светлее бумаги, поэтому набирается свет картины, а тени остаются пустыми. Со светлотой, оставленной как есть, вышел бы негатив.
3
Второй портрет открывается ламелями. От точки клика расходится шторка: цифра встаёт ребром к зрителю и разворачивается другой стороной. Набор переключается ровно в момент ребра, поэтому полупрозрачного кадра между портретами не бывает. На ребре вспыхивает краска оригинала.
Стереопортрет и Куб
Портрет из полос и комната без конца
Две страницы раздела «Медитирую» устроены на одной мысли: изображение считается формулой, а не собирается из готовых кусков.
1
Толщина полосы идёт за светлотой кадра. Пикселей на экране нет, есть решётка полос: где кадр темнее, полоса толще. Лицо появляется как перепад в ритме. Считает это шейдер WebGL2, поэтому источником может быть снимок, видео или вебкамера.
2
Комната умещается в одно деление. Экран равен центру плюс мир, делённый на глубину. Матрицы и буфер глубины считали бы то же самое, поэтому библиотеки на 600 КБ здесь нет. Отсеков всегда одно и то же число: прошедший мимо камеры уезжает в хвост очереди и получает новый номер, а заполнение его клеток считается хешем от номера.
404
Страницы нет, поэтому на ней время
Ненайденный адрес — единственное место, где обещать уже нечего. Тут стоят часы.
1
Часы идут по-настоящему. Стрелки живые, дата сегодняшняя, а секундомер считает, сколько вы уже здесь.
2
Код ответа настоящий. Сервер отдаёт 404, а не 200: поисковику страница честно сообщает, что адреса нет.
3
Кнопка темы сломана нарочно. Она красит лист в случайную масть, каждый раз новую, и отвечает надписью от руки. Это единственная кнопка на сайте, которая делает не то, что обещает.
Пятая страница — «Капли», код 303: то самое, но смотрите
в другом месте. Кружок в шапке меняет там вещество —
набросок пером, взбитая пена, налитая вода, — и слово собирается
из того же вещества, что растеклось по столу. Его на столе всегда
поровну: новое слово ждёт, пока прежнее вернётся.
§ 5 Метод: кто из нас двоих что делал
25рабочих дней с 1 по 26 августа
279часов, в которые шла работа
284сессии
2 167моих запросов
52 983ответа модели
5 490правок в 861 файле
65,2 млнтокенов порождено
12,58 млрдтокенов обработано с учётом кэша
Работа шла в паре с Claude Code. Я ставил задачи, смотрел
результат и заворачивал негодное; агент писал код, гонял сборку
и сторожей. Фраза «сайт написал ИИ» описывает происходившее
неточно: роли поделены, и поделены жёстко.
Человек
замысел и отбор
вопрос «зачем это здесь»
вкус и право отказать
решение выбросить
Машина
исполнение
проверки и сторожа
скорость
бесконечное терпение
Агенту неоткуда узнать, зачем в чаше буквы «б» бежит белка
и почему подпись под игрой должна появляться по наведению. Зато
он берёт на себя исполнение — то самое место, где мои идеи
и умирали двадцать лет.
Несколько агентов разбирали архив работ, заметок
и комментариев, чтобы восстановить хронологию и описания.
А я как главный редактор вычищал нейрослоп.
Правило, выведенное из правок, уходит в свод, а не в комментарий
к коду. Сводов накопилось 23: от типографики до правил боя в «Рати».
Их читает и человек, и агент в следующей сессии, поэтому проект
помнит свои решения дольше одного разговора.
Дни производства
1 августа26 августа
Порождённые токены по дням. Первый рывок —
9—13 августа, когда собирались игры и Choosy; пик —
10,9 млн токенов
15 августа, на перестройке структуры
«страница — это папка» разом по всему сайту. Дальше
вспышек нет: вторая половина месяца идёт ровно,
по два-три миллиона в день. Наведите
на столбик — подпись покажет точные числа; кнопками
выше диаграмма переключается на запросы.
Из чего состоит работа агента: почти всё — чтение, проверка
и правка. На один мой запрос в среднем приходится 24 ответа
модели: между ними — команды, сборки и сторожа. 91 раз агент
останавливался и задавал вопрос мне.
Команды терминала
19 444
Чтения файлов
5 692
Правки файлов
5 490
Поиск и веб
167
Вопросы мне
91
Субагенты
71
Токены делятся на написанные и прочитанные. Порождено 65,2 млн,
а обработано 12,58 млрд: на каждый написанный токен модель перечитала
193 — почти всё из кэша, поэтому перечитывание проекта на каждом шаге
и возможно.
чтение из кэша — 97 %запись в кэш — 2,6 %начисто — 0,5 %
За сборкой и выкладкой следят пятнадцать сторожей: типографика,
право, палитра тем, отпечатки файлов, карточки для соцсетей, счётчик,
тексты публикаций, плёнки автоответчика, интерактивные копии, состав
выкладки, собираемость раздач в пятнашках, замкнутость контуров
в диктантах, решаемость нонограмм, набор книг и факты Choosy.
Сломанное падает при сборке и до читателя не доезжает.
§ 6 Число: сколько получилось и что не сошлось
55скриптов сборки: 25 сборщиков, 11 сторожей, 12 качалок и семь служебных
5 356изображений, из них 5 244 — webp
63markdown-двойника страниц
Строк кода в дереве сайта 586 198, и руками из них написано
172 597. Остальное — архив и результат сборки: копии промостраниц
Сотмаркета 2012—2014 годов хранятся как есть, а страницы блога,
хабы работ, базы Choosy и данные игр собираются из источников.
Архив Сотмаркета
361 473
Написано руками
172 597
Собрано сборкой
52 128
А это — содержание, у которого один источник и которое проверяется
сборкой: 28 записей блога, 30 работ у 14 компаний, 60 лент и 50 книг
в Choosy, 100 шахматных задач и 10 дебютных ловушек, 26 нонограмм,
нарисованных решётками прямо в сборщике, 10 графических диктантов,
5 сеч в «Рати» — и словарь «Балды» на 48 351 слово.
Ни одна нонограмма не уедет на сайт, если решатель не разобрал её
по строкам и столбцам без единого угадывания; ни одна шахматная
ловушка — если в конце нет обещанного мата; ни одна раздача
пятнашек — если она не собирается.
Ни одну из этих вещей не заказали бы. Портрет из цифр ничего
не продаёт. Гондольер под буквой «н» не поднимает конверсию. Словарь
на 48 351 слово собран ради игры, в которую сыграют полтора человека.
Пятнадцать лет назад это был приговор идее. В августе каждая из них
стоила мне от вечера до недели, поэтому они просто сделаны.
Что не сошлось
Задачи, с которых я начинал, решены: сайт собран, разделы
работают, числа сняты. Не сошлась моя оценка самого инструмента.
К августу я считал себя уверенным пользователем: год переписки,
десятки задач, понятные привычки. За месяц выяснилось, из чего эта
уверенность состояла. Половина из 34 стендов лаборатории — заходы,
не пережившие первого взгляда, и, разбирая их, я почти всегда
находил ошибку в своей постановке задачи. Двадцать три свода правил
накопились по той же причине: каждое правило в них — след правки,
которую пришлось объяснять дважды.
Как будто было плюс один градус и вода. Стало
минус один — и это уже лёд. Другое вещество. Разница в один
градус, а вещь другая.
водалёд
Слева и справа одни и те же частицы, и разделяет их
один градус. Про фазовый переход я вспомнил, когда пытался
объяснить, что именно со мной произошло за месяц.
Чем дальше я заходил, тем яснее видел границу собственного
знания, и граница отодвигалась быстрее, чем я к ней шёл. Яма
известная: чем больше знаешь, тем меньше знаешь. Про инструмент она
не говорит ничего, зато говорит про меня.
Правил на этом сайте больше, чем видно снаружи, и снаружи их
поэтому не видно: читателю нужен цельный и быстрый опыт, а отчёт
о том, как он собран, он читает по желанию и на отдельной странице.
Вы на ней. Изнанка — то, на чём этот опыт держится: отказы,
переделки, сторожа и решения, которых никто не заметит, если они
приняты верно.
Сайт сделан, исследование удалось. Ответ на вопрос, что я умею,
придётся давать заново.