← на главную

Лайвлупинг, медиапродакшн и все эти ваши компьютеры

Алексей Батищев. Заметки обо всём, что происходит со мной и окружающим миром

📌 избранное: 📸🎥мои работы, 🎶ВасяХодитНаКонцерты, КЭНК, ибешечное, ➡️все теги, 🗓️ календарь

Long Arm в Дом Динамо

Фото с концерта Long Arm в Дом Динамо 21 февраля 2025 года

В целом музыка подобного жанра — инструментальная электроника, мечтательная и атмосферная — мне совсем не близка. Я совсем в это не погружен и максимум что могу — отличить продиджи от дафт панк, а джангл от драмнбейса, да и то познания заканчиваются репертуаром из 2000х.

Поэтому на шоу я пришел и смотрел больше за компанию, ожидая следующего сета этого вечера, но в итоге вайб захватил и меня. Битком набитый зал Дом Динамо и люди, внимающие каждой ноте со сцены, где колдует один волшебник с кучей синтов — это впечатляет.

Было интересно. Всем открытия, посоны!

CIRF 2025

По приглашению старинного приятеля посетил конференцию CIRF 2025 — классная домашняя атмосфера и отличные доклады.

Особенно в меня попали Анастасия Иванова из Билайна с темой «Что нужно знать, чтобы построить киберкультуру» (классное на стыке ибешечки, пиара, и социологии, про то как объяснять и учить кожаных цифровой безопасности даже если они этого не хотят), и Максим Суханов с докладом «DDoS-атаки на российские организации в 2025 году: техники и особенности» — захватывающие подробности технологии с поддельными SYN-запросами.

Было исключительно интересно.

Acytota в Дом Динамо

Мы живем в восхитительном музыкальном моменте, посудите сами: пронзительная, сложная и эмоциональная музыка, то ли фолктроника, то ли пост-джаз, то ли трип-хоп, с синтами и трубой, со странным вокалом, но по большей части инструментальная, с невероятным диалогом-противостоянием двух ярчайших барабанщиков страны в составе трио — и всё это на отличном звуке, в битком набитом зале с видом на Красную площадь, и бесплатными билетами.

Эта музыка, непонятная и магическая, в живом формате превращается в удивительное шоу и акт искусства, который захватывает внимание и совершенно завораживает. А в центре происходящего, как фантастический ядерный реактор — напрочь отлетевший Витя, прекрасный и ужасный одновременно.

Ярчайшие впечатления и дикий кайф.

Acytota @acytota_live в Дом Динамо 21 февраля 2025 года

@vityaptica2 Виктор Скорбенко
@eroshin_dmitriy Дмитрий Ерошин
@den_marinkin Дэн Маринкин

Вайбкодим с Cursor: пир на пороге чумы

Последний месяц я провел в увлекательном взаимодействии с AI-средой для программирования, щас все расскажу. Если кратко — наступившее будущее прекрасно, настоящих программистов роботы не заменяют, но кажется это ненадолго.

Идея и реализация

У меня давно ждала своего часа идея затащить в блог посты из запрещенной ныне соцсети, подарившей нам популярность селфи и легендарного хэштега #мирдолжензнатьчтояем — по множеству причин, которые я уже описывал.

Выгрузку данных из сервиса я настроил давно, а вот импорт их в блог сделать (а лучше настроить так чтобы он был непрерывным), руки не доходили. Причем задача эта средней трудности, и для программиста-универсала вроде меня скорее скучная количеством деталей, чем сложная. Но были нюансы которых мне делать не доводилось, да и тупо синтаксис пхп вспоминать спустя много лет после крайних работ на нем пришлось бы.

Идея в общих чертах была такая: микро-сайт на хостинге рядом с блогом, такой комбайн для сервисных вещей — страничка со списком постов на импорт и возможностью их редачить, большая зеленая кнопка «сделать красиво» которая импортит сразу всё, этот же функционал доступный по апи. Также хотелось дополнительные плюшки для управления блогом — кнопку «найди все хэштеги в постах и привяжи к ним теги Эгеи» и кнопку «найди все ники и отформатируй их». Посты для импорта планировал загружать в формате инсталоадера по ftp.

В майские праздники я решил попробовать решить задачу с ассистентом, при этом я в этом слабо разбираюсь, и способы работы с нейросетями осваивал на ходу и методом тыка. Среду выбрал по отзыву Вастрика, Cursor.

Опьянение вайб-кодированием

Все довольно просто: я поставил среду (это просто VSCode с дополнительными плюшками) и начал прямо в окошке писать чего я хочу получить, а ассистент сам создавал файлы и писал в них код, каждый раз показывая изменения на манер гитовых. Я где-то слышал что роботам надо давать задания подетальней типа как джуну, да и сам на момент старта целиком проект себе не представлял, так что я начал накидывать что-то вроде:

  • Вот структура базы (я положил в проект sql файл бэкапа базы). Сделай сайт который будет запрашивать логин и пароль в  базу и выводить на экран список названий постов из такой- то таблицы.
  • Сделай вход на сайт закрытым капчей
  • Сделай список постов активными ссылками, ссылку бери из такого то поля базы
  • Добавь список тегов на сайте, они лежат в такой-то таблице
  • Вынеси эти два списка на отдельные страницы к которым можно будет попасть из главного меню
  • Вынеси css в отдельный файл
  • и так далее

После каждого сообщения нейросеть делала «трррунь», добавляла в простыню кода куски и в окне диалога подробно описывала что именно и зачем она сделала.

При этом многие вещи работали как магия — нейросеть сама без разьяснений понимала как связаны между собой таблицы в бд например, и задания я формулировал хоть и кусочками, но на довольно простом человеческом языке. Нейросеть понимала контекст, в общении можно было упоминать «предыдущую страницу» и конструкции вроде «форму импорта исправленного поста»

Другой кайф — сеть много что добавляла, что я не просил и даже не думал об этом, применяла какие-то приёмы программирования и формировала архитектуру решения на низком уровне, и даже предлагала дополнительный функционал. О некоторых вещах при постановке задачи я не подумал, а некоторые решения я бы сам так не написал. А в части дизайна, например, она сама выбирала и кодила кнопки, иконки, выбирала цвета, форму и расположение полей — то есть сразу выкидывала готовое решение от которого можно было бы двигаться дальше (или оставить как есть, что в основном и происходило).

Эйфория

У нас было пять файлов плохого html, php, css и жаваскрипта, три бесплатных чатбота, триалка среды ai-программирования и веб-сервер на шаред хостинге. Не то чтобы это был необходимый запас для вайб-кодинга, но если начал делать стартап-вебсервис ни черта не понимая в программировании, становится трудно остановиться. Единственное, что вызывало у меня опасение — это логотип. Ничто в мире не бывает более беспомощным, безответственным и порочным, чем те кто генерит логотипы через нейросеть. Я знал, что рано или поздно мы перейдем и на эту дрянь.

В целом это работа с агентом-ассистентом выглядит как реальная магия, как живой, профессиональный и настроенный угадывать твои потребности айтишник-человек — я довольно быстро стал именно как общение с партнёром или подчиненным это воспринимать. Причем, несмотря на косяки в работе, это не был подчиненный тупой, ленивый, игнорирующий или отлынивающий — поэтому чисто эмоционально я дико кайфовал от процесса, продуктивности и ощущения слаженной работы. В реальной жизни я очень редко получаю рабочий контакт такого уровня, и сильно трачусь на необходимость заставлять кожаных переделывать что-то и преодолевать их сопротивление.

Если ассистент меня не понимал или делал что-то не так, можно было сказать об этом, пояснить, и он исправлял код. Также если что-то не работало в итоге, можно было сказать об этом сообщив о результате («страница пустая», или «выясни почему запись в базу не добавилась для такого-то поста»), часто после этого сеть сама исправляла в следующей итерации код. Если предлагаемые исправления не помогали, ассистент обычно предлагал добавить расширенное легирование или проверки и прислать ему полученную подробную диагностику, после чего проблема обычно решалась.

Я шарашил функционал за функционалом, исправлял ошибки — точнее, все это делал смышлёный исполнительный программист-единомышленник, а я только принимал архитектурные решения, придумывал фичи и тестировал их работу. О, это было прекрасное время, и часы летели незаметно.

Похмелье

Довольно быстро сервис был в общих чертах готов, но с ростом функционала и размера полезли проблемы. При ошибках которые исправить нейросеть сама не могла, мне разобраться в простынях кода было непросто. Просьбы рефакторить или исправить ошибки иногда приводили к удалению нужного кода в других местах или дублированию функций — вообще в смысле функций код у ней выходил довольно плоский и громоздкий, с кучей повторов и лишнего текста. Взаимодействия блоков были логичными — но эту логику выбирал не я, а значит при необходимости что-то понять нужно было разбираться. Классно что нейросеть даёт говорящие названия переменным и функциям, но иногда понять почему именно pageID передаётся в данном конкретном месте, было тяжело.

Здесь нужно отметить, что с подобными сбоями помогают бороться правильные промпты — когда сначала ты говоришь нейросети как подходить к работе (что то типа «обдумывай трижды» « не удаляй работающий код» и «программируй как синьор после отпуска на Бали и трёх лавадовых рафов»). Это сильно влияет на результат, под это заточен функционал среды (например, можно привязывать такие инструкции к разным разделам проекта, и задавать их в настройках), а главная горячая тема у многих амбасадоров темы — обмен этими магическими заклинаниями. В целом кроме способности формулировать задачу в вайб кодинге критично важен этот скилл подбора тайных фраз — я, повторюсь, влез в эту петрушку без подготовки.

В итоге, спустя примерно часов 12 чистого вайб-кодинга буквально без единой строчки собственноручно написанного кода, я получил почти полностью рабочий но довольно неряшливый по структуре проект.

Здесь в процессе попыток исправить один баг мы с ассистентом зашли в безвыходный тупик и все полетело к чертям. Хорошо, что одна из не сильно испорченных попыткой выйти из тупика версий у меня сохранилась — это кстати странный момент, почему в IDE не встроен гит который бы комиттил каждое изменение.

Я сдался и решил приводить код в порядок, чтобы потом дописать всё вручную.

Новая надежда

В этот момент случились две вещи. Во-первых у меня закончились триальные 150 запросов (так как я мельчил этапность задач, и ещё очень много пытался поправить ассистентом код когда мы зашли в тупик). Тут я словил удивительное чувство, похожее на зависимость — мне очень хотелось продолжить и невозможность этого просто выбешивала. Я уже упоминал об удовольствии в процессе — оказалось это такой себе кайф с быстро возникающей аддикцией. Отследил и очень удивился.

Я взял тайм-аут, поискал инфу и попытался подобрать альтернативу или способ заставить курсор работать дальше. В процессе этого я узнал много нового про подходы (в том числе и про промтинг, о чем уже упоминал). Но бесплатные аналоги искались плохо, ничего из найденного не заработало, я понял что углубляюсь в тему и ухожу от первоначальной задачи, поэтому я просто оплатил месяц за 20 баксов, чтобы завершить эксперимент.

Вторая вещь — в этот момент я узнал и распробовал совместное кодирование с ассистентом. Это когда ты либо пишешь код в среде, а она автоматически угадывает и подставляет следующие строчки и слова (и это очень круто работает), либо ты описываешь небольшую задачу прямо на месте — типа, «напиши тут код который от форматирует текст так—то»

Это оказалось классным компромиссом между количеством работы которую делает робот, и контролем над этим. В таком гибридном варианте я и работал до конца.

Удивления и инсайты

Как я уже писал, многие вещи (оcобенно в плане подхода) мне, как человеку не сильно погруженному в актуальные тренды разработки веб-сервисов, были или неизвестны, или непривычны. В этом плане нейросеть — классное подспорье и в выборе концепций, и в реализации. Здорово также, что многие вещи она сразу пишет безопасно, применяет нужные техники, и на уровне элементов и блоков это добротный код.

Ещё нейросеть хорошо решает муторные простые задачи, типа написания тестов или комментариев — то, что хорошо бы сделать, но лень или жаль тратить силы. Тут ты тратишь только рублики на запросы.

Нейросеть классный эксперт и инструмент в области неприятно-сложного и редко нужного вроде регулярок. При этом она отлично понимает запросы на человеческом и модифицирует код алгоритмов под них. Например, мне нужно было находить в тексте поста ники, нейросеть это легко сделала, но при проверке всплыл нюанс, что в никах внутри могут быть точки, но точку на конце ника (если он например в конце предложения) частью ника считать не нужно. Я указал ИИ на это и сеть поправила функцию (а заодно наводящими вопросами заставила меня принять решение и по другим символам).

При этом же, довольно простую задачу по замене ников на форматированные версии, она не решила за несколько итераций, наговнив страницу кода — тут я применил джедайства времен школьных олимпиад и сделал сам в 9 строчек. Видимо, на листингах из Троицкого Байтика Sonnet не училась.

Ещё нейросеть классно обьясняет уже готовый код — в ходе проекта мне нужно было понять кое-что из оригинального кода Эгеи, и чатбот всё внятно разобрал по винтику, хотя тут можно и скопипастить нужное в обычного чатбота, именно среда тут дополнительных очков не даёт.

Нейросеть умеет в инфраструктуру — если при решении поставленной ей задачи нужно не только накодякать простыню, но и что-то поставить, настроить, зарегистрировать во внешнем сервисе и так далее, она даст подробные инструкции и поможет разобраться если что-то не взлетело. С учётом того, что уже существуют агенты, умеющие работать в интерфейсах операционок, скорее всего уже возможно полностью отдать эту работу ИИ, но это я не тестил.

Я уже упоминал про эмоциональную составляющую — на такую работу быстро подсаживаешься, а агента начинаешь воспринимать как человека, по крайней мере так у меня. Думаю, если поработать так непрерывно несколько месяцев, возникнет конкретная такая привязанность как к классному напарнику и другу.

Итоги

Пока что нейросети-программисты в режиме вайб-кодинга напоминают миддла с СДВГ: они знают и умеют дофига в технологиях, шарят в приёмах и архитектуре, хватаются за задачи творчески и выдают быстрый результат. Однако они неряшливы, теряют контекст, путаются, иногда не могут выйти из тупика даже в не очень сложных случаях, могут портить и не понимать свой же код.

Самостоятельно и полностью они вполне могут что-то написать, и в зависимости от сложности и типичности задачи это может быть даже довольно большой проект, который будет работать.

В плюсах такого подхода — низкий порог вхождения, когда даже далекий от технологий человек может получить сервис или результат. Быстрый MVP, прототип, как-то работающая иллюстрация или неглубокая реализация идеи в области программных продуктов теперь доступна буквально всем. Что-то простое и рабочее в типовых задачах с твоим именно нюансом, чего нет в готовых продуктах (своё собственное что-то с блэкджеком и шлюхами) — тоже.

Минус — при дальнейшем масштабировании этот скайнет становится монструозным и неуправляемым, при этом поправить или переделать его ИИ сам не может, а кожаному влезть становится нереалистично. Использовать серьезно такое невозможно или нельзя (на хайпе старта были истории как люди воспринимали такие макеты своей идеи за настоящий продукт и быстро обжигались, в том числе финансово). Поэтому в целом чистый вайб кодинг пока вещь нишевая, хоть и мощная.

Если же профильный специалист (даже невысокого уровня) использует ассистента для решения подзадач и как дополнятор кода, сохраняя за собой контроль архитектуры проекта — то невероятный буст к производительности и скиллам. Если проводить параллели с моим профессиональным и жизненным опытом (а я, малята, в этих ваших комплюктерах четвертый десяток разменял) — это как вместо юзания локальной справки MSDN на компе получить доступ к интернетам (причем к их нынешнему содержанию, со всей базой знаний, поиском и прочими стековерфлоу).

29 августа 97-го еще впереди

В финале — несколько ремарок.

Всё вышесказанное касается довольно примитивного уровня работы с ассистентом, промпт инжиниринг решает многие проблемы и сглаживает шероховатости, я взял первый попавшийся доступный в РФ сервис с полубесплатной подпиской и вообще это всё записки дилетанта.

Второе. Я пишу это в точке, когда публично доступным текстовым LLM всего три года, а ассистентам-программистам и того меньше, и уже сейчас агент может писать код на уровне крепкого миддла. Я смотрю на будущее профессии программиста пессимистично, потому что происходящее уже доказало жизнеспособность нейросетей в области технологий, темпы прогресса здесь очевидны и невероятны, и чисто по экономическим причинам скоро будет незачем учить и содержать программистов. И если уже существующие переквалифицируются в промпт-продактоунеров и ai-CIO или уйдут из профессии, то откуда массово возьмутся новые спецы, понимающие что там под капотом, в условиях когда нет задач для набирания опыта сисадминам-эникейщикам и программерам-джунам, непонятно.

Ну и третье — если нейросети сейчас настолько сильны в интеллектуальных и цифровых задачах, и если темпы развития такие как мы видим, то единственное что удерживает человечество от гибели это то что цифровая команда от робота пока не может на системном уровне привести к действию в реальном мире.

Пока что они (теоретически) могут не притормозить одну теслу перед пешеходом или повернуть рули у одного самолета, и это небольшая, локальная угроза. Но если мы дадим им системный интерфейс в физический мир, управление глобальными системами вооружений, инфраструктурными объектами или производством техники, будущее человечество будет предрешено. К сожалению, мировая гонка уже вошла в стадию когда разгоняться в ней можно только за счет ИИ, и все это делают, но в момент когда управлять этой телегой без ИИ станет невозможно, тормозить уже будет некем и нечем. А значит наступление всего этого — только вопрос времени.

Ну а пока человеки ещё не покинули шарик, я довольный импортирую через удобный инструмент в блог старые посты из иг, и прикидываю что бы ещё написать вместе с моим новым другом-программистом. Он классный!

Железнодорожные гонки на GET-параметрах

Второй год подряд сталкиваюсь с проблемой покупки билетов на поезд компании Гранд Сервис Экспресс. До этого много лет покупал билеты онлайн на сайте РЖД, и тут задача была в целом простой — заранее забиваешь паспортные данные пассажиров в личный кабинет, заранее смотришь поезда и прикидываешь места-вагоны, высчитываешь 45 дней до отправления (или 90, в зависимости от поезда), и ровно в 8 утра щемишься на сайт. Быстро накликал, быстро забронил, оплатил — готово.

Но некоторые поезда сайт РЖД сам не продает, и для части из них отправляет на сайт перевозчика Гранд Сервис Экспресс. Тут начинается факингщит: в моменты начала продаж сайт у чуваков дико тормозит, после каждого клика крутя анимацию по несколько минут. Нашел поезд — жди, открылось и кликнул в место — жди, открылось окно бронирования — вбивай пассажиров (тут конечно стоит вбить всё заранее).

И вот между вторым и третьим этапом прилетает обломинго — пока ты смотрел на анимацию, оказалось что выбранное место уже выкупили! Возвращаешься назад, херак — а его (как и половины других билетов) уже нет, повторяешь упражнение заново. В итоге за две-три таких итерации с ожиданиями по 5 минут, ты оказываешься в 8:15, без билетов, и с — сюрприз — почти распроданным поездом. Это не преувеличение, натурально невыкупленными остаются только верхние плацкарты и немножко разных купе.

И это ещё если вы догадаетесь пойти через сайт ржд, который форвардит напрямую в поезд нужной даты — потому что на сайте перевозчика поезд на дату надо найти, а для этого — ждать 5 минут пока прогрузится форма выбора даты. Минус 5 минут, шансы урвать удобные билеты падают на треть.

К счастью, в этот раз я подошел к проблеме по-программистски, заранее обратив внимание на структуру запросов. Поэтому вместо кликания и ожидания я заранее залогинился на сайт и после понаоткрывал в соседних окнах один и тот же запрос на поезд, уничтожив 0-й этап и распараллелив первый.

А вообще структура запроса такова, что можно конструировать прямые запросы на конкретные места конкретных поездов на конкретные даты — думаю, именно это кто-то уже сделал и просто шарашит в тысячу потоков бронь всех возможных мест напрямую со старта продаж, создавая нагрузку и лишая кожаных возможности обойти алгоритмы.

Через час после начала продаж самых популярных мест не остаётся вообще, и это в целом ожидаемо. Но то что здесь можно пролететь, прийдя к открытию, бесит неимоверно. А как места на такие поезда покупают себе условные оффлайн-пенсионеры вообще непонятно.

Всем конкуренция, посоны!

Ранее Ctrl + ↓