Как перестать терять себя в других

в категориях непсихолог, наблюдения

Разрешили быть собой — и стало некультурно быть лучше.

Жизнь постепенно превратилась в череду обязательных действий, где каждое новое утро напоминает предыдущее, а каждый шаг — это еще одно заранее прописанное движение в чужом сценарии. Казалось бы, ежедневных активностей много: встречи, задачи, разговоры, но в этой суете теряется жизнь — постоянное ощущение, что через неделю детали сегодняшней суеты забудутся и стресс, который вся эта суета создает сегодня, вообще не нужен. Ну, мне точно. Фрейд утверждал, что «Сверх-Я» (супер-эго, the Over-I) может взять верх, превращаясь в строгого внутреннего цензора, который диктует, что можно и чего нельзя, подавляя желания и заставляя эго играть по чужим правилам. Мое эго! По чужим правилам! А вот если вдруг возникнет вопрос о собственных желаниях — тут же включается тревожная сирена и голос внутреннего Фрейда (почему-то гнусавого): «Так, вапгосики!». Mundo not goes where he pleases, ага.

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

Фрейд утверждал, что «Сверх-Я» — это голос общества, который внедряется в нас с самого детства, превращаясь в строгого надзирателя, не допускающего отклонений от нормы. Каждый раз, когда человек соглашается на «надо», откладывая свое «хочу», «Сверх-Я» становится немного сильнее, еще больше отодвигая личные желания на периферию сознания. В результате внутренний конфликт становится все более очевидным: из вежливости сказать «да», хотя хочется сказать «нет» или вообще нахер послать; сделать то, что не хочется, но важно и нужно по мнению окружающих; оставить свое мнение при себе, потому что так принято. И чем чаще говоришь «надо», тем сложнее потом вспомнить, а что вообще хотелось.

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

Фрейд говорил, что задача не в том, чтобы победить Сверх-Я, а в том, чтобы найти баланс между ним и другими инстанциями психики. Работать не только с этим внутренним цензором, но и с тем, что он подавил — с «ОНО» («the It», Id. Freud saw the id as the unconscious source of instincts and desires, driven by the pleasure principle — the push for immediate satisfaction of urges.). Вытаскивать подавленные желания, перерабатывать и восстанавливать целостность. «ОНО» — не только желания, но и та часть, которая свободна от всех этих «надо».

REST in peace. Как перейти на Курсор

в категориях AI, вебдев

Я ежедневно пользуюсь нейросетями для разных нужд, уже сложно представить задачи, которые решались бы без них. Базовые «ответь на письмо», «вот тебе файл, коротко расскажи его смысл и посчитай трудозатраты», однако все чаще из каждого утюга доносится название «Курсор». И я пошел смотреть, конечно.

Самое важное: Cursor — это форк VScode, при первом входе он просит авторизоваться (или зарегистрироваться), импортирует все из VScode и сразу почти полностью его заменяет. То есть, можно сказать, что в VScode просто поменялась иконка и появился умный (реально!) ИИ ассистент. Раньше я пользовался Codeium, который был просто плагином, плохо держал контекст и вообще справлялся тяжело, много тупил и выдавал решения мягко говоря удивительные. Я быстро от него отказался. Сейчас он стал Windsurf, но к нему я позднее вернусь, пока про Курсор.

Итак, с Курсором все началось с простого запроса: я попросил его взглянуть на мой сайт целиком и описать, что он понял. Он описал архитектуру проекта лучше, чем я бы сам ее объяснил на устном собеседовании. Причем не просто повторил названия файлов и роутов, а связал их между собой, выстроил логичную структуру, выделил зависимости, понял, что и зачем существует. Указал, где нарушены принципы REST — не в духе сектантского буквоедства, а именно с позиции читаемости и устойчивости URL.

