Я провёл аудит сайта CEO Y Combinator Гарри Тана после его заявления о том, что он выдаёт по 37 тысяч строк кода в день на протяжении 72 дней подряд. Результаты показывают, как выглядит в продакшене 78,4 тысячи строк ИИ-слопа. Загрузка главной страницы garryslist.org включает 169 запросов и передачу 6,42 МБ данных — для простого новостного блога с рассылкой.
Тесты в продакшене
Сайт отправляет каждому посетителю 28 тестовых файлов — не результаты тестов, а сами тестовые обвязки. Среди них: membership_form_controller.test (89 КБ), media_grid_controller.test (31 КБ), story_composer_controller.test (19 КБ). Общий объём — около 300 КБ. Все файлы возвращают статус HTTP 200 и активно загружаются браузером. Это не ошибка — файл HAR это подтверждает.
78 неиспользуемых контроллеров Stimulus
На главной странице загружается 78 JavaScript-контроллеров Stimulus, хотя ни один из них не используется. Среди них:
- ИИ-генерация изображений
- Извлечение голоса
- Генерация видео
- Лепестковые диаграммы
- Проверка черновиков
- Вычисления Voice Lab
- Контроллер Hello World в Rails (hello_controller.js, 157 байт)
Общий объём — 154 КБ. Браузер загружает всё, даже если это не нужно.
Логотип, который загружается 8 раз
Один и тот же логотип-медведь передаётся восемь раз при каждой загрузке страницы:
- 3 копии в PNG
- 2 версии в WebP
- 2 версии в AVIF
- Фавиконка 512×512
Один из AVIF-файлов имеет размер 0 байт — это пустой, повреждённый файл, ошибка конвертации, которая попала в продакшен. Общий объём двух логотипов — 654 КБ.
4 МБ сырых PNG вместо 200 КБ WebP
Основная нагрузка — изображения из статей, раздающиеся через CloudFront как несжатые PNG. Два изображения весят 2,07 МБ и 1,99 МБ. При этом браузер явно запрашивает современные форматы: Accept: image/avif, image/webp. Сервер игнорирует это и отдаёт PNG. В формате WebP они заняли бы 200–400 КБ суммарно. То есть 4 МБ тратятся впустую.
Другие проблемы
- 520 КБ редактора Trix (передаётся 120 КБ) загружается на страницу только для чтения — вероятно, остаток от бэкенда
- 47 изображений без атрибута
altна сайте, позиционирующем себя как «вовлекающий граждан» - Весь контент рендерится в DOM дважды — для мобильной и десктопной версий
- Дублирующиеся теги
<title>в<head> - Пустой CSS-файл (только комментарий с манифестом), хэшированный и передаваемый сервером
- Аналитика PostHog проксируется через
/s/с комментарием в коде:// Load SDK from our proxy (bypasses ad blockers)
Обход блокировщиков и этические вопросы
Проект, зарегистрированный как некоммерческая организация 501(c)(4), активно обходит инструменты приватности, чтобы собирать данные о пользователях. При этом в продакшен попадают тестовые файлы, битые изображения и мегабайты неоптимизированных ресурсов.
Сравнение с Hacker News
Для контекста: главная страница Hacker News, поддерживаемая той же организацией Y Combinator, делает 7 запросов и передаёт 12 КБ. Сайт Гарри Тана — 169 запросов и 6,42 МБ. Это в 562 раза тяжелее. Даже без изображений 73% трафика — мусор.
Когда ИИ усугубляет отсутствие процесса
ИИ и LLM — мощные инструменты. Я сам использовал более трёх миллиардов токенов за год, включая 2,5 миллиарда в Cursor. Но ИИ масштабирует не только хорошие практики, но и отсутствие процесса. Сайт Гарри — пример того, что происходит, когда ревью кода заменяют счётчиком ежедневных коммитов. Это Duolingo-режим для git push. Автоматизация делает ровно то, что ей говорят. А никто не сказал остановиться.
Клиентская часть — только верхушка айсберга
Мой аудит касался только того, что загружает браузер. Я не анализировал исходный код. Но и этого хватило, чтобы увидеть масштаб проблемы.
Реакция на критику
Когда 17-летний разработчик (@xiaonweb) вежливо указал, что хвастаться количеством строк кода глупо, Гарри Тан назвал его «зарабатывающим хайп подростком». При этом юный разработчик создал на Rust движок браузера: HTML-токенизатор, CSS-каскад, box model и GPU-рендеринг через wgpu. Его технический разбор демонстрирует понимание веба глубже, чем у многих сеньор-разработчиков.
Сравните: один подросток строит браузер, а президент Y Combinator, руководящий судьбами стартапов, генерирует код через 113 сессий Claude в неделю, считает строки как стрики в Duolingo и публикует в продакшен тесты, 0-байт AVIF и 4 МБ несжатых PNG. И после этого оскорбляет критика в своём основном аккаунте.