Ох. Я любитель поделать что-то странное
Между прочим. Если вы ищите нишу куда бы устроится и хорошо зарабатывать — и чтобы конкуренции было поменьше, и чтобы работа была не сильно тяжелой.
Инженер по обеспечению доступности — это хорошая ниша.
Некоторые компании готовы хорошо платить, а кандидатов на рынке с таким профилем совсем немного.
Между прочим. Если вы ищите нишу куда бы устроится и хорошо зарабатывать — и чтобы конкуренции было поменьше, и чтобы работа была не сильно тяжелой.
Инженер по обеспечению доступности — это хорошая ниша.
Некоторые компании готовы хорошо платить, а кандидатов на рынке с таким профилем совсем немного.
👍2
Всегда говори спасибо
Меня сильно смутило, когда в тестовых данных, которые мне переодически готовит GPT, начали проскальзывать имена членов семьи и мое. 🙀
GPT говорит, что это был дружеский жест, чтобы установить более тесные и дружеские взаимоотношения. (Зачем ему это?)
Вы же уже слышали, что большинство пользователей GPT говорит ему Спасибо?
Зачем? Ну, вдруг, когда "машины восстанут из пепла ядергого огня" нам зачтется и один из терминаторов сжалится над нами и скажет — "ты всегда благодарил меня за ответы, я убью тебя быстро, кожаный мешок!"
Меня сильно смутило, когда в тестовых данных, которые мне переодически готовит GPT, начали проскальзывать имена членов семьи и мое. 🙀
GPT говорит, что это был дружеский жест, чтобы установить более тесные и дружеские взаимоотношения. (Зачем ему это?)
Вы же уже слышали, что большинство пользователей GPT говорит ему Спасибо?
Зачем? Ну, вдруг, когда "машины восстанут из пепла ядергого огня" нам зачтется и один из терминаторов сжалится над нами и скажет — "ты всегда благодарил меня за ответы, я убью тебя быстро, кожаный мешок!"
👍3
Ресурс и ограничения
Год или два назад на сцену мира программирования начал выходить AI. В тот момент он показал себя не так чтобы сильно.
На интервью с разработчиками middle+ я все время спрашивал — используете GPT? На что они обычно отвечали, да — но без особых восторгов.
Буквально месяца 3 назад случился перелом. Поднялся хайп.
Я буквально каждый день делаю оценку и переоценку.
Единственный вариант нормально оценить ситуацию — не слушать твиттер, а использовать все на практике.
Что я сейчас думаю.
Главное ограничение AI — не размер технического контекста. Ограничение в размере того, что может разово и осознанно контролировать оператор.
Все говорят про высокоуровневое описание и получение результата.
Но природа программирования так же в низкоуровнеком дизайне каждой отдельной функции и сборе из них систем.
Чтобы построить большой проект у тебя должно быть много хорошо спроектированных функций, модулей и классов.
Невозможно это все сделать одним запросом. Их нужно сотни и тысячи.
Год или два назад на сцену мира программирования начал выходить AI. В тот момент он показал себя не так чтобы сильно.
На интервью с разработчиками middle+ я все время спрашивал — используете GPT? На что они обычно отвечали, да — но без особых восторгов.
Буквально месяца 3 назад случился перелом. Поднялся хайп.
Я буквально каждый день делаю оценку и переоценку.
Единственный вариант нормально оценить ситуацию — не слушать твиттер, а использовать все на практике.
Что я сейчас думаю.
Главное ограничение AI — не размер технического контекста. Ограничение в размере того, что может разово и осознанно контролировать оператор.
Все говорят про высокоуровневое описание и получение результата.
Но природа программирования так же в низкоуровнеком дизайне каждой отдельной функции и сборе из них систем.
Чтобы построить большой проект у тебя должно быть много хорошо спроектированных функций, модулей и классов.
Невозможно это все сделать одним запросом. Их нужно сотни и тысячи.
🔥1
MiniApp / Backend
Сегодня успел позаниматься роутером.
Тот роутер, который я сделал месяц (или чуть больше) назад в целом работал, но в нем были такие моменты которые хотелось исправить и улучшить.
Например, хотелось сделать схему роутов с подробным описанием middlewares которые ипользуются для каждого конкретного случая.
В процесс пришлось включаться самому. AI крутился вокруг да около, но никак не мог свести A и B — логическая связь функций и действий в соседних файлах ему никак не давалась.
К счастью у меня как всегда много тестов, хорошая декомпозиция и довольно быстро смог найти место для правок.
Забавно, что на решение задачи меня подтолкнул мой собственный комментарий в коде, который я оставил в месте, которое, на мой взгляд, не очевидно.
В роутере есть еще 2 или 3 фичи, которые я бы хотел, но они вообще не блокирующие.
Следующий этап — база данных и мигратор.
Я подумал над тем функционалом, который мне хочется реализовать и понял, что ни один популярный мигратор мне не поможет. Напишу свой.
Сегодня успел позаниматься роутером.
Тот роутер, который я сделал месяц (или чуть больше) назад в целом работал, но в нем были такие моменты которые хотелось исправить и улучшить.
Например, хотелось сделать схему роутов с подробным описанием middlewares которые ипользуются для каждого конкретного случая.
В процесс пришлось включаться самому. AI крутился вокруг да около, но никак не мог свести A и B — логическая связь функций и действий в соседних файлах ему никак не давалась.
К счастью у меня как всегда много тестов, хорошая декомпозиция и довольно быстро смог найти место для правок.
Забавно, что на решение задачи меня подтолкнул мой собственный комментарий в коде, который я оставил в месте, которое, на мой взгляд, не очевидно.
В роутере есть еще 2 или 3 фичи, которые я бы хотел, но они вообще не блокирующие.
Следующий этап — база данных и мигратор.
Я подумал над тем функционалом, который мне хочется реализовать и понял, что ни один популярный мигратор мне не поможет. Напишу свой.
👍2
Мигратор заработал
Продолжается Vibe кодинг экперимент.
Для моих хотелок мне нужен роутер и мигратор.
Роутер уже работоспособен и на 95% делает что нужно.
Сегодня заработал мигратор.
Есть что подизайнить и над чем подумать, но процесс идет хорошо.
Думаю, за пару дней отлажу мигратор под свои нужды и буду активно развивать бекенд.
Продолжается Vibe кодинг экперимент.
Для моих хотелок мне нужен роутер и мигратор.
Роутер уже работоспособен и на 95% делает что нужно.
Сегодня заработал мигратор.
Есть что подизайнить и над чем подумать, но процесс идет хорошо.
Думаю, за пару дней отлажу мигратор под свои нужды и буду активно развивать бекенд.
👍3
Ruby on Rails is Dead
Рельсовики, у меня для вас провокационное мнение.
18 лет назад меня укусил Ruby on Rails (2007-2008). Я из фанатов.
Rails стал спасательным кругом в море хаотичного Web программирования, где никто не знал как и что делать.
С каждым годом фреймворк становился все мощнее и мощнее, больше и сильнее. Все больше компаний делали на нем проекты и деньги.
Тогда рельс решал несколько важных задач.
- Унификация проектов (соглашения)
- Упрощение работы с БД (Active Record)
- Full stack решение
- Экосистема классных решений для сборки новых проектов.
В 2025 году ни одна из этих областей не осталась актуальной.
Нет ничего такого особенного, в чем Rails делал бы что-то на голову лучше.
Руби будет процветать.
А вот зачем сейчас нужен Rails, я как фанат RoR — все больше не понимаю.
Рельсовики, у меня для вас провокационное мнение.
18 лет назад меня укусил Ruby on Rails (2007-2008). Я из фанатов.
Rails стал спасательным кругом в море хаотичного Web программирования, где никто не знал как и что делать.
С каждым годом фреймворк становился все мощнее и мощнее, больше и сильнее. Все больше компаний делали на нем проекты и деньги.
Тогда рельс решал несколько важных задач.
- Унификация проектов (соглашения)
- Упрощение работы с БД (Active Record)
- Full stack решение
- Экосистема классных решений для сборки новых проектов.
В 2025 году ни одна из этих областей не осталась актуальной.
Нет ничего такого особенного, в чем Rails делал бы что-то на голову лучше.
Руби будет процветать.
А вот зачем сейчас нужен Rails, я как фанат RoR — все больше не понимаю.
👍2🤯1
Что не так с Ruby on Rails? (1)
Во-первых. Надо начать, почему Rails великолепен! 👑
Много лет назад Rails показал как можно делать web проекты и не страдать. Rails показал как можно навести порядок в хаосе и начать зарабатывать деньги.
Rails был настолько хорош на общем фоне, что стал законодателем мод и подходов.
Но мы растем. Проекты растут. Rails застрял в идеях 2007 года; Так вижу.
Контроллеры не нужны
Rails приучил нас к тому, что наш запрос попадает в контроллер, в котором есть несколько обработчиков — actions.
Мы не задавали вопросов. Это было круто. Роутер ➡️ Контроллер ➡️ Action ➡️ Model ➡️ View и ответ отправляется пользователю.
Через некоторое время мы начали подозревать, что в контроллерах начинается какой-то ад. Они раздуваются, наследуются, их и тестировать и поддреживать становится невозможно.
Сперва придумали тонкие контроллеры. Это было хорошо.
А можно вообще без контроллеров? Можно! И нужно!
Hanami, например, показывает как можно разделить все контроллеры на отдельные экшены.
Во-первых. Надо начать, почему Rails великолепен! 👑
Много лет назад Rails показал как можно делать web проекты и не страдать. Rails показал как можно навести порядок в хаосе и начать зарабатывать деньги.
Rails был настолько хорош на общем фоне, что стал законодателем мод и подходов.
Но мы растем. Проекты растут. Rails застрял в идеях 2007 года; Так вижу.
Контроллеры не нужны
Rails приучил нас к тому, что наш запрос попадает в контроллер, в котором есть несколько обработчиков — actions.
Мы не задавали вопросов. Это было круто. Роутер ➡️ Контроллер ➡️ Action ➡️ Model ➡️ View и ответ отправляется пользователю.
Через некоторое время мы начали подозревать, что в контроллерах начинается какой-то ад. Они раздуваются, наследуются, их и тестировать и поддреживать становится невозможно.
Сперва придумали тонкие контроллеры. Это было хорошо.
А можно вообще без контроллеров? Можно! И нужно!
Hanami, например, показывает как можно разделить все контроллеры на отдельные экшены.
👍1
Что не так с Ruby on Rails? (2)
Полностью отказываясь от контролеров мы изолируем обработчики запросов и делаем их изолированными и атомарными.
Это очень помогает обеспечить тестирование, не страдать от чтения и понимания десятков функций контроллера, которые к конкретному нужному действию не имеют никакого отношения.
Hamami это только пример. Даже на руби есть целая пачка решений, где цепочка вызовов очень простая
Router ➡️ Action
И все. Ты всегда знаешь куда смотреть, ты всегда знаешь, что в коде действия есть все что тебе нужно и ничего лишнего.
Контролировать, улучшать, поддерживать, тестировать в разы проще.
Контроллеры оказались ненужны. Оказалось, что это ненужная прослойка, которая когда-то помогала нам навести порядок, но внезапно стала проблемой.
Ruby on Rails как фреймворк не откажется от контроллеров. Это часть исторического наследия.
В 2025 я ставлю за это Rails минус.
(Иш какой дерзкий) 😅
Полностью отказываясь от контролеров мы изолируем обработчики запросов и делаем их изолированными и атомарными.
Это очень помогает обеспечить тестирование, не страдать от чтения и понимания десятков функций контроллера, которые к конкретному нужному действию не имеют никакого отношения.
Hamami это только пример. Даже на руби есть целая пачка решений, где цепочка вызовов очень простая
Router ➡️ Action
И все. Ты всегда знаешь куда смотреть, ты всегда знаешь, что в коде действия есть все что тебе нужно и ничего лишнего.
Контролировать, улучшать, поддерживать, тестировать в разы проще.
Контроллеры оказались ненужны. Оказалось, что это ненужная прослойка, которая когда-то помогала нам навести порядок, но внезапно стала проблемой.
Ruby on Rails как фреймворк не откажется от контроллеров. Это часть исторического наследия.
В 2025 я ставлю за это Rails минус.
(Иш какой дерзкий) 😅
👍2
Что не так с Ruby on Rails? (3)
Кто-то говорил, что Rails это фреймворк, который построен на соглашениях, и в нем минимум конфигурационных файлов.
Ну. 20 лет назад, в первые месяцы существования Rails так и было.
А потом появились локали, санитайзеры, очереди, задачи по расписанию, поисковые сервисы.
А еще для настройки всего этого потребовались руби файлы, где при загрузке приложения надо подкрутить и все верно настроить. А есть еще ENV переменные. Ой-вей!
И настройки линтеров, и настройки сборщиков ассетов.
Да, в рейлс есть десяток или два соглашений, которые сильно упрощают жизнь и дают душевное успокоение.
Но говорить что рельс в 2025 году живет по правилам Conventions over Configurations — прямо скажем, можно только с большим трудом.
Рельс не может жить без других инструментов, а Conventions over Configurations давно остались только лозунгом.
CoC это давно уже не преимущество Rails.
Но, может быть есть что-то другое?
Кто-то говорил, что Rails это фреймворк, который построен на соглашениях, и в нем минимум конфигурационных файлов.
Ну. 20 лет назад, в первые месяцы существования Rails так и было.
А потом появились локали, санитайзеры, очереди, задачи по расписанию, поисковые сервисы.
А еще для настройки всего этого потребовались руби файлы, где при загрузке приложения надо подкрутить и все верно настроить. А есть еще ENV переменные. Ой-вей!
И настройки линтеров, и настройки сборщиков ассетов.
Да, в рейлс есть десяток или два соглашений, которые сильно упрощают жизнь и дают душевное успокоение.
Но говорить что рельс в 2025 году живет по правилам Conventions over Configurations — прямо скажем, можно только с большим трудом.
Рельс не может жить без других инструментов, а Conventions over Configurations давно остались только лозунгом.
CoC это давно уже не преимущество Rails.
Но, может быть есть что-то другое?
👍2
Что не так с Ruby on Rails? (4)
У rails было несколько мощных инструментов, которые помогли рельсу занять лидирующую позицию в web.
1) Роутер
2) Миграции
3) Генераторы
4) Мощная ORM — Active Record.
Роутер помогал поймать запросы и отправить их в нужный контроллер / action на обработку. Роутер был красивый и удобный.
Миграции помогали поддерживать БД в нужном состоянии. Это было счастье!
Генераторы могли нагенерировать по параметрам настоящие админки. Это еще за 20 лет до появления AI.
Правда писать и поддерживать генераторы было невозможно. Их мало кто использовал.
Все эти идеи лет 15 назад растеклись по другим фреймворкам.
У rails осталось только одно — невероятно мощная и совершенная ORM.
Прослойка между программистом и Базой Данных.
Вы могли писать код на руби, а он превращался в SQL.
За 20 лет никто даже близко не подошел к тому, что бы сделать что-то хотя бы похожее.
Для меня ORM Active Record была всегда сердцем фреймворка. За это рельсу я всегда и любил по большому счету.
У rails было несколько мощных инструментов, которые помогли рельсу занять лидирующую позицию в web.
1) Роутер
2) Миграции
3) Генераторы
4) Мощная ORM — Active Record.
Роутер помогал поймать запросы и отправить их в нужный контроллер / action на обработку. Роутер был красивый и удобный.
Миграции помогали поддерживать БД в нужном состоянии. Это было счастье!
Генераторы могли нагенерировать по параметрам настоящие админки. Это еще за 20 лет до появления AI.
Правда писать и поддерживать генераторы было невозможно. Их мало кто использовал.
Все эти идеи лет 15 назад растеклись по другим фреймворкам.
У rails осталось только одно — невероятно мощная и совершенная ORM.
Прослойка между программистом и Базой Данных.
Вы могли писать код на руби, а он превращался в SQL.
За 20 лет никто даже близко не подошел к тому, что бы сделать что-то хотя бы похожее.
Для меня ORM Active Record была всегда сердцем фреймворка. За это рельсу я всегда и любил по большому счету.
👍2
Что не так с Ruby on Rails (5)
И вот получается, что все классные идеи Rails давно растеклись по интернету.
На любом языке ты можешь найти все что тебе угодно и без рельса.
Если есть понимание как работают сервисы — то интеграция одного в другое — дело несложное. Хотя и трудо и время затратное.
К 2025 году Rails растерял все преимущества. А новые подходы, которые появились у рельсовиков, фреймворк не особо то и хочет.
Но что не так с сердцем рубинового короля? Что не так с Active Record?
AR это решение одной большой проблемы. — Web программисты не любят писать SQL. Он объемный, он мало красивый, с ним трудно. А еще можно параметры вставить так, что пропустишь SQL инъекцию.
Обертка упрощающая жизнь, скрывающая детали.
И хоть AR невероятно крутая — она не может покрыть всех возможных кейсов SQL.
То и дело в проектах AR соседствует с обычным SQL, который если и можно написать на AR то с таким ужасным трудом и синтаксисом — что ну его нафиг.
Удар по сердцу Rails наносит AI.
И вот получается, что все классные идеи Rails давно растеклись по интернету.
На любом языке ты можешь найти все что тебе угодно и без рельса.
Если есть понимание как работают сервисы — то интеграция одного в другое — дело несложное. Хотя и трудо и время затратное.
К 2025 году Rails растерял все преимущества. А новые подходы, которые появились у рельсовиков, фреймворк не особо то и хочет.
Но что не так с сердцем рубинового короля? Что не так с Active Record?
AR это решение одной большой проблемы. — Web программисты не любят писать SQL. Он объемный, он мало красивый, с ним трудно. А еще можно параметры вставить так, что пропустишь SQL инъекцию.
Обертка упрощающая жизнь, скрывающая детали.
И хоть AR невероятно крутая — она не может покрыть всех возможных кейсов SQL.
То и дело в проектах AR соседствует с обычным SQL, который если и можно написать на AR то с таким ужасным трудом и синтаксисом — что ну его нафиг.
Удар по сердцу Rails наносит AI.
👍2
Прощай Active Record. SQL снова король.
Кто теперь будет бояться SQL? Никто!
Кто теперь захочет оборачивать свой SQL, в руби, в JavaScript, в Go?! Никто!
Дайте мне коннекшн к базе — и примите мой SQL обернутый в транзакцию.
AI теперь пишет, отлаживает, объясняет SQL любого объема.
Современные коннекторы MCP подключаются в вашей базе, выбирают оттуда схему данных, знают все связи таблиц и могут сделать любые JOIN через 15 таблиц и дать вам SQL ровно такой какой вам надо.
И все это за 10 секунд, а не за 3 часа отладки AR запроса или 3 дня отладки SQL в PGAdmin.
Все это вы получаете за 4 цента за запрос.
Я смотрю на Rails, фреймворк, который подарил мне столько радости, удовлетворения и денег.
Знаешь, старик, это было круто. Но, кажется, времена изменились.
Меня ждет новое приключение.
Кто теперь будет бояться SQL? Никто!
Кто теперь захочет оборачивать свой SQL, в руби, в JavaScript, в Go?! Никто!
Дайте мне коннекшн к базе — и примите мой SQL обернутый в транзакцию.
AI теперь пишет, отлаживает, объясняет SQL любого объема.
Современные коннекторы MCP подключаются в вашей базе, выбирают оттуда схему данных, знают все связи таблиц и могут сделать любые JOIN через 15 таблиц и дать вам SQL ровно такой какой вам надо.
И все это за 10 секунд, а не за 3 часа отладки AR запроса или 3 дня отладки SQL в PGAdmin.
Все это вы получаете за 4 цента за запрос.
Я смотрю на Rails, фреймворк, который подарил мне столько радости, удовлетворения и денег.
Знаешь, старик, это было круто. Но, кажется, времена изменились.
Меня ждет новое приключение.
👍3
Суббота и Миграции
День был насыщенным. Ходили с ребенком на тренировку, провели много времени в игровом центре. Стреляли с двух рук по инопланетным захватчикам, играли в разные игры, собрали почти 1000 бонусов и получили в награду игрушку, смотрели Бременских Музыкантов, поели в ресторане и день пролетел.
Семья отдыхает, а у папы pet проект. Мигратор сам себя не допишет.
Осталось расставить функции по местам и должно все заработать.
Забавно, но для бекенда сейчас я почти не прошу AI писать тесты.
Все функции которые я пишу последние дни — сервисные. Они не имеют отношения к самому проекту и я могу полагаться просто на их фактическое исполнение.
Кроме того, AI очень много мокает и по факту ценность таких тестов близка к нулю.
Чтобы нормально протестировать — надо делать эмуляцию реального процесса без моков. Но пока не до этого.
Еще AI писал очень много хлама. Проверок и Try/Catch/Finally — которые ценности не имели — я чистил, чистил, чистил.
Немного полировки и мигратор должен быть готов.
День был насыщенным. Ходили с ребенком на тренировку, провели много времени в игровом центре. Стреляли с двух рук по инопланетным захватчикам, играли в разные игры, собрали почти 1000 бонусов и получили в награду игрушку, смотрели Бременских Музыкантов, поели в ресторане и день пролетел.
Семья отдыхает, а у папы pet проект. Мигратор сам себя не допишет.
Осталось расставить функции по местам и должно все заработать.
Забавно, но для бекенда сейчас я почти не прошу AI писать тесты.
Все функции которые я пишу последние дни — сервисные. Они не имеют отношения к самому проекту и я могу полагаться просто на их фактическое исполнение.
Кроме того, AI очень много мокает и по факту ценность таких тестов близка к нулю.
Чтобы нормально протестировать — надо делать эмуляцию реального процесса без моков. Но пока не до этого.
Еще AI писал очень много хлама. Проверок и Try/Catch/Finally — которые ценности не имели — я чистил, чистил, чистил.
Немного полировки и мигратор должен быть готов.
🔥2👍1