melikhov.dev
4.71K subscribers
119 photos
2 videos
2 files
226 links
Фронтенд, фронт-бек и около. Всё, что в голову пришло.

нейрорак за нейроруку
нейрогреку нейрослоп
Download Telegram
Год назад в кулуарах «Я люблю фронтенд» Артём @artalog показал мне Roo. Я вернулся в Петербург, подключил Roo к Sonnet 3.7, удивился, что теперь действительно что-то можно отдать на откуп LLM и пошёл подсаживать команду. Мы нашли кейсы, где нейронка хороша, собрали мемори банк и настроили конфиги там, где она тупила. Именно тогда для меня и был переломный момент, когда я полностью поменял свое отношение к AI-кодингу.

А вчера я удалил папку .roo из проекта. И мемори банки удалил. Клод код пошуршал по этим файлам и сказал, что это прошлый век, там нет ничего полезного и он может лучше из коробки. Я с ним согласился и ушёл настраивать openclaw.
😁75🥱26💊12🤝9👍5🤣53
Вот так вот просто и красиво подошли к важнейшей проблеме с другой стороны. Вспоминаю, сколько мы сил и времени потратили когда-то на внедрение монады Either, которую отдел так и не принял всем сердцем.

Напомню прекрасный доклад Артёма Кобзаря и Димы Махнёва — (не|ну)жная монада Either на практике и в теории

И напомню, что ошибки и исключения — это принципиально разные сущности.

Мы считаем, что исключения должны редко использоваться в рамках обычной работы программы: они должны быть зарезервированы для непредвиденных событий. Предположим, что неперехваченное исключение завершит работу вашей программы. Спросите себя: «Будет ли этот код по-прежнему выполняться, если я удалю все обработчики исключений?» Если ответ «нет», то, возможно, исключения используются в неисключительных обстоятельствах.

Dave Thomas and Andy Hunt: The Pragmatic Programmer
16🔥7
Forwarded from artalog (artalar)
https://errore.org/

Кто-то запарился и сделал огромный лендос. Что же, я только всеми лапами за! И вам советую.

UPD: автор запилил сравнение
🔥19👍103💩2👀2
В поисках самого лучшего эмулятора терминала

Как подметил Тонский, пока мы пытались сделать хорошие интерфейсы — зумеры ушли в консоль. А для консоли нужен эмулятор терминала, чтобы вывозить все эти реакт-приложения (что? да!)

Сначала немного теории.

Что такое эмулятор терминала? Это программа, которая эмулирует древнюю железку — терминал. Например вот VT100. То, что в обиходе называет терминалом, на самом деле эмулятор такой железки.

Что такое эскейп последовательности? Нам нужно отправить в шелл или в программу, запущенную в консоли комбинацию клавиш, которую мы нажали. Но у нас нет никакой возможности, кроме как закодировать это набором символов. Как-то так `^[b` для option + left. Попробуйте сами — нажимаем `ctrl + v` и дальше нажимаем нужную нам комбинацию клавиш.

Проблема в том, что нет нормального стандарта на эскейп последовательности. Если в базовых option+left и т.д. все ещё более менее совпадают, то shift+enter кто во что горазд кодирует. Как система понимает, с каким эмулятором она работает? Знание об этом храниться в $TERM. Например, для terminal и item2 это будет `xterm-256color`. Для других терминало может быть другое значение. В системе есть целый справочник `/usr/lib/terminfo` где сказано, как читать эскейп последовательности для вашего эмулятора терминала.


Родной эмулятора терминала macOS — отлетает сразу, у него нет эскейп-последовательностей на shift + enter (а нам надо! мы же хотим в клод коде промпты писать!). И не круто же, из коробки белый фон. Мы такое не уважаем, эмулятор терминала должен всем показать, что ты крутой хакер.

iterm2 дефолт, но конечно достал. Не быстрый, из коробки пользовать им невозможно (ну реально раздражает каждый раз после установки идти проходить квест по настройке эскейп последовательностей в диких менюшках). Ну и просто старый. Фу. Но куда бежать?

