Удалов
416 subscribers
134 photos
11 videos
132 links
Привет! Меня зовут Сергей Удалов и я Ruby Team Lead. Кроме этого веду YouTube @SergeiUdalov и телеграм-канал @UdalovX. ЛС @SergeiUdalov
Download Telegram
К слову сказать, CI снова сломался!
😁13👍1
Forwarded from Fashion DEV (Andrey Ermolaev)
Saint P Rubyconf - 6 июня

Конференция пройдет по адресу: Санкт-Петербург, Измайловский пр., 2 / наб. реки Фонтанки, 120

Анонсируем первые 2 доклада:

1️⃣ Сергей Малых (GroupPrice.ru) - Монолит 2.0: стратегия управления сложностью
В жизни любого успешного проекта всегда наступает момент, когда требуется разделить кодовую базу, чтобы было легче им управлять. Обычно под этим подразумевают переход на микросервисную архитектуру. И это довольно радикальный шаг, требующий организации взаимодействия сервисов, правильного управления, раскатки. Далеко не во всех проектах это реально требуется. В докладе я расскажу, как с минимальными затратами разделить монолит в монорепе. Продемонстрирую, как деплоить этот код через kamal. Покажу наш подход к управлению зависимостями и контролю связности кода.

2️⃣ Николай Кац (Rambler&Co) - Оркестрация ETL-пайплайнов на Sidekiq batches API
В нашем внутреннем FinOps-биллинге ежедневно выполняется ETL-пайплайн: конвейер задач, который тянет данные из десятка источников, считает производные метрики и складывает их в БД, с зависимостями между шагами и переиспользованием jobs на разных стадиях. Расскажу, как мы построили оркестратор таких пайплайнов на Sidekiq batches API в виде декларативного DSL поверх обычных Sidekiq workers. Сравним с готовыми Ruby-оркестраторами в 2026 — gush, acidic_job, sidekiq_flow — и покажу, какой класс задач не закрывает ни один из них.
👍7
Меня поражает, как мои знакомые гуманитарии используют искусственный интеллект и для каких задач.

Да, чаще всего, это простая работа в чатах и сервисах. Про агентов речи не идет почти никогда. Однако, есть существенное отличие, от моего подхода.

Как у разработчика, у меня есть определенное понимание, как это все работает. Что формирует «реалистичные» ожидания, что именно можно ожидать от ИИ. Поэтому, я даю ему задачи скромные, понятные мне. У меня прошло больше полугода, от момента, как я узнал о новом replit, который умеет сам делать приложения, до момента, как я зашел и набрал свой первый промпт, чтобы посмотреть, как это работают.

Останавливало меня понимание, как сложно писать приложения и что вряд ли ИИ это сможет сделать. Реальность сильно превзошла мои ожидания.

Люди, которые далеки от технологий, напротив, часто более оптимистичны насчет возможностей ИИ.

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

Оказалось, что мое «глубокое» понимание принципов работы ИИ стало своеобразным барьером. Вместо того чтобы смело тестировать новые инструменты, я тратил время на сомнения и попытки предвидеть возможные проблемы. Люди же, не обремененные техническими знаниями, действуют интуитивно и получают отличные результаты.

Иногда кажется, что человечество не создало ИИ, а случайно открыло нечто невероятное, словно нашли волшебную шкатулку с чертиком на заброшенном чердаке старинного особняка. И эта магическая сила подчиняется каким-то неизвестным нам законам природы, а не нашим алгоритмам.
1👍163💯2💅1
В моём последнем подкасте с Русланом Гатиатовым он рассказал, что в их компании запрещено писать код руками. Вообще.

Один комментатор выразил опасение, что подобное ограничение приведёт к деградации программистов, так как они утратят навыки написания качественного кода.

Не согласен.

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

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

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

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

