Аудит сайта CEO Y Combinator: 6,4 МБ мусора вместо простого блога

Аудит сайта CEO Y Combinator: 6,4 МБ мусора вместо простого блога

Я провёл аудит сайта 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. И после этого оскорбляет критика в своём основном аккаунте.