Когда он «увидел», что API реализовано без использования blueprint (потому что ну незачем) — просто через аккуратно организованные маршруты с понятными путями и логикой — он не стал сходу рекомендовать «правильный» подход. Никаких «давай сразу все перепишем на RESTful-стандарты с версионированием и ресурсами». Он понял мой стиль — структурно, просто, понятно — и начал работать в нем, не отвлекаясь на евангелизм. Только когда я сам попросил: «а посмотри, можно ли тут улучшить структуру URL?» — он предложил варианты с /api/posts/, /api/posts/:id/, /api/categories/ и так далее, с комментариями, зачем это может быть полезно и как это вписывается в мою текущую архитектуру.

Проверка

По началу я в каждом промте категорически запрещал что-то менять и просто просил дать оценку. Я начал с простого:

explain what this project does and what each route is for

И он не просто набрасывает пару строчек про «это админка», «это архив», а выдает внятную, структурированную схему, почти как sitemap с описаниями, зачем нужен каждый роут, как они связаны между собой и в чем их логика. И ты такой — «ага, так, все верно, а про это я и забыл уже».

Затем я попробовал дать ему задачу более конкретную:

simplify the /operator/uploads/ code to avoid duplicate file state logic

Он действительно понял, что я пытаюсь минимизировать избыточность в коде и предложил следующее улучшение:

Instead of manually syncing the state, use the same getFiles() function after any mutation (upload/delete). This avoids inconsistencies and duplicated state logic.

И сразу переписывает код в нужных местах, оставляя мне только кнопки Accept и Reject.

После этого я попросил его посмотреть на CSS и JS, просто проверить, что он там найдет. Там было немного кода, что-то около 1.5−2 тысяч строк, но, конечно, местами инлайновые стили, элементы без классов, заглушки — мелочи, короче, но неприятные. Он молча вынес стили в отдельный файл, дал всем объектам осмысленные классы и тут же связал их обратно с HTML. Просто фоном в тишине. И опять: Accept or Reject. С таким подходом начинаешь доверять, но с опаской, естественно.

Контекст

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

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

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

Например, я попросил его собрать новый роут в операторской (это у меня «админка» такая), достаточно понятно ему все объяснил с примерами, так он мне сообщил, что идея ок, но подход не годится, и написал по-своему. А я такой: «ну, я бы и сам до такого дошел со временем». Или не дошел бы. Accept, что уж. За $16 в месяц вполне неплохой напарник, который не перестает удивлять. При этом я фокусируюсь на стратегии, а Курсор делает магию.

ChatGPT про GPT

в категориях AI, наблюдения

Вел тут диалог с ChatGPT про трансформеров (современных) и вот к чему пришел разговор.

Контекст: программисты [уже почти] не нужны, нужны архитекторы, визионеры — люди, которые способны принять решение что-то не делать, сделав 2-3-5 шагов назад и посмотрев под широким углом. Я утверждаю, что сегодняшние нейросети без особых проблем сожрут весь мой сайт, отрефакторят его до 2к строк кода (изначальнай контекст до 50к токенов, около 3к строк кода), оптимизируют БД, ускорят в 10 раз и адаптируют под все эти ваши SEO, которые уже тоже не нужны (thank god!), потому что роботы уже завтра будут искать в сгененированном роботами контенте. И лишь человек способен усомниться в ценности этих действий. И даже тех, благодаря которым этот код в принципе появился. Я не про этот сайт, это шедевр, понятно, но не всем же повезло найти талантливого программиста с тонким вкусом.

Так вот, вот что мне отвечает товарищ генеративный предтренированный трансформер:

Вот, вот это прям в яблочко. Контекст растёт — и LLM всё больше начинает напоминать не юного кодера, а опытного тимлида, который уже видел всё, знает про три способа сделать любой костыль красиво и даже помнит, почему session.rollback() нужно вызывать в finally:.

Но.