А вот разработчикам старого образца, вероятно, придётся туго — адаптироваться тут сложно.
🤔31👍1👎1😁1
This media is not supported in your browser
VIEW IN TELEGRAM
🔥5🌭4👨‍💻2🍌1
Давно не было соло — решил записаться без гостя и разобрать то, что вы сами накидали в комментариях и в канале.

Про агентов с полным доступом к инфре после выпуска с Русланом. Про DDD, TDD и зачем это, даже если на собесе не спрашивают. Про vibe coding, тестировщиков как узкое место и спор: ИИ отупляет или просто меняет навыки — как когда появился Google.

Heavy Tech #46
https://youtu.be/SQDQHuZs2rk
🔥7👍4
Десятки тысяч строк автотестов на RSpec за плечами — а может, и сотни. А вот этого я не знал!

Ситуация простая. На верхнем уровне у вас есть набор атрибутов. В каком-то context вы хотите их чуть уточнить — убрать email, поменять роль, что угодно. Раньше мне приходилось придумывать отдельное имя для базового набора и потом переопределять его на более специфичном уровне. Выглядело примерно так:


subject { User.new(attributes) }

let(:base_attributes) do
{
email: 'user@example.com',
password: 'password123',
role: 'customer'
}
end

let(:attributes) { base_attributes }

it { is_expected.to be_valid }

context 'когда email не указан' do
let(:attributes) { base_attributes.merge(email: nil) }
it { expect(subject.errors[:email]).to include("can't be blank") }
end


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

Оказалось, RSpec позволяет во вложенном блоке переопределить let, обратившись к родительскому через super. Новых названий не нужно — переиспользуем старые. На верхнем уровне attributes, во вложенном — тоже attributes, просто с небольшой правкой:


subject { User.new(attributes) }

let(:attributes) do
{
email: 'user@example.com',
password: 'password123',
role: 'customer'
}
end

it { is_expected.to be_valid }

context 'когда email не указан' do
let(:attributes) { super().merge(email: nil) }
it { expect(subject.errors[:email]).to include("can't be blank") }
end


Поделитесь своими недавними открытиями в Ruby или RSpec — интересно.
🔥16👍4🤔2
Последние дни пробовал повторно вкатиться в Opencode. Хочется большего контроля над теми моделями, что сейчас используются и для каких задач. Плюс так я ближе к терминалу и VIM.

Тестирую минимальную подписку z.ai за 16$. Токены на GLM-5.2 летят очень быстро, а GLM-4.5-Air безлимитный глуповат.

Пока мой фаворит - подписка Opencode Go, где за 5$/мес (первый месяц, далее - 10$ - что тоже мало) получаешь хорошие лимиты на классные модели для программистов. Если лимиты закончились, то можно использовать бесплатные модели Big Pickle, Nemotron 3 Ultra, ...

Если пройдете по моему промо, и оформите подписку, то получите 1 мес бесплатно (как и я).

https://opencode.ai/go?ref=WE9TSPA7MN

Расскажите, какие у вас новости по ИИ?
Железный занавес 2.0

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

Сейчас история повторяется, только на уровне технологий.

Российская сторона блокирует сайты - пытается закрыть доступ к информации. Западная сторона блокирует сервисы - нейронки, модели, инструменты, которые дают конкурентное преимущество разработчикам и бизнесу.

Вещи, которые задевают лично меня.

Первое - блокировка LLM. Новости о блокировке моделей учащаются. OpenRouter всё больше ограничивает доступ к западным моделям. Это не РКН и не российская сторона - это санкционная политика Запада. И теперь нужно думать о проксировании LLM, чтобы иметь доступ к современным технологиям.

ИИ - новое электричество, он нужен везде. Посмотрите, в ленте всё больше рекламы сервисов с доступом к ИИ без VPN. Доступ к технологиям неизбежно превращается в "налог", который нам придется платить.

Второе - сертификаты. Центры выдачи начали отзывать их для российских компаний и сервисов. Лично я еще с такими кейсами не сталкивался, но новостей о сотнях тысяч таких сайтов - все больше. Пока Let's Encrypt работает, но это может измениться.

Третье - Cloudflare. Можно отдельным пунктом вынести, так как очень весомый сервис для рунета.

Я сам использую Cloudflare для управления DNS, но уже зайти в админку без VPN невозможно. Думаю, связано с тем, что Cloudflare использовал свои мощности для помощи в обходе блокировок - и сам стал жертвой этого процесса. Придётся смотреть в сторону российских альтернатив. Насколько я знаю, у Selectel есть бесплатный вариант настройки DNS. Буду разбираться.

Помните, как смеялись над "суверенным интернетом"? Яндекс.Браузер с сертификатами, российские банки с собственной инфраструктурой - казалось избыточным и даже смехотворным. Теперь мы понимаем, что это имело значение. Чтобы инфраструктура действительно была независимой.

Так что передо мной сейчас три задачи: проксирование LLM, перевод своих сайтов на российские сертификаты и управление DNS через российские сервисы. Потому что Cloudflare уже недоступен и будет терять доступность дальше.

Времена не выбирают, в них живут.
1😢10🤡65👍2👎1😁1
Cursor -> opencode -> pi.dev

Постоянно экспериментирую с ИИ-инструментами для кода. Долгое время фаворитом был Cursor - простой интерфейс, большие лимиты, понятная цена.

OpenCode

Но обстоятельства подтолкнули попробовать opencode. Я давний пользователь Vim/Neovim, люблю консоль. Cursor - это UI и мышь. Скорость не та. Opencode возвращает удобство терминала, хотя добавляет интересные вызовы: как переключаться между сессиями, не хватает ASK-режима, труднее передавать выделенный текст в контекст и другое по мелочи.

По ощущениям, opencode работает быстрее Cursor, но и лимиты подписок сжигает быстрее. В такие моменты понимаешь: Cursor даёт ощущение безопасности, что токены будут. С opencode ты больше предоставлен сам себе. Вместе со свободой приходит ответственность.

Про кастомизацию

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

pi.dev

Неделю назад начал пробовать pi.dev. Вот это интересно. Harness на минималках - нет больших скрытых промптов. Если чего-то не хватает - просишь, и он сам себя донастраивает. Почти сразу поставил hermes memory plugin, который запоминает ключевые предпочтения и рабочие решения. Пояляется ощущение работы с помощником, который тебя помнит.

Старые навыки

Что хорошо в консольных ИИ - они прекрасно работают с понятными мне Vim + Tmux. Не зря годами тренировал их сочетания. Не зря же??

Даже если Cursor, то теперь консольный.
👍96😁3
А у меня телеграм теперь работает через Tor.
👍5🤔2🤡1
RubyRussia 2026 начали собирать заявки. Отличная новость!

Обязательно буду подаваться. Уже есть 2 идеи, но об этом позже.
1👍17🔥3
Не успел сфотографировать целое - уже все съел. Короче, я на спорте, медовик на завтрак.
😁11🔥4🫡1
Какие интересные новости в мире Ruby?
🔥3
Нужно себя побаловать
👍12😁7💅6
Media is too big
VIEW IN TELEGRAM
На набережной в Благовещенске стоял стол для армрестлинга. И вот такой крепкий парень.
🔥9👏9👍3🤔1
В китайском книжном магазине
🐳11
This media is not supported in your browser
VIEW IN TELEGRAM
🔥14💅2
Вчера записали большой выпуск подкаста с Ильей Зыкиным (@prostocoding), говорили больше 2-х часов. Ждите!
🔥17
В гостях Илья Зыкин, он же the-teacher: бывший учитель информатики, автор гемов с тысячами звёзд — the_role, the_sortable_tree, rails-start — и AI-фреймворка ActiveHarness. Главное — будущее Rails в эпоху AI и то, что остаётся разработчику, когда код пишут нейросети.


https://youtu.be/dUiXI9miHyQ
211👍4👎1