Ghostty. Быстрый (написан на zig), нативный, с простым конфигом. Ну просто лепота. Но есть одно но, большинство линуксов ничего о нём не знает. И когда вы подключитесь по ssh и откроете клод код — shift + enter работать не будет. В ghostty это понимают и предлагают автоматический режим для закидывания terminfo на любую машинку куда вы подключаетесь. Даже два режима: прокидывай terminfo, либо автоматически подменяй $TERM на xterm-256color (нам не катит, мы же ищем shift + enter). Если вы готовы немножко помусорить на удалённых машинках, то всё ок.

Kitty Тоже быстрый, но не такой нативный и красивый как Ghostty. Супер конфигурируемый, мощь. Проблема с terminfo присутствует.

Warp. AI во все поля. Чтобы зайти — нужно создать в облаке учётку и залогиниться. Это я не понял и не уважаю. Не по нашему это, не по хакерски. Дизлайк, отписка.

Пока остановился на Ghostty за красоту. Но релизы там какие-то ну совсем редкие. Наверное дальше пойду на Kitty
19🥱9🔥2👍1🤮1
Кто хочет Маттео Коллину к себе в команду практически бесплатно? Он есть у меня у себя! Ну не весь, конечно, а только в виде своих лучших практик.

https://adventures.nodeland.dev/archive/my-personal-skills-for-ai-assisted-nodejs/

tl;dr


npx skills add mcollina/skills
🔥457👍7😁4💊2🤔1
Уже пару месяцев как присоединился к тренду не писать код руками (совсем). Пока ещё не перевёл агента на полный цикл «посмотри какие у меня там таски в трекере и сделай», но иногда, во время дежурств и правда получается ваншотить: входящее обращение от пользователя о багах превращается в прекрасно оформленный PR, в котором и придраться не к чему. А как HAR разбирает — так просто песня. А можно ещё и рядом репозиторий бэкенда подложить, ммм.

В рабочих задачах это всё ещё куча циклов брейшторма, ревью и откатов назад. Но код я не трогаю. Общаюсь в чате, в конце прошу оформит PR. Возможно, будь у меня дикий «безлимитный» тариф я бы и попробовал пожить в режиме ральф лупа, но имеем, что имеем. Нужно быть осторожным, чтобы Опуса хватило на месяц. Потому никаких запущенных параллельно агентов и x10 продуктивности. x3-x4 максимум (но плохо чтоль? хорошо!)

Удивительно удачно это наложилось на бессонные ночи и отсутствие личного времени. Буквально спасло меня от сваливание в андерперформера (ну или от смерти от истощения, хе-хе).

С одной стороны «Не можешь победить — возглавь». С другой — а зачем побеждать? Я пишу код уже без малого 30 лет и сам процесс написания кода никогда не был для меня источником удовольствия. Гораздо интереснее всегда было само комплексное решение задачи. И вот здесь (пока) ничего не меняется. Ну кроме того, что это стало веселей

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

Останется ли человеко-читаемый код? Вот этот вопрос гораздо интересней. И пока никаких прогнозов тут дать не могу. Будут ли программы писаться сразу в машинных кодах? Сможет ли человек это раздебажить самостоятельно? Хорошие вопросы.

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

Ну а может завтра нам выкатят такие цены за инференсы, что забудем всю эту историю как страшный сон и снова будем код набивать.
👍66💩2922🔥9🤡7😁5🤔5💊4👎3💯21
Гармин работают на одном заряде так долго только потому, что никто не хочет смотреть на этот порт для зарядки чаще, чем раз в две недели. Питаются энергией ненависти владельцев.
🤣73💯183👍3🤷‍♂21
Раз уж я так не люблю mcp, то начал с себя, удалил их все, а там, где было нужно для корпоративного и прочего — напилил скиллами поверх курла.

И стало хорошо.

Ну не хочу я тратить контекст, не хочу жонглировать пачкой локальных сервачков. Да, mcp еще нанесут ответный удар через lazy стиль. Но пока мне без них лучше, чем с ними.
👍24💊10🤡5💯4🔥3👏2
А ещё мы недавно разобрали полирепозиторий нашей проектной матрешки. Как мы жили после выезда в опенсорс?