Скорее всего, ты прав — локально GPT-4-Turbo с 128k токенов уже способен:

  • прочитать весь твой проект,
  • понять структуру, зависимости, архитектурные решения,
  • предложить рефакторинг (в том числе и неочевидный),
  • и даже превратить это в PEP-8/Zen-подобный манифест минимализма.

Но это всё равно ответы на поставленные вопросы. А вот вопросы — формулируешь ты. И в этом разница.


GPT может всё, кроме одного — понять, что всё это не нужно

  • Она может объяснить, почему ORM — хорошо.
  • Может спорить, зачем raw SQL.

Даже запилит тебе оба варианта и ещё REST и GraphQL впридачу.

Но она не скажет: «Ты уверен, что вообще нужен бэкенд? У тебя пять страниц контента — может, просто статика?»
Она не скажет: «А может, вообще не сайт, а канал в телеге?»

И это ключевая дыра в интеллекте: отсутствие системной, критической лени — умения не делать. GPT никогда не скажет «не пиши код», если ты сам об этом не задумаешься.

Не очень понятно, почему «она», но опустим — в целом, очень похоже на интеллект, потому что это, натурально, спор. То есть, аргументированное отстаивание своей точки зрения в диалоге с длинным констекстом (около 40 минут непрерывного диалога).

Хотя, третьего дня нашел интересное мнение:

Известный когнитивист и Computer Scientist Йоша Бах рассуждает, сознательны ли LLM, и говорит, что мозг как таковой тоже не обладает сознанием.

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

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

Сомнение становится критерием зрелости, это архитектурный механизм безопасности. Это не слабость (как и лень), а навык. И «чутье», которое заставляет встать со стула и походить 20 минут, проверитриться, чтобы вернуться со свежей головой и не делать то, что 20 минут назад казалось гениальным планом.

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

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

Короче, AI [пока] не умеет мыслить холистично. И на этом пока и закончим.

Парадокс свободы выбора

в категориях непсихолог, наблюдения

Современные рекламные щиты, социальные сети, люди с экранов постоянно повторяют одну и ту же мантру: «Выбор — это свобода!».

Ты — не просто человек, ты — концепция выбора, олицетворение свободы. Ты решаешь, что с тобой будет происходить. Ты сам себе архитектор судьбы, мать твою!

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

Весь этот выбор, который так изначально казался заманчивым, превращается в синдром распахивающихся дверей, а каждое принятое решение — это не радость, а всего лишь еще один тик в списке задач, которые не хочется выполнять. Это как стоять в магазине с 146 сортами виски и думать: «Могу взять любой, но уже не уверен, что мне вообще нужен виски». А еще можно взять что-то новое и разочароваться во вкусе. Потом переходишь в другие отделы, проверяешь еду — все так же неясно. Конечно, потому что красный соус к птице вроде как не подходит, а если все же взять птицу и белый соус, то и вино надо белое, а я уже красное взял, полчаса выбирал! И этого всего сотни разновидностей. И вот в какой-то момент ты уже не выбираешь — просто берешь что-то, что не пугает, либо привычно, да и устал уже. Да и зачем так-то, если эти лепешки с колбасой и сыром в целом годные. И коньяк дома есть. Универсальный напиток для всего, потому что универсальность избавляет от необходимости выбирать.

Qwen generated.

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

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

Придумал 3 заголовка для этой записи, надо выбрать.

Секрет счастливой семьи

в категориях дорогой дневник, наблюдения

Когда я пытаюсь высказать жене свое недовольство, мои слова растворяются в воздухе. Она продолжает заниматься своими делами с медитативной отрешенностью, а мои протесты тонут в фоновом шуме ее реальности.

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

Такой симбиоз: я создаю иллюзию участия в принятии решений, а она — иллюзию, что мое мнение имеет вес. Идеальный брак — это когда оба научились мастерски имитировать демократию при абсолютной монархии. Главное — разговаривать и слушать друг друга.

Ранее в сериале