$ cd /home/jenya/workspaces

52 проекта • 361,400 файлов • AI-driven эксперименты
⚠ DISCLAIMER: Большая часть кода не компилируется и не запускается. Это поток сознания, материализованный через AI агентов. Эскизы идей, а не продукты.
TOTAL_PROJECTS
52
TOTAL_FILES
361K
WORKING_CODE
~15%
AI_GENERATED
~95%
// Как это работает
Процесс генерации через AI агентов

Cursor (Claude) → идея → 20-100 итераций диалога → код → следующая идея. Большинство проектов живут 1-3 дня, затем заброшены. Некоторые возвращаются через месяцы.

Типичный цикл: "Хочу понять, как работает X" → прошу агента реализовать → получаю нерабочий код → уточняю → код компилируется, но падает → еще итераций → что-то заработало → закидываю в архив.

Редко что доводится до конца. Но каждый проект оставляет понимание.

// Компиляторы: от идеи до байткода
MC2 - Machine Code Compiler [Ruby]
Ruby • x86-64 • ELF format • syscalls
move_immediate 60, to: :syscall_number_register # sys_exit move_immediate 42, to: :first_argument_register # exit code syscall # invoke kernel
Генерирует ELF исполняемые файлы напрямую. Без ассемблера. Байты пишутся руками:
  • ELF header (64 байта) с magic numbers
  • Program headers для LOAD сегментов
  • Машинный код x86-64 (REX префиксы, ModR/M байты)
  • RIP-relative адресация для данных