Был OSS репозиторий, который затягивался в closed source проект и добавлялись экстеншены из их собственного репозитория. Красиво, надёжно, но сложно и очень медленно в итерациях. 1 PR превращался зачастую в 6 (с полным CI циклом). В том числе сложно для ai, как не объясняй, что вот в этой папочке еще один git лежит и надо это учитывать.

В итоге продержавшись несколько лет мы вернулись в монорепу с зеркалом oss папки наружу.

И стало хорошо (разработчикам и ai).

Пришлось только pnpm прикрутить. И смириться, что опенсорс — это зеркало.
9👍4
Deep Research в Перплексити пока ещё молодец, Claude значительно медленней и хуже справляется не справляется.

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

Кстати. В @gravity-ui/charts патч уже сделали (это наша опенсор-либа которой мы успешно заменили Highcharts)
👍25🥱93🤔3👌1
С трудом выдерживаю поток новостей. Решил (как и многие сейчас наверное) автоматизировать дайджесты. OpenClaw тащить не хотелось, навайбкодил простые скрипты на Питоне — работает.

Поднял VPS (2 vCPU, 4 GB RAM):
- Telethon парсит телеграм каналы
- feedparser собирает RSS из Hacker News, Habr, dev.to, TechCrunch
- DeepSeek v3.2 через Yandex AI Studio (вот и грант пригодился) суммаризирует и оформляет
- Плюс тот же DeepSeek переписывает в подкаст-скрипт
- Yandex SpeechKit озвучивает

И всё это летит по крону в телеграм в виде текста и аудио.

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

Делитесь, а как вы парсите новости?
👍31🔥15😁53👀1
Audio
Звучит это как-то так. Не бог весть что, конечно, но сойдёт послушать, пока гуляю с коляской.

Может и оторву потом. Время такое, надо жечь токены и смеяться экспериментировать.
💩19👍65
Выложил статью по мотивам декабрьского Субботника, расписал почему и как у нас в команде фронтендеры занимаются AI-агентами. Получилось несколько э... корпоративно, что ли. Но я не могу, когда вижу Хабр — хочется побыстрее сделать дело, пройти редактуру и уйти. В общем не лучшее моё творение, но вы заглядывайте, если тема близка.

https://habr.com/ru/companies/yandex/articles/1022804/
21🔥9👍6🕊2💩1
И всё таки этим вашим бямкам не хватает простой советкой инженерой смекалочки. Если задача решает в лоб — они её решат. Если не решается, то будет придуман адовый воркэраунд (который скорее всего не будет работать).

Вот три часа бился Опус у меня и так и не смог обойти проблемы Дипсика. А простой кондовый уникальный для этой задачи костыль — смог.

Так что, господа инженеры-костылестроители, расслабляемся. Мы всё ещё достойны.
😁4820👍9🥰4💊3🕊2💯1
К товарищам прилетел вопрос от пользователя — а почему ваша документация AI-недоступна?

А почему? Потому что там React без SSR.

Вот так-то, снова привет. Несмотря на то, что краулеры уже начились парсить CSR почти без вопросов, и мы привыкли так жить, но тут SSR наносит ответный удар откуда не ждали. Хочешь, чтобы можно было эффективно кормить агента твоим контекстом — будь добр, научись отдавать всё без JS.

Нет, конечно всегда можно запустить хедлесс хром, но это как-то максимально глупо (если мы говорим про документацию, а не богатый UI).
15👍14😁5👎2😢1
Пока читал «Проект “Аве Мария”» Энди Вейера, никак не мог отделаться от мысли, что держу в руках производственный роман в стиле той же «Цели» Голдратта или хайповавшего во времена расцвета девопс-культуры «Проекта “Феникс”». Стиль: задача — объяснение — решение.

Кстати, забавный факт: в случае «Феникса» не только названия похожи, но и именно так назывался проект SETI по поиску внеземных цивилизаций. Старички помнят SETI по SETI@home — когда мы отдавали машинное время личных компьютеров не на майнинг крипты, а на анализ радиосигналов.


Возвращаясь к «Аве Марии»: книга увлекательная, но мне сложно назвать это художественной литературой. Скорее научпоп в обёртке производственного романа, где бодрый, весёлый Мэри Сью решает проблемы любой сложности с помощью НАУКИ. Не страдает ни герой, ни читатель, ни писатель.

«Марсианин» как-то оставил больше послевкусия.

upd всю книгу не мог отбросить мысль, какого чёрта на корабле не было приличной нейросетки. С их-то бесконечной энергией. Для романа из 2021 большой просчёт!
👍156👾2
С началом мая решил потренировать голову и поменять (в который раз) инструменты разработки. Сменил Ghostty на Kitty — при всём уважении к Митчеллу Хашимото Ghostty всё же сырой продукт. Но красивый.

В замену к Claude Code поставил Pi, благо токены я жгу по ценам API и нет никаких вопросов со стороны Антропика. Привыкаю к дикой скорости и необузданному характеру этого харнесса, над которым нужно ещё свой слой изоляции навернуть. С другой стороны — ну а можем ли мы доверять встроенному сэндбоксингу любого харнесса? Так что пакуем в контейнеры/виртуалки и не даём ходить куда не надо.

Большой плюс Pi, Opencode и других универсальных харнессов — возможность сидеть в разных LLM. Обычно у меня параллельно открыт проект в Opus/Sonnet в одном табе и gpt 5.5 во втором. Одна модель пишет код, вторая его критикует. Каких-то мегапайплайнов тут не выстраивал, просто делаю скиллы и дёргаю руками. Токенов у меня не много, не разгуляешься отдавать на откуп всё LLM.

Скиллы тоже, кстати, пришлось подправить. Изначально написанные под CC они не такие уж универсальные оказались. Потому что чихать хотел Антропик на свой же agentskills.io. Стандарты для слабаков.

Снова заехал в Zed. Долго боролся с его дурацкой привычкой выкачивать бинарники из интернета на удалённой машине. Да, нашлась настройка


"ssh_connections": [
{
// by default Zed will download the server binary from the internet on the remote.
// When this is true, it'll be downloaded to your laptop and uploaded over SSH.
// This is useful when your remote server has restricted internet access.
"upload_binary_over_ssh": true,
}
]

Так какого лешего вы считаете, что по умолчанию в контейнере будет интернет (да ещё и не умеете в IPv6) ?

Пытался подружиться с ACP в Zed, но никак мне не заходит. Банально жалко место на экране тратить, проще скакнуть в консоль, сделать там и в Zed поглядывать уже диффы.

Ну и напоследок инсайты — Яндекс активно заезжает на TSGo в дев-среде (прод пока на обычном tsc конечно). Потому что обычный TS уже не справляется в условиях огромных монореп. Пора!

Тут включу бабу Ягу и скажу, что мне не очень нравится, что лечат симптомы, а не болезнь — нужно уходить на Project References, а не заливать железом и горутинами, которые тоже не бесконечны (а уж в словиях macFUSE и подавно, хе-хе). Но это дорого, конечно.
22👍19😁3🤔2🤮1
Сегодня долго спорили с Ромой, нужно ли (и можно ли) ревьювить тысячи строк кода, вылетающих из нейронки. Я однозначно пока за ревью. За декомпозицию задач, чтобы не было тех самых тысяч строк кода. За доскональное вычитывание того, что именно там сделано.

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

Но есть конечно и обратная сторона, связанная с когнитивной перегрузкой и Рома хорошо про неё написал.

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

И мы рискуем попасть в ту историю, как у мейнтейнера zed в разработке DeltaDB

too much agentic coding led to code that smelled correct, but fell apart as soon as you started to build on it.

I still edit the code manually to ensure the narrative is clear, to keep my mental model of the problem up to date, and to ensure that the code actually does what it purports to do


https://zed.dev/blog/not-building-ai-for-the-money#concern-2-ai-code-is-worthless
👍3023😁3