Angry Beard – Telegram
Angry Beard
273 subscribers
168 photos
12 videos
13 files
672 links
Bearded guy about the startups, tech and product development - https://alec-c4.com
Download Telegram
🥰4😁2
#ruby #rails Вовсю полыхает скандал в сообществе ruby-разработчиков. Andre Arko, один из core commit-еров bundler рассказал, что Ruby Central пытается заявить свои права на проект. Сам же Andre считает, что проект должен принадлежать сообществу, он зарегистрировал торговую марку bundler на своё имя, но готов передать её организации, которая будет подконтрольна мейнтейнерам и сообществу.
😱2
#ruby #rails А вот тут Joel Drapper пишет, что судя по всему торчат уши Shopify за этим конфликтом. Вкратце:

- У Ruby Central возникли финансовые трудности.
- Sidekiq прекратил спонсорство в размере $250 000 в год после того, как на RailsConf 2025 дали слово DHH.
- Shopify выдвинул ультиматум: Ruby Central должен взять полный контроль над репозиториями RubyGems на GitHub и гемами bundler и rubygems-update, иначе финансирование будет прекращено.
- HSBT поспешил и начал захват: назначил Марти Хоута владельцем репозиториев и урезал права мейнтейнеров ещё до обсуждения. Доступ временно вернули, и Марти встретился с мейнтейнерами, признав, что Ruby Central не имеет права просто забирать эти проекты у сообщества. Он предлагал альтернативу — форк RubyGems — и предупреждал о рисках.
- Несмотря на это, совет Ruby Central проголосовал за захват и немедленно его реализовал. Впоследствии несколько членов совета ввели сообщество в заблуждение, оправдывая действия в соцсетях.
- Это было подготовлено заранее: Shopify даже организовал собственную “дежурку” для замены прежних мейнтейнеров, включая тех, кто управлял сервисом RubyGems.org. Более того, Shopify настоял, чтобы Андрэ Арко, работавший над RubyGems более десяти лет и основавший Ruby Together (позже слившуюся с Ruby Central), не возвращался в проект.
Если вам не хватает драм на Netflix, то вот вам новый замес в #ruby on #rails сообществе
1 - DHH набросил на вентилятор - Бриташка уже не та, трансгендерные черные женщины из Пакистана собираются в банды и всех насилуют
2 - некий Tekin Süleyman с ноги открывает дверь в ад и заявляет, что DHH - это проблема и говорит, мол, такие высказывания не проходят мимо, когда у тебя в руках Rails Foundation и торговые марки.
3 - DHH надевает белое пальто, всех называет пидарасами, а себя жертвой и говорит, что он вращал всех хейтеров на своей волшебной палочке и отменить его не получится

Конец первого сезона.

Как вы понимаете - финал сезона остался открытым, скачать прочитать все серии можно тут
- https://tekin.co.uk/2025/09/the-ruby-community-has-a-dhh-problem
- https://world.hey.com/dhh/calling-someone-a-nazi-is-a-permission-slip-for-violence-4bfbbb82
- https://world.hey.com/dhh/we-ve-all-had-enough-of-this-nonsense-8545dd26
Angry Beard
#ruby #rails А вот тут Joel Drapper пишет, что судя по всему торчат уши Shopify за этим конфликтом. Вкратце: - У Ruby Central возникли финансовые трудности. - Sidekiq прекратил спонсорство в размере $250 000 в год после того, как на RailsConf 2025 дали слово…
А вот и ответ от RubyCentral, в котором они говорят следующее

Ruby Central заморозил привилегии в репозиториях RubyGems и проводит аудит доступа. Вводятся новые Contributor и Operator Agreements, чтобы обеспечить безопасность и прозрачность. Публикация гемов не останавливается, обещаны регулярные апдейты и диалог с сообществом.

Верим?
12 Factor Agents - принципы разработки агентов

По следам от 12 Factor Apps, Декстер Хорти собрал ключевые принципы по разработке агентов, делюсь!

1) Преобразование естественного языка в вызовы инструментов. Агент интерпретирует команды в формализованные вызовы функций, а исполняет их — детерминированный код
2) Владей своими промптами (как кодом). Промпт — это артефакт. Его надо хранить, версионировать, тестировать и относиться к нему, как к важной части кода.
3) Управляй контекстом агента. Активно контролируй, что попадает в это окно. Убирай уже не нужное, суммаризируй, оставляй важное, выделяй ограниченные слоты под фичи — внимание модели ограничено
4) Вызов тулинга — это просто JSON. LLM генерирует название тула и параметры, остальное должен делать ваш детерминированный вход. Модель решает "что делать", а ваше приложение "как делать"
5) Держи тех.состояние и бизнес состояние вместе. Каждый шаг агента — это и логика и данные. Всё держим в одном состоянии, чтобы потом не ковыряться по разным логам в поисках, где оно сломалось
6) API для управление циклом агента. Агент должен иметь простой API для запуска, приостановки и возобновления работы, уметь вставать на паузу и возвращаться к работе спустя время на каждом этапе жизненного цикла
7) Запрос к человеку — как инструмент. Любое обращение в процессе работы к человеку должно быть представлено агенту, как инструмент requestClarification(message:string)
8) Явно контролируйте логику исполнения. Модель лишь "говорит" что, а твой код решает стоит ли выполнять, когда и как.
9) Добавляйте ошибки исполнения инструментов в контекст. Если что-то упало, сократи информацию и добавь это в контекст агента. Пусть модель сама догадается, что дальше: повторить, спросить или изменить стратегию
10) Используйте малых специализированных агентов. Лучше много маленьких агентов, решающих узконаправленные задачи, чем один перегруженный агент всего
11) Доставляй агентов в любые интерфейсы, удобные пользователю. Slack, Telegram, веб, CLI — неважно. Главное — единый API и омниканальность. Пользователь не должен думать, где общаться с агентом. Он просто должен это делать.
12) Агент как Stateless Reducer. На входе — состояние и запрос. На выходе — новое состояние и ответ. Всё как в хорошем Redux. Никакого собственного внутреннего состояния, он должен работать как чистая функция

Бонус:
13) Предзагрузи все необходимое. Агент не должен постоянно дёргать одни и те же данные. Наполняй контекст тем, что почти наверняка пригодится.

Репа: https://github.com/humanlayer/12-factor-agents
Доклад: https://www.youtube.com/watch?v=8kMaTybvDUw
#AI Я потестировал GitHub SpecKit в связке с Anthropic Claude и скажу честно - мне нравится, куда движется этот проект. Концепция достаточно простая - вы пишите (или генерите) конституцию проекта, которая определяет подходы к разработке, описываете необходимую функциональность и Claude выступает как аналитик, декомпозируя её на блоки и задавая уточняющие вопросы. После этого Claude нарезает функционал на задачи и уже потом, отталкиваясь от конституции и получившихся ТЗ и декомпозиции, пишет код. Все получившиеся артефакты вы можете обновлять в процессе работы. Вот например выдержки из конституции проекта, которые мне сгенерились:


### I. Test-First Development (NON-NEGOTIABLE)

All feature development MUST follow Test-Driven Development:
- Write tests before implementation
- Tests must fail before implementation begins
- Red-Green-Refactor cycle strictly enforced
- Never commit failing tests to main branch
- Never disable or skip tests to make builds pass

**Rationale**: Tests serve as living documentation and prevent regressions. The test-first
approach ensures we understand requirements before writing code and maintains high confidence
in our changes.



## Development Standards

### Code Quality Requirements

- All Ruby code MUST pass Standard linter without warnings
- All ERB templates MUST pass erb_lint without violations
- All JavaScript MUST pass configured ESLint rules
- Security scans (Brakeman, bundler-audit) MUST pass before merge
- Code coverage MUST not decrease with new changes



### Interaction Objects

Complex business logic MUST be encapsulated in ActiveInteraction classes:
- One interaction per business operation
- Clear input validation with typed inputs
- Single responsibility per interaction
- Return results (success/failure) instead of raising exceptions
- Interactions are the primary unit test target for business logic

**Rationale**: Interactions provide a clear contract for business operations, make testing
easier, and keep controllers and models thin. They serve as the boundary between the web
layer and business logic.


А если заглянуть в код, то он очень даже неплох 🙂 Короче говоря - контент-план для блога у меня пополнился как минимум на одну позицию 🙂
😁2
#ruby #rails #elixir AppSignal прекрасны - только что они анонсировали бесплатный доступ к своей платформе. Но есть небольшие ограничения

- 50K requests
- 1GB logging
- 5-day retention

По идее этого должно хватать для старта или небольшого проекта
👍3
Вчерась Надысь наговнокодил в рамках тестирования Claude Code Skills сделал скиллы для rails-разработки. Поэтому если у кого есть желание потестировать и макнуть этого рукожопого мордой в его говнокод дать обратную связь - буду очень признателен 🙂
👍3
#rails #ruby #AI Если вы активно используете Claude Code для разработки rails-приложений, то вот эта тулза вам поможет немного экономить на токенах, обещают, что по сравнению с дефолтными страницами ошибок более чем 13-кратная экономия токенов
#apple #swift #android #mobile Несмотря на то, что сейчас новость о том, что Apple выпустила Swift Android SDK звучит из каждого утюга, подобные эксперименты проводились уже достаточно давно. Например вот ветка на формуме swift, где можно найти упоминания некоторых проектов на эту тему, но я помню и более ранние эксперименты, чуть ли не 10-летней давности (но скорее всего сейчас я их уже не найду). И хотя рано предрекать скорейшую гибель flutter, react native, kotlin native и их аналогов - инициатива действительно интересная.
👏2
#ruby #rails Несмотря на то, что я предпочитаю использовать shrine, вот этот гем зайдет тем, кто использует ActiveStorage. В двух словах - это mountable rails engine, которая представляет собой дашборд для всех загружаемых файлов.
👍4
#postgres #devops #db Уащпе красота! Postgresus - тулза для бэкапа БД и как понятно из названия, она заточена под PostgreSQL. Open Source, куча всяких опция для бекапа - всё, что мы любим
#AI ИНтересную задачу решают авторы этого проекта - оптимизация использования токенов в LLM посредством перехода от JSON на свой формат. Выглядит достаточно перспективно, например вместо


{
"users": [
{ "id": 1, "name": "Alice", "role": "admin" },
{ "id": 2, "name": "Bob", "role": "user" }
]
}


предполагается более компактная запись типа


users[2]{id,name,role}:
1,Alice,admin
2,Bob,user
😁2
Неожиданно Flowbite впустили версию 4.x (на момент написания 4.0.1) своего UI Kit. Что нового
- сделали 5 тем, которые можно применить сразу из коробки (modern, minimal, playful, enterprise, mono)
- все цвета стали переменными в css (как завещал Adam Рамзанович Wathan, автор TailwindCSS)
- оптимизировали код, сделали его компактнее в 2 раза, перенеся dark mode в css variables
- насыпали новых компонентов - cards, checkboxes и так далее
- улучшили документацию (не заметил, если честно, но ок)

В общем - надо пробовать и писать Zoltan, если найдём косяки 🙂
Поддался модному тренду и добавил в kickstart ажно целых 3 шаблона для inertia_rails - svelte (моя прееелесть), react и vue. Ссылка всё та же - туточки. #ruby #rails
2