Работает? Да, генерирует валидные ELF. Но только базовые инструкции. Без оптимизаций, без FPU, без SIMD.
BC - Binary Code Generator [Ruby]
Ruby • NASM • mmap • JIT execution
Два режима: генерация NASM ассемблера ИЛИ выполнение в памяти через mmap. Идея: можно ли выполнить код без создания файлов?
Выделяем страницу памяти → делаем её executable → копируем байткод → вызываем как функцию через FFI.
Работает? NASM генерация — да. JIT execution — частично. Падает на сложных конструкциях.
Mini-Vala Language [Ruby]
Ruby • VM • bytecode • REPL
Попытка сделать язык за выходные. Есть парсер, есть VM, есть байткод. Нет типов, нет оптимизаций, нет stdlib.
Работает? Нет. Парсер разбирает простые конструкции, VM выполняет add/sub, больше ничего.
// GUI: 6 подходов к рендерингу
GL GUI Pipeline [C++20 • OpenGL 3.3]
CPU: Layout → BatchData (vertices, indices) → compute positions
GPU: Batch → VAO/VBO upload → shader → rasterize
Text: HarfBuzz shaping → FreeType → atlas → MSDF rendering
Идея: Разделить CPU логику и GPU рендеринг полностью. Layout работает с абстрактными координатами, GPU получает готовый батч.
• Layout engine: flexbox-подобная система (Row/Column/Stack)
• Text pipeline: Unicode → HarfBuzz → glyphs → MSDF atlas → GPU
• Batch system: динамическое построение mesh для 10k+ примитивов
• 59 тестов: golden image tests, CPU-only tests, stress tests
Работает? Да! Рисует примитивы и текст. Но нет виджетов, нет событий, нет input handling.
Ruby-XCB Bindings [Ruby • XCB • Cairo]
XCB — низкоуровневый протокол X11. Отказ от Xlib в пользу асинхронности. FFI биндинги к libxcb, рендеринг через Cairo.
Работает? Создает окна, рисует прямоугольники. Event loop написан, но работает нестабильно. Segfaults при закрытии окна.
XCB Widgets [C • XCB]
Попытка сделать свою виджет-систему поверх XCB без Cairo. Всё рисуется примитивами XCB: xcb_poly_fill_rectangle, xcb_poly_line.
Работает? Частично. Рисует кнопки, но без текста (нет font rendering). Click detection есть, но багует.
GTK3 Ruby Editor [Ruby • GTK3 • GtkSourceView]
Высокоуровневый подход: используем готовую библиотеку. Текстовый редактор с синтаксисом, file tree, minimap.
Работает? Да, запускается и работает. Но тормозит на больших файлах, file tree не виртуализирован.
ВЫВОД ПО GUI
Каждый подход — своя кроличья нора. XCB дает контроль, но требует всё писать. GTK дает готовое, но ты заложник их архитектуры. OpenGL дает производительность, но text rendering — это ад.
// Веб: от фреймворков до продакшна
Music Player [Node.js • Express • MongoDB • FLAC]
Единственный проект, который реально используется. Простой плеер с аутентификацией.
Backend: REST API, JWT токены, rate limiting, helmet security
Frontend: Vanilla JS, Vite сборка, audio API
Деплой: PM2, Nginx reverse proxy
Работает? Да, уже год. Но код местами костыльный, рефакторинга не было.
Fullstack2 Framework [JavaScript • VDOM]
Эксперимент: как работает React изнутри? Реализация с нуля:
• Virtual DOM: createElement → diff algorithm → patch real DOM
• Reactivity: signals/computed без Proxy
• Component model: lifecycle hooks, props, state
• Runtime: reconciliation, batching updates
Работает? VDOM диффинг работает. Но reactivity половинчатая, нет Suspense, нет Context API.
G Framework [JavaScript • IoC • Dependency Injection]
Попытка сделать Angular-подобный DI контейнер. Decorators, метаданные, автоматический resolve зависимостей.
Работает? Playground есть, но архитектура запуталась после 10-й итерации. Рефакторинга больше, чем кода.
// Архив: когда скачал весь LLVM
LLVM Project [68,000 файлов • 1.2GB]
Полный репозиторий LLVM: Clang, LLD, LLDB, MLIR, Flang.
Зачем? Хотел понять, как работает современный компилятор. Читал исходники IR builder, instruction selection, register allocation.
Итог: Понял базовые концепции. Но это океан. Можно изучать годами.
Ruby Interpreter [11,412 файлов]
Исходники MRI Ruby 3.x. VM, GC, parser, stdlib — всё там.
Самое интересное: bytecode compiler (compile.c), VM instruction dispatch (insns.def), GC (gc.c — 10k строк!).
// Реальность процесса
ЧТО РАБОТАЕТ
• MC2, BC — генерируют валидные бинарники
• GL GUI — рисует и тесты проходят
• Music Player — в бою больше года
• GTK Editor — запускается
• Fullstack2 VDOM — базовый диффинг есть
ЧТО НЕ РАБОТАЕТ
• Mini-Vala — парсер есть, VM не закончен
• XCB виджеты — segfault на закрытии окна
• G Framework — запутался в собственной архитектуре
• 80% экспериментальных проектов — компилируются с ошибками
• Большинство "работающих" — работают только для простейших случаев
Типичные проблемы
Недоделанность: Агент генерирует 80% кода, остальное "TODO". Возвращаешься через неделю — забыл контекст, проще начать новый проект.
Архитектурные ошибки: После 20 итераций код превращается в спагетти. Агент не видит общую картину, каждый ответ — локальный фикс.
Тестирование: Агент пишет тесты, они проходят. Запускаешь на реальных данных — всё ломается. Mock'и соврали.
// Распределение по категориям
ACTIVE (19 проектов)
Условно поддерживаются
3 компилятора • 6 GUI проектов • 4 веб приложения • 3 фреймворка • 3 утилиты
EXPERIMENTAL (15 проектов)
Proof-of-concept, не работают
LEGACY (10 проектов)
Ruby, mRuby, QuickJS — основа обучения
ARCHIVE (3 проекта)
LLVM (68K файлов), MSDF, PHP сайт
// Технологии в использовании
Ruby (MC2, BC, Mini-Vala, GTK Editor) C++ (GL GUI, Graphics Demo, XCB widgets) JavaScript (Fullstack2, G Framework, Music Player) C (XCB, LLVM exploration) Python (Legacy projects, QuickJS bindings) OpenGL 3.3 Core, XCB, GTK3, Cairo HarfBuzz, FreeType, MSDF Node.js, Express, MongoDB, SQLite Vite, Playwright, Jest CMake, Make, npm, bundler
СУТЬ ЭКСПЕРИМЕНТА
Это не разработка ПО в классическом понимании. Это исследование через код. AI агенты позволяют материализовать идеи за часы вместо недель.
Большинство кода — sketch. Но каждый sketch оставляет понимание: как работает ELF, как устроен VDOM, почему text rendering сложен, где границы абстракций.
361,000 файлов. 15% работает. Остальное — артефакты процесса мышления.