Найти в Дзене
Разговоры о важном
На днях плохие парни скомпрометировали суперпопулярный ИИ-пакет litellm на PyPI, у которого около 3 млн скачиваний в день. Вредоносный код в свежих версиях целенаправленно пылесосил SSH-ключи, доступы к AWS, пайплайнам и даже криптокошелькам. В моем текущем стеке питона почти нет, но от этой новости я словил флешбэк. В моем прошлом проекте "Масштаб" ребята отхватили похожую проблему - поймали критическую уязвимость React2Shell, которая позволяла удаленно выполнять код. Глядя на такие факапы, я лишний раз убеждаюсь в правиле, которое стабильно экономит мне нервы: я никогда не ставлю самую последнюю версию библиотеки, прошивки и так далее...
19 часов назад
Скриншот - это грубо, больно, но это база
Пора и мне перестать романтизировать ИТ. Программисты, продакты, аналитики, QA не создают самостоятельную ценность из воздуха. ИТ - это высокооплачиваемый обслуживающий персонал для чужого бизнеса. Думаю, что 90% всей айтишки - это автоматизация бизнес-процессов. И это отлично! Я сам пилю B2B-автоматизацию найма масс-персонала в Самокате. Курьеры нужны всегда, объемы растут каждый год. И казалось бы, мы ядро. Но в этом году по моей команде прошлись сокращениями. Работы стало больше, а людей меньше...
2 дня назад
Мой экстеншен Speech 2 Text chromewebstore.google.com/...oih тихонько пробил отметку в 1000 активных пользователей в месяц (MAU). Никакой магии: на старте я три дня покрутил рекламу в Яндексе, чтобы дать проекту первый пинок, а дальше он уже полз сам на чистой органике Chrome Web Store. Теперь, с тысячей юзеров на борту, я хочу снова постучаться к Гуглу за бейджиком Featured. В прошлый раз они меня молча развернули без объяснения причин. С тех пор я выкатил редизайн и перебрал подкапотную часть. Посмотрим, сработает ли в этот раз комбинация «обновленный UI + доказанный спрос». Параллельно думаю, куда развивать проект дальше. Оставлять его просто плагином — путь в никуда. Сейчас план такой: Вырастить из этого полноценный веб-сервис, где расширение будет только одной из точек входа. Навесить полезный функционал поверх голой транскрибации: суммаризацию текста, перевод и выделение главного (то, что сейчас делают все AI-тулзы). Отсюда вопрос к тем, кто по работе часто расшифровывает созвоны, интервью или лекции: Вы за такие сервисы вообще платите или обходитесь бесплатными/встроенными решениями? Поделитесь в комментах, чем пользуетесь сейчас и за что готовы были бы занести денег. #bip #speech_2_text
2 недели назад
Заплатил Гуглу $100, чтобы продать подписку за $10. Иронично? Да, но есть нюанс: юзер купил подписку на приложение, которое в этот момент вообще не работало. Но обо всём по порядку. В конце января я нанял китайское агентство (писал тут t.me/...)), чтобы запустить Google Ads. Гугл моментально забанил наш новенький аккаунт как подозрительный. Агентство пожало плечами и ушло на месяц смотреть новогодние фейерверки (у них праздники, имеют право). И вот неделю назад китайцы наконец-то вышли с каникул, что-то докрутили, у меня рабочий аккаунт, но Гугл в упор не разрешает рекламировать бесплатное ПО (ныл об этом здесь t.me/...)). И вот вчера заявление на Free Software приняли, и кампания внезапно стартанула. Стартанула с ветерком: я забыл ограничить дневной бюджет, и Гугл радостно сожрал $100. Но есть и победа — случилась первая подписка на Photo Math t.me/...598 за $10! Правда, самое интересное ждало под капотом. У меня купили подписку на абсолютно мёртвый продукт. Там протух SSL-сертификат и отвалился API-ключ к LLM. Я планировал проверять работоспособность перед тем, как включить рекламу. Ага, проверил. Пришлось в мыле всё чинить на лету, пока клиент не понял, что заплатил за воздух (вроде пронесло, рефанд не попросил). Итог: сейчас всё работает, метрики докручены. А чтобы больше никогда не продавать лежачий прод, я наконец-то прикрутил Sentry в edge-функции Supabase. Теперь о том, что всё сломалось, я буду узнавать из логов, а не от заплативших пользователей.
3 недели назад
Cursor — это не чат в IDE
Я бекенд‑разработчик. И я с помощью Cursor собрал расширение для браузера: Speech‑to‑Text и Extract Text from Picture. До этого я честно пытался делать то же самое в чатах OpenAI / Grok / DeepSeek. Сценарий всегда один: контекст расползается, требования приходится повторять, а иногда чат просто зависает — и я делаю всё заново. После этого я перестал относиться к LLM как к переписке и начал относиться как к рабочему месту: проект + файлы + правила + Git. Мне не нужен «идеальный промпт». Мне нужен процесс, который не убивает мой день, когда модель поехала не туда...
1 месяц назад
В 3 ночи мой бот уверенно перепутал «колики» и «голод». Я всё равно его выпустил — и вот почему
Я сделал Telegram-бота, который по короткому фрагменту детского плача (в MVP беру 5 секунд) пытается угадать причину из 6 классов и быстро вернуть ответ. Это не диагностика: бот может ошибаться, а шум и контекст ломают предсказание сильнее, чем хочется.​ Сейчас бот возвращает один наиболее вероятный класс: Честная оговорка: в реальности причины могут накладываться, а некоторые классы пересекаются по смыслу (например, «колики» vs «боль в животике»), поэтому это классификация по разметке, а не “понимание ребёнка”...
1 месяц назад
А ты доверяешь своему проекту? Для Cursor или любого другого VSCode‑форка есть ненулевая вероятность, что при открытии чужой репы IDE тихо запустит какие‑нибудь скрипты в фоне.​ Недавно наткнулся на историю: человек скачал репозиторий с автономным ИИ‑агентом "просто посмотреть код", открыл папку в Cursor и IDE сразу сама запустила какие‑то node‑скрипты в терминале. Без единого клика. Спасло его только то, что данные были зашифрованы, пароли в менеджере, а крипта в холодном кошельке.​ Откуда вообще берётся риск В классическом VSCode есть Workspace Trust — та самая модалка "доверяете ли вы этому воркспейсу?", от ответа зависит, можно ли запускать расширения и скрипты.​ Есть Tasks с режимом runOn: folderOpen, который позволяет запускать скрипты при открытии папки. Удобно для честной автоматизации и идеально для атаки.​ В чистом VSCode это завязано на trust. А вот в Cursor, по их же документации, workspace trust по умолчанию отключён и никакого лишнего вопроса вы просто не увидите.​ В результате злоумышленнику достаточно положить в репозиторий tasks, которые стартуют при открытии папки, и дождаться, пока кто‑то откроет эту репу в форке с выключенным trust. Node‑скрипт в таске имеет доступ к ОС, а дальше полёт фантазии, от телеметрии до кражи ключей.​ Что можно сделать прямо сейчас Минимальный чек‑лист: включить workspace trust; отключить автоматический запуск tasks.​ В settings JSON это две строки: "security.workspace.trust.enabled": true, "task.allowAutomaticTasks": "off" После того как прочитал эту историю, первым делом пошёл и проверил свои настройки IDE. Если такие практичные разборы про разработку, безопасность и реальные кейсы из проектов заходят — у себя в Telegram‑канале регулярно разбираю подобные штуки и показываю, как это влияет на живые продукты. Ссылка на канал.
2 месяца назад
Железо в ипотеку: почему разработчикам снова придётся считать память Друг недавно пошёл купить планку памяти на 16 ГБ и вернулся с ощущением, что железо скоро будут продавать в ипотеку. Он зацепился за простую мысль: оперативка есть везде — в компьютерах, телефонах, приставках, серверах. Если память дорожает, значит очень быстро подорожает всё остальное железо.​ Для разработчиков это неприятный звоночек. На мобилках и десктопах подход «и так сойдёт, железо вывезет» будет работать хуже: более дешёвые устройства, больше экономии на начинке — значит, снова придётся думать про оптимизации, вес приложений, количество абстракций и то, что реально нужно тащить в рантайм.​ На бэке привычное временное решение «завалим проблему железом» (которое по традиции становится постоянным) тоже перестаёт быть очевидным. Если память, GPU и виртуалки дорожают, то горизонт «давайте просто докинем ещё один инстанс» превращается в всё более дорогой вид спорта.​ С другой стороны, на всё это сверху уже наезжает волна сервисов и приложений на LLM, сделанных без особых мыслей про ресурсы. Если виртуалки и GPU подорожают, LLM‑API, скорее всего, тоже станут дороже, а значит, экономика части проектов, построенных по принципу «шлём всё в большую модель и не паримся», может просто перестать сходиться.​ Разработка в итоге снова превращается в честный анализ критериев: что считать локально, что кешировать, какую модель брать, что выкинуть, чтобы продукт вообще жил в плюс, а не работал в минус ради красивых демо.​ Вопрос к читателям: если железо и облака ещё подорожают, вы скорее пойдёте в жёсткую оптимизацию всего или просто заложите рост себестоимости в цену продукта? Если такие разборы интересны, в Telegram делюсь ещё и практикой: как считаю экономику своих фич и LLM‑штук на реальных проектах.
2 месяца назад
Старый пост Сэма Альтмана На днях в одном из чатиков случайно наткнулся на старый пост Сэма Альтмана и вот этотblog.samaltman.com/...ortt Ему тогда было 30, друг попросил поделиться жизненными советами и Сэм выкатил длинный список. С тех пор прошло уже больше 10 лет, а текст всё ещё звучит пугающе актуально. Особенно символично, что он попался мне прямо перед первой рабочей неделей года. Вот несколько мыслей, которые особенно зацепили. Во‑первых, люди.Семья, близкие друзья, партнёр — это не «потом», не «когда будет время». Горстка реально близких людей важнее сотен контактов. Созваниваться до ночи, не терять старые связи, быть рядом — банально, но именно это чаще всего откладываем первым делом. Во‑вторых, время.Жизнь — не черновик. Если что‑то токсичное — это можно и нужно убирать. Если что‑то радует — стоит делать этого больше, без чувства вины. Про работу и успех.Самое сложное — не «как работать эффективнее», а вообще понять, над чем стоит работать. Не стек, не количество часов, а вопрос: что действительно заслуживает нескольких лет жизни. Про деньги и свободу.Деньги сами по себе счастья не гарантируют, но дают свободу. И свобода — это когда ты не думаешь об аренде, а не когда можешь купить самолёт. Зарабатывать часто интереснее, чем тратить, но тратить на друзей, опыт, путешествия и экономию времени почти всегда нормальная идея. Про расходы.Держать личные траты низкими — это не про аскезу, а про количество доступных решений в будущем. Эта привычка реально открывает двери. Отдельно зацепила мысль про то, чтобы помогать незнакомым людям просто так. Без выгоды, без причины. Почему‑то именно такие вещи потом вспоминаются лучше всего. У Альтмана там ещё десятки пунктов — про риск, обучение, окружение, родителей. Вопрос к залу: с каким пунктом Альтмана вы вообще не согласны и почему? Если тема откликается и интересно больше практики про разработку, продукт и мой путь с проектом, я подробнее разбираю такие штуки у себя в Telegram‑канале
2 месяца назад
Метод шести шляп: как принять решение
Инди‑разработчик одновременно пишет код, рисует иконки, настраивает аналитику и считает, хватит ли выручки, чтобы дожить до следующего релиза. В голове при этом орут шесть голосов — от художника‑перфекциониста до паникёра, который шипит: «не лезь в серяк, всё сломаешь». Недавно я это сполна почувствовал, когда на финальной прямой запуска моего расширения для Chrome под Европу Google заблокировал рекламный кабинет — весь запуск был заточен под поисковый трафик, и в один момент канал просто исчез...
3 месяца назад
Как Cursor помог переписать браузерное расширение за 2 часа: опыт миграции на единый стек Последние пару недель занимаюсь унификацией технологического стека для всех своих pet-проектов и поделок. Цель — собрать единый тех-радар, чтобы не тратить время на переключение контекста между разными фреймворками и библиотеками. Мой стек Frontend: - React (без сюрпризов) - WXT (лучший фреймворк для браузерных расширений) - MUI (библиотека UI-компонентов под Material Design) - Netlify (бесплатный и надёжный хостинг) Backend: - Supabase (как Firebase, только лучше) - Yandex Cloud (serverless-контейнеры + S3-хранилища) Процесс На выходных добрался до Speech to Text — браузерного расширения для транскрипции аудио. Оно было написано на vanilla JS ещё в первых версиях, и каждое обновление превращалось в квест по поиску багов и зависимостей. С помощью Cursor (AI-ассистента для кода) переписал всё расширение за пару часов: Перенёс на WXT (фреймворк для Chrome Extensions) Заменил самописные компоненты на MUI Добавил TypeScript для типобезопасности Заодно запилил новую фичу: транскрипцию системного звука через Chrome Tab Capture API Что получилось Теперь Speech to Text может расшифровывать не только микрофон, но и всё, что играет на компьютере: YouTube-видео, Zoom-созвоны, лекции, подкасты и т.д. Дополнительно добавил: Аудиоплеер для предпросмотра файла перед отправкой Анонимную расшифровку по прямой ссылке на аудио Бонус Модерация в Chrome Web Store прошла за 2 часа (обычно было 8-12). Предполагаю, что регулярные релизы дают "репутацию" у алгоритмов Google. Выводы Унификация стека — это не просто модное слово, а реальная экономия времени. Теперь могу быстро переключаться между проектами и переиспользовать компоненты без головной боли. Хотите больше деталей? Про процесс унификации стека, выбор инструментов и другие эксперименты с расширениями пишу в своём Telegram-канале @debug_leg. Там более неформальный формат: короткие посты, скриншоты процесса и честные истории про грабли. Подписывайтесь, если интересна кухня разработки.
3 месяца назад
Диванная аналитика
Аналитика — один из ключевых инструментов в управлении современными цифровыми продуктами. Без данных о поведении пользователей невозможно понять, кто и как взаимодействует с вашим сайтом, приложением или сервисом, какие страницы работают эффективно, где пользователи теряются и почему падают конверсии. Аналитика помогает отслеживать рост, вовремя замечать проблемы, принимать решения на основе фактов и улучшать продукт так, чтобы он действительно работал лучше. Однако всё чаще компании сталкиваются с тем, что популярные трекеры вроде Google Analytics или Яндекс...
4 месяца назад