Обновить
16K+
3
Женя@evgeny1709

Пользователь

3,2
Рейтинг
7
Подписчики
Отправить сообщение

Я несколько месяцев искал идеальный «бабушкофон» , куда можно поставить Telegram, приложение из трех букв и аутентификаторы. Спойлер: покупать ничего не пришлось.

Сейчас мой сетап состоит из двух девайсов. Первый - iPhone 13 mini (основная звонилка и аутентификаторы). Второй - Android (рабочие/развлекательные чаты и банки). Но внимание всё равно постоянно утекает.

Я загорелся идеей купить кнопочный телефон, чтобы свести экранное время к минимуму. Но кнопочник с Android — это костыль. Телегу туда поставить сложно, затащить приложение из трех букв для обхода блокировок — тот еще квест. Да и совсем без смарта обойтись нереально, потому что есть жесткие ограничения:
💬 Telegram: для личной коммуникации.
🔐 Аутентификаторы: без них просто не пускает в корпоративную сеть на работе.
📷 Камера: отсканировать QR-код или сфоткать документ.
🚇 База в дороге: иногда нужно открыть банковское приложение в метро или построить маршрут в навигаторе.

Таскать с собой третий девайс в виде тупой звонилки - карманы не резиновые.

Но кто ищет, тот всегда найдет. Оказалось, что в iOS есть встроенная киллер-фича — «Упрощённый доступ» (Assistive Access).

Суть в том, что интерфейс системы становится максимально примитивным, и тебе доступны только те приложения, которые ты сам выбрал.

Мой iPhone 13 mini буквально превратился в тот самый «бабушкофон». И работает это гениально: в него просто не хочется лишний раз залезать. Во-первых, там нет никаких отвлекающих аппок. Во-вторых, во всех приложениях снизу висит гигантская кнопка «НАЗАД». Она мешает юзать клавиатуру, делает интерфейс топорным и физически отбивает желание бездумно скроллить.

Кстати, идея для пет-проекта: сделать такой же хардкорный лаунчер для Android. В базовых настройках мой Pixel так не умеет — там всё равно остается слишком много лазеек.

А как вы боретесь с думскроллингом? Покупаете кнопочные звонилки, ставите лимиты экранного времени (которые потом сами же скипаете) или забили?

Дебаж 🐞с ноги 🦶

Теги:
+5
Комментарии4

Как я превратил open-source аналог NotebookLM в desktop-приложение для macOS

Недавно я рассказывал про хакатон, где мы пилили аналог NotebookLM для корпоратов (и, кстати, выиграли его). После этого мне захотелось принести эту идею домой.

Если вы вдруг пропустили этот хайп: NotebookLM - это гугловский сервис, куда ты закидываешь свои PDF, заметки или ссылки, и нейронка превращается в эксперта конкретно по твоим файлам. Можно чатиться со своими доками, вытягивать инсайты и даже генерить из сухих текстов аудио-подкасты. Надеюсь, кстати, что благодаря этой апке на Яндекс Музыке и VK теперь будут больше выпусками моих выпусков.

Open Notebook - это отличный open-source клон этой штуки. Это особенно актуально, учитывая, что с доступом к гугловскому оригиналу из РФ сейчас та ещё возня. К тому же мне хотелось забрать этот инструмент себе, чтобы скармливать доки локально и не сливать данные в чужие облака. (+ на русском не делает подкасты).

Но меня дико бесит, что сейчас для запуска полезного опенсорса нужно быть сеньор-девопсом и поднимать гирлянду из Docker-контейнеров.

Поэтому я психанул, форкнул Open Notebook и упаковал весь их web/Docker-зоопарк в одно нативное macOS-приложение. Цель была простая: скачал .dmg, перетащил в Applications, вставил API-ключ и всё работает.

Что под капотом и как это работает
Приложение полностью privacy-first. Документы, настройки и встроенная векторная база (SurrealDB) лежат локально на маке. Парсить можно PDF, аудио, видео, сайты, а AI-провайдера выбираешь сам: хоть OpenAI или Anthropic, хоть локальную Ollama.

Звучит просто, но скрестить это всё оказалось больно. Исходник: Next.js, FastAPI и фоновые воркеры на Python. Я завернул интерфейс в Electron, а Python-часть собрал через PyInstaller.

Самым большим челленджем стали PDF. Парсер Docling тянет за собой Torch и нейромодели, из-за чего билд приложения раздувался до неприличия. В итоге я разделил поставку: в базе идёт лёгкий воркер, а тяжёлый OCR-движок юзер скачивает прямо из настроек аппки только если он реально нужен.

Ну и отдельный кайф desktop-разработки: заставить Electron корректно убивать дочерние Python-процессы при закрытии окна, чтобы они не висели в памяти призраками.

Можно качать, щупать и форкать:
💻 Репозиторий: https://github.com/eryabyshev/open-notebook-app
📦
Релизы (.dmg): https://github.com/eryabyshev/open-notebook-app/releases

⭐️ Если вам зашла идея или просто хотите поддержать пет-проект - влепите звездочку репозиторию. Вам секунда, а мне лучшая мотивация пилить обновы дальше.

В планах на будущее: допилить сборки под Windows и Linux.

А пока у меня остался один незакрытый гештальт с macOS: сборка не подписана сертификатом Apple, поэтому при первом запуске мак ругается и просит разрешить аппку в Privacy & Security.

Дебаж 🐞с ноги 🦶

Теги:
+3
Комментарии1

Отцовская тревога

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

Цифры суровые: каждый третий бизнес признался, что вместо стажеров базовую рутину теперь делает ИИ. Это логично алгоритмы работают круглосуточно и не опаздывают по утрам.

В России тренд точно такой же. Вакансий для джунов стало на 40% меньше, чем два года назад. На одну стартовую позицию сейчас 19 резюме (против 2,5 на место сеньора). А до живого эйчара доходит в лучшем случае каждый десятый (остальных безжалостно отсеивает ИИ-фильтр еще до человека).

Я испытываю из-за этого сильную тревогу по двум причинам:

1)Вкатиться с нуля будет почти нереально. Устроиться начинающему специалисту становится настолько сложно, что нужно либо с пеленок готовить связи (а я этого не умею), либо делать IT семейным бизнесом, чтобы брать детей к себе на стажировку.

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

Чтобы вырастить сеньора, который спроектирует сложную архитектуру и возьмет на себя ответственность за продукт, ему нужно своими руками написать сотни базовых фич и набить шишки. А этой «песочницы» больше нет - её забрал ИИ. При этом нейросети пока не тянут задачи серьезных сеньоров. Получается ловушка: старые кадры уйдут, а новые просто не появятся, потому что им негде расти.

Лучший карьерный совет - это родиться на десять лет раньше. И как всегда с детьми: проще уже было.

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

Дебаж 🐞с ноги 🦶

Теги:
-1
Комментарии0

React-приложение и SEO: как я решил проблему индексации практически бесплатно

React-приложение и SEO: как я решил проблему индексации практически бесплатно

Сейчас у меня в активной разработке проект The Signal — это платформа с редакторскими новостями для снижения тревожности (как минимум у меня). Ниша «новости» сложная и высококонкурентная, поэтому тут критически важно, чтобы сайт хорошо индексировался поисковиками.

Но The Signal - это React-SPA (Single Page Application). Проблема SPA в том, что поисковые роботы (особенно Яндекс) плохо переваривают динамический JS-контент. Им подавай готовый HTML, иначе в поиск страница может просто не попасть или попадет криво.

Поднимать полноценный SSR (Server-Side Rendering) было долго, поэтому я нашел хак: индексировать статику на субдомене. То есть основное приложение живет своей жизнью, а статьи публикуются на дополнительный сайт-витрину, который уже легко съедается Google и Yandex.

Как сделать это за копейки
Я использую Yandex Cloud S3 (за хранение HTML и трафик поисковиков там набегают сущие рубли), но подойдет любой провайдер. Инструкция:

1) Создаем бакет и называем его как наш новый субдомен: у меня это digest.the-signal.ru.

2) В настройках бакета включаем «Веб-сайт хостинг».

3) Идем туда, где заводили домен, и создаем CNAME-запись: направляем digest.the-signal.ru на digest.the-signal.ru.website.yandexcloud.net.

4) Возвращаемся в Yandex Cloud, идем в Certificate Manager и добавляем бесплатный сертификат Let's Encrypt.

5) Подтверждаем права на домен. Для этого нужно положить специальный файл-ключ от Let's Encrypt в скрытую папку .well-known/acme-challenge/ в нашем бакете. Так сервис по урлу проверит, что домен ваш. Подробнее о том, как вообще работает валидация и подключение SSL (на примере Nginx), я писал в своей статье.

6) Переходим в настройки бакета -> Безопасность -> HTTPS и выбираем созданный сертификат.

7) Любыми мыслимыми и немыслимыми способами (руками, скриптами, CI/CD) закидываем сгенерированные HTML-странички в бакет.

8) Не забываем добавить sitemap.xml и robots.txt для поисковиков.

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

А вы как решаете индексацию для SPA? Накручиваете SSR, используете платные пререндеры или есть свои хаки? Делитесь в комментах 👇

Дебаж 🐞с ноги 🦶

Теги:
-1
Комментарии0

Мой опыт с Supabase: 8 неочевидных костылей, о которых молчат в красивых туториалах.

Все вокруг хвалят Supabase за скорость. И да, я тоже повелся. Как бэкендера меня поначалу знатно корежило от того, что фронт ходит тупо прямиком в базу. Но ради быстрой доставки фичей я зажмурился.

Спойлер: пилится-то всё реально быстро. Только потом ты ловишь тихие баги, пропадающие логи и жесткий вендор-лок. Я собрал на Supabase уже несколько проектов и успел поседеть.

Короче, вот за что вы будете страдать на бесплатном тарифе (да и не только на нем).

Логи. Их просто нет
Точнее, они живут ровно 24 часа. Упало что-то в пятницу вечеро - в понедельник с утра ты дебажишь святым духом. Встроенный поиск это вообще кровь из глаз. Без какого-нибудь Datadog или Logflare там тупо не выжить.

Edge-функции и проклятые холодные старты
Это отдельный котел. Писать надо на Deno, так что половина привычных npm-пакетов идет лесом. Лимиты на вызовы жесткие, долгую таску не запустить. Но самое бесячее — холодные старты. Пока поднимется пул коннектов к базе, проходит до трех секунд. В моем сервисе post-cooler.ru edge-функция отдает HTML для линк-страничек. Я смотрю в метрики и плачу: кликов куча, а дожидаются загрузки единицы. Конверсия просто умирает на этапе бесконечного лоадера.

Палево с доменами в OAuth
Юзер логинится через Google, а в окне авторизации торчит <project-id>.supabase.co. Я когда делал photo math, целый час дебажил эту хрень. Думал, что сам где-то накосячил — на локалке-то всё выглядело нормально! Оказалось, не баг, а фича. Хочешь свой домен? Плати.

Хаос со схемами БД
Экспорт схем из дашборда выпилили еще в 2025 году. Сейчас помогаю проекту the-signal переехать на селф-хост. До этого код там писали vibe-кодеры, которые вообще не парились про миграции. Вытащить дамп схемы из облака было той еще болью. Без жесткой дисциплины база очень быстро превращается в неуправляемую помойку.

Тормоза локальной разработки
Я постоянно прыгаю между проектами. И каждый гребаный раз supabase start лезет тянуть свежие Docker-образы. Поднимает 10+ контейнеров, а ты сидишь и тупишь в терминал. Весь кайф от "быстрой" разработки улетучивается.

Тихие RLS-ошибки
RLS (Row Level Security) ошибается молча. Накосячил в политиках? БД тебе не скажет. UPDATE просто вернет 0 affected rows, а SELECT подтянет половину данных.

Транзакции и боль SQL-функций
Через REST API нельзя сделать нормальную транзакцию на несколько таблиц. Нужно атомарно создать юзера, профиль и настройки? Обломись. У меня пока ничего не отвалилось, но я с ужасом жду, когда в базе начнут копиться "осиротевшие" записи.
Чтобы это обойти, приходится писать логику на PL/pgSQL прямо в базе. Редактор там примитивный, автокомплита толком нет и дебажить то еще удовольствие.

Вендор-лок
Клиентский SDK намертво завязан на специфичный синтаксис PostgREST и их собственные токены. Если однажды решишь переехать на нормальный самописный бэк: придется рефакторить вообще весь клиентский код.

Короче. Для MVP или пет-проекта, чтобы просто проверить гипотезу на коленке - это топ. Да, часть этих костылей можно вылечить, если закинуть денег и перейти на платную версию. Но возникает резонный вопрос: за те же 25 баксов в месяц можно спокойно поднять Supabase на нормальной VPS-ке и вообще забыть про лимиты.

Кто еще сидит на Supabase или Firebase? С чем боретесь? И есть тут те, кто уже психанул и переехал на свой бэк?

Дебаж 🐞с ноги 🦶

Теги:
-3
Комментарии1

Экономика ИИ-продуктов. Покупаешь подписку за $200, а сжигаешь серверного времени на $14 000.

Забавно, но сейчас OpenAI и Anthropic фактически оплачивают мне разработку пет-прожектов из своего кармана. Ребята из SemiAnalysis провели крутой стресс-тест: купили максимальные тарифы ChatGPT Pro и Claude Max (по $200 в месяц) и гоняли на них хардкорные агентурные таски, пока не уперлись в недельные лимиты. Потом они пересчитали потраченные токены по официальным API-прайсам. Оказалось, что из Claude Max за 200 баксов можно выжать лимитов на $8 000. А из ChatGPT Pro (20x) — на безумные $14 000.

Для меня это вообще не абстрактные цифры. Я постоянно юзаю агентов (в связке с тем же Cursor) и скармливаю им гигантские простыни кода. При таком подходе маржинальность OpenAI улетает в жесткий минус: они работают в убыток уже после того, как юзер тратит 5,7% от лимита. По сути, люди, которые за $20 генерят по три письма в день, спонсируют технарей вроде меня, выжимающих из моделей все соки.

Какой продуктовый вывод я делаю для себя?

Для честной работы по API надо искать аналоги у китайских друзей — те же DeepSeek или Qwen стоят копейки, а с кодом справляются отлично.

А вот для тяжелых локальных тасков, парсинга и агентов, пока эту дыру не прикрыли, выгоднее веб-подписки OpenAI/Anthropic (через эмуляцию или прокси), чем платить им за API.

А вы как гоняете нейронки для рабочих задач?

Дебаж 🐞с ноги 🦶

Теги:
Всего голосов 2: ↑0 и ↓2-2
Комментарии1

Я встроил браузер в браузер

Недавно писал, что вписался консультантом в проект Signal. Бекенд развернут на self-host Supabase. Мне дико не нравится работать с их логами, поэтому решил поднять VictoriaLogs + VictoriaMetrics и прикрутить Grafana как UI.

Вся эта связка живет на одной железке в докере. У такого конфига есть только одна огромная проблема это безопасность. Виктория из коробки вообще не идет ни с какой авторизацией. Обычно это не парит: засовываешь всё за VPN и забываешь. Но с 2025 года с VPN всё туго. Его надо постоянно поддерживать и оживлять, а времени на это нет.

Отсюда вопрос: как не светить Викторию голой в сеть, но при этом иметь доступ к админке, если вдруг что сломается?

Докер сам строит внутри себя сети, и контейнеры отлично общаются по адресам типа grafana:3000. Мой локальный браузер про эти внутренние адреса на VPS, конечно, ничего не знает. Но оказалось, что кто-то уже столкнулся с этой проблемой до меня и собрал докер-образ с Хромом (lscr.io/linuxserver/chromium).

Работает это так: на удаленной виртуалке поднимается браузер, к которому я подключаюсь из своего обычного браузера. Получается такой фрейм прямо в приватную сеть докера. Сидишь и вбиваешь в строку имена контейнеров. Естественно, сам веб-интерфейс этого Хрома надо закрыть паролем, иначе вся затея теряет смысл.

Штука прикольная. Можно даже срезать качество картинки и FPS, если инет тупит. Но есть боль с буфером обмена. Текст просто так не скопируешь, приходится пихать его в отдельное окошко. Плюс у меня Мак с cmd+c/v, а на сервере крутится линукс с ctrl и мозг при переключении немного ломается.

Как итог, костылем я доволен. Собрал себе админку без VPN, в которую буду залезать может раз в полгода, но зато без боли.

А как вы сейчас прячете внутренние тулзы на пет-проектах? Страдаете с ключами и туннелями или есть решения проще?

Дебаж 🐞с ноги 🦶

Теги:
Всего голосов 1: ↑0 и ↓1-1
Комментарии3

Почему нельзя просто взять и сделать отечественный процессор побольше?

Разработчики “Герои 3” как-то поделились лором: события игры вообще-то происходят в далеком будущем, а вся эта магия и расы - просто забытые технологии.

Я сидел, ковырял на коленке умную лампу и вдруг поймал себя на мысли: для меня-то эта магия давно наступила. Как кусок крепко сплющенного песка управляет сетями, серверами и вообще нашей жизнью?

Пока в этом копался, задался тупым, но честным вопросом. В России умеют делать процессоры, но сильно отстают по техпроцессу. Почему бы просто не сделать чип физически больше? Ну да, будет жрать электричество, но инженеры же могут это решить?

Чтобы понять, почему идея не рабочая, пришлось нырнуть в то, как песок вообще превращают в мозги для компа.

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

Размер кристалла нельзя раздувать просто так, тут сразу несколько причин.

Экономика и банальная пыль.

Блины на заводах не бывают идеально чистыми. Из одного блина выходит 500 мелких кристаллов, случайная пылинка запорет два-три. Брак копеечный. Но если резать огромные куски, их на блине поместится штук десять. Одна пылинка — минус 10% партии. А если их с десяток, весь блин летит в помойку. Себестоимость такого гиганта просто улетит в космос.

Синдром утюга.

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

Скорость света.

Тут мы тупо бьемся о фундаментальную физику. Чем больше кристалл, тем дольше сигнал идет от одного края до другого. В огромном процессоре ток просто не успеет пробежать это расстояние за один такт.

Ладно, если делать один кирпич бессмысленно, почему не воткнуть в материнку два обычных процессора?

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

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

Я подумал: блин, для наших процессоров это же идеальный путь!

А потом уткнулся в реальность. Чиплеты круто работают, когда ты можешь печатать их мелкими. А у нас заводы вроде “Микрона” уперлись в 65–90 нанометров. Тайваньская TSMC, которая печатала сложную мелочь, маршрут закрыла из-за санкций.

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

Кто шарит за железо - как думаете, у нас есть шанс выехать на архитектурных фокусах типа чиплетов? Или без доступа к современным заводам мы так и будем вечно догонять? Залетайте в комменты дебажить.

Дебаж 🐞с ноги 🦶

Теги:
Всего голосов 9: ↑5 и ↓4+2
Комментарии21

Чем заменить Cursor на корпоративном ноуте

Последнюю неделю я пытаюсь выжить, совмещая основную работу с хакатоном. По идее, вывозить такую двойную нагрузку должен помогать spec-кодинг. Обычно для этого я просто открываю Cursor, но на работе его юзать нельзя (секьюрность), запрет на отправку кода во внешние API и всё такое. А писать всё руками после ИИ-ассистентов уже физически больно.

Пошел искать open-source альтернативы, чтобы можно было секьюрно spec-кодить через локальные и корпоративные LLM. Эксперименты с KiloCode с треском провалились, ну не нравится он мне. В итоге обновил стек на рабочем Маке и собрал такой сетап:

1️⃣ IDE Void - форк VS Code. Накатил туда все Java/Kotlin аддоны, подрубил MCP Atlassian, и теперь Qwen3-Coder-480B пытается писать код за меня. Как генератор - 🔥 . Правда, с Kotlin у LLM всё ещё не так гладко, как с Python или JS, поэтому генерирую я в Void, а ревьюить и дебажить всё равно ухожу в родную IDEA.

2️⃣ browserOs - форк Chromium со встроенным ИИ-чатом (аналог Comet от Perplexity, но работает с любыми LLM по API). Продукт местами сыроват, но главная фича реализована достойно. Самая большая боль - это дебильный рыжий логотип с собакой. Мой мозг отказывается ассоциировать это с браузером, и при переключении через Cmd+Tab я вечно не могу его найти.

Забавно, что на самом хакатоне я сейчас пилю инструмент, который решает похожие корпоративные боли enterprise-аналог NotebookLM. Суть простая: закидываешь в диалог с корпоративной LLM ссылки на внутреннюю Jira, Confluence или TestOps, а ИИ всё это переваривает и помогает по работе. Дали доступ к мощным моделям типа нового DeepSeek-V4, и результаты прям огонь.

И вот смотрю я на свой новый рабочий сетап и понимаю: апка, которую я делаю на хакатоне, идеально ложится в этот локально-корпоративный стек. Особенно если упаковать её в десктоп.

А может вообще вкатиться с ней в свой первый open-source?

Дебаж 🐞с ноги 🦶

Теги:
Всего голосов 4: ↑1 и ↓3-2
Комментарии0

Google снёс моё расширение за спам ❌

Захотел установить свой же Extract Text From Picture, иду в поиск (из прикольного: по запросу я на первой странице Google!), кликаю по ссылке, а там: This item is not available.

Пошел проверять почту. Chrome Web Store действительно прислал “письмо счастья”: удалили за нарушение политики Spam and Placement in the Store.

Пошел искать правду по чатикам разработчиков и выяснил, что проблема массовая. Походу, Google выкатил новый алгоритм модерации, который жестко триггерится на количество локализаций. А у меня их было аж 52 (привет, ASO-оптимизация).

Что буду делать дальше? Из хорошего: тип реджекта yellow 🟡. Это значит, что бан не перманентный, а предупреждающий, и проект можно спасти. План такой: временно дропаю все 51 перевод, оставляю только английский язык и отправляю на повторную модерацию. Посмотрим, как быстро пропустят.

Дебаж 🐞с ноги 🦶

Теги:
Всего голосов 2: ↑2 и ↓0+2
Комментарии1

Прокрустово ложе

В недавнем видосе я рассказывал, что сейчас читаю Талеба (в частности, его идеи вокруг “Антихрупкости”). И вот на днях на работе поймал идеальный личный пример одной из его любимых метафор Прокрустова ложа.

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

А теперь к практике. Как говорят таксисты: блог и инди-хакинг - это для души, а вообще у меня и настоящая работа есть. Я бэкенд-лид в команде, которая пилит платформу для масс-найма (курьеры, сборщики).

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

А дальше классика: 20% эйчаров закрывают 80% вакансий. И тут возникает моя самая наивная мысль: ну так давайте пилить фичи специально под этих топов!

Но тут кроется засада. Выясняется, что процессы самых эффективных ребят очень сложно загнать в рамки. У них свои паттерны, подходы, интуиция. И когда пытаемся натянуть на них стандартный флоу, мы строим для них то самое Прокрустово ложе. Пытаясь впихнуть нестандартного, сильного спеца в удобные для системы формочки, мы буквально “отрубаем ему ноги”. Мы заставляем его работать “как положено”, лишая тех самых фишек, которые и делали его звездой.

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

Как наброс на будущее: возможно, дальше мы придем к персональной автоматизации. Когда не человек подстраивается под приложение, а интерфейсы собираются под конкретного спеца и его стиль работы. Грубо говоря: когда мы научимся с помощью ИИ на лету менять размер кровати, а не рубить людям ноги.

Дебаж 🐞с ноги 🦶

Теги:
Всего голосов 4: ↑2 и ↓20
Комментарии1

Я решил собрать гаджет от головной боли

Знаете это чувство, когда всё вроде делаешь правильно: спишь по 8 часов, пьёшь воду, ходишь норму шагов, пульс как у космонавта, а голова к вечеру всё равно гудит и глаза устают?

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

Решил сделать полезную штуку лично для себя: затрекать рабочее место. Форм-фактор: умная настольная лампа.

План на MVP такой: Следим за CO2, влажностью, температурой и освещённостью. Плюс добавил напоминалку поморгать (звучит смешно, но я в фокусе реально перестаю это делать).

И самое спорное это трекать магнитные поля и радиочастоты. Включаю режим конспиролога: а вдруг мои Bluetooth-наушники незаметно варят мне мозг излучением? Наука, конечно, крутит пальцем у виска и говорит, что всё ок, но я хочу собрать свои данные. Надо же либо окончательно успокоиться, либо идти клеить шапочку из фольги.

Рулить железом будет ESP32-S3 дешёвая и холодная, в отличие от Raspberry Pi. А вот думать будет отдельный сервер с языковой моделью. Шутки про «ИИ везде» принимаются, но мне реально нужно, чтобы железка просто говорила по-человечески: «душно - открой окно», а не заставляла меня вчитываться в дашборды.

Детальки заказаны, скоро буду собирать прототип.

Дебаж 🐞с ноги 🦶

Теги:
Рейтинг0
Комментарии3

За последние пару недель в Кулере появилось много всего: счётчики переходов по ссылкам из постов, генератор коротких ссылок, даже страничка-визитка - вот моя: cooler.debug-leg.ru/my-link/debug-leg

Но главного: кросспостинга в VK с фото до сих пор нет. И вот почему.

Я думал, это будет просто. Создал API-ключ в группе VK, дал ему права на стену, фото, файлы, потом попросил ИИ написать код. Первая публикация прошла. Текст лёг на стену как надо. Добавил фото и сразу ошибка:

error_code: 27 — Group authorization failed: method is unavailable with group auth.

Окей. Гуглю. Оказывается, для загрузки фото нужен пользовательский токен, а не токен сообщества. Иду за ним. Получаю:

error_code: 15 — Access denied: no access to call this method with current scopes.

Расширенные права? Пишу на devsupport@corp.vk.com. Ответ:

Из-за изменения политики дистрибуции API-методов расширенные API-доступы больше не выдаются.

Кольцо замкнулось. Токен сообщества - нельзя. Пользовательский токен - нельзя. Расширенные права - не дают.

Я пока не понимаю: это я что-то упускаю, или VK тихо закрыл эту возможность и просто не обновил документацию?

Кто-нибудь встречался с VK API и получал что-то кроме боли? 👇

Теги:
Рейтинг0
Комментарии0

ChatGPT на собесе: инструкция по провалу

На прошлой неделе провёл два техсобеса на Kotlin-разработчика и в очередной раз словил абсолютный кринж: кандидаты пытаются проходить интервью с ChatGPT, и делают это максимально тупо.

Почему-то люди думают, что если они не шарят экран, то собеседующий ничего не замечает. Но вот как выглядит этот «стелс» на практике:

*️⃣ Стук клавиш. Я задаю вопрос, человек задумчиво молчит, зато в микрофон радостно начинает лупить механическая клавиатура. Напокупали себе кастомных механик с громкими свитчами, а теперь палятся на первом же промпте.

*️⃣ Светомузыка на лице. Кандидат сидит в полутёмной комнате, и ровно после моего вопроса его лицо внезапно озаряется белым светом - открылась спасительная вкладка браузера.

*️⃣ Бегающий взгляд. Прямо на камере видно, как глаза двигаются влево-вправо, считывая строчки сгенерированного текста.

Как выглядит сам диалог с таким «киборгом»?

Например, прошу объяснить, что такое ACID. Кандидат сначала зависает на 5–7 секунд. Мнётся, выдаёт невнятное мычание в духе «ну… это короче про базы данных и надежность».

А потом в него вселяется Википедия. Он внезапным дикторским голосом начинает чеканить:

ACID — это Atomicity, Consistency, Isolation, Durability…

и выдает все расшифровки книжным языком. Переход от “не могу связать два слова” к “я лектор по базам данных” занимает ровно одну загрузку ответа.

И это не моя личная паранойя. В Huntflow я всё чаще вижу в карточках от других интервьюеров пометки: “кажется, использует ИИ”, “вероятно, зачитывает ответы с экрана”.

Как я на это реагирую в моменте? Не рублю с плеча и не устраиваю сцен. Сначала даю шанс, пытаюсь помочь наводящими вопросами. Но когда понимаю, что человек на том конце провода не рассуждает, а просто работает кожаным интерфейсом между мной и LLM,  я перестаю его вытаскивать. Просто прогоняю по оставшимся вопросам в x2 скорости и сворачиваю звонок.

Знаете, в чём главная ирония? Я вообще не из лагеря морализаторов: обманул на собесе - в ад.

Если ты как-то схитрил, прошёл собес, а потом вывез испытательный срок и нормально тащишь задачи - да тока вперед. Важно то, как ты работаешь, а не как попал в компанию. Разраба в бою проверить очень легко.

Кринж в другом. Взрослые инженеры ведут себя как напуганные школьники, неумело списывающие у доски. Собеседование — это не экзамен, это попытка найти себе адекватного коллегу. А по итогу получается просто трата времени.

Дебаж 🐞с ноги в TG, VK и Дзен

Теги:
Всего голосов 2: ↑2 и ↓0+4
Комментарии24

Как я сжег $60 в Cursor за 3 дня и понял, что флагманские LLM - это оверпрайс для рутины

Сейчас я с головой погружен в разработку Кулера. И на днях впервые уперся в лимит подписки Cursor Pro. Закинул еще $20, потом еще $20 и всё это меньше чем за три дня. Спойлер: эти деньги сгорели всего на половине фичи (сокращатель ссылок + счетчик переходов).

Я сидел на Claude Sonnet 4.6 и пробовал Opus 4.7. И вот на какой задаче до меня дошло, что я делаю какую-то херню.

Мой стек это React + Supabase. Прошу Opus сгенерить логику, а эта нейросеть за $25/1M токенов на серьезных щах пишет код, который тянет из базы все посты сразу, забив на батчи и даты публикации.

И тут пазл сложился. Флагманские модели - это эксперты во всём. Opus 4.7 шарит в молекулярной биологии и может написать эссе про пирамиды Хеопса. Но когда мне нужно накидать очередную формочку, я переплачиваю за всю эту мировую эрудицию, стреляя из пушки по воробьям.

Если мне всё равно нужно давать детальные инструкции и бить ИИ по рукам за детские архитектурные косяки, зачем платить х10? Встроенный Composer 2 (где токен стоит $2.50) при нормальном входном контексте отлично генерит базовый код.

В итоге я вывел для себя такой воркфлоу, чтобы соблюдать баланс цены и качества:

1️⃣ Базовая разработка (формочки, CRUD, бойлерплейт) - по умолчанию сижу на легком Composer 2.

2️⃣ Проектирование и архитектура - иду обсуждать в Perplexity.

3️⃣ Реально сложная логика - переключаю ручками на что-то от Antropic, опираясь на чутье разработчика.

P.S. Перечитал сейчас свой текст. Звучу как динозавр из мира C++, который хейтит Python и ворчит про лишние слои абстракции и оптимизацию.

Теги:
Всего голосов 6: ↑2 и ↓40
Комментарии1

Чебурнет или как перестать хоронить мир и начать пилить продукт

Последние две недели я тупо смотрел в IDE и не мог написать ни строчки. Пока Cursor пытался генерить за меня код, я думскроллил новости про чебурнет, листал вакансии на HH и всерьез думал, а не уехать ли в Минск.

В какой-то момент понял: всё, стоп, приехали. Я пробил дно продуктивности. Такое состояние у меня уже бывало пару раз, так что алгоритм выхода из пике мне знаком. Решил вырубать тревожность радикально.

Вот мой стек по борьбе с кукухой за последние 5 дней:

1️⃣ Жёсткий инфодетокс

Отписался вообще от всех новостных каналов в Телеге. ФотоГрам и YouTube у меня и так физически лежат на другом телефоне, так что там залипать не выходило.

2️⃣ Пережил ломку по новостям

Самым сложным было перестать рефлекторно хватать телефон каждые 15 минут, чтобы проверить, не начался ли апокалипсис. Договорился с собой: если случится что-то реально важное, я всё равно об этом узнаю либо на утреннем дейлике, либо из очередного мемаса.

3️⃣ Физика

Урезал кофе (совсем исключить пока не вышло) и начал гулять по утрам перед работой. Строго без наушников, музыки и подкастов: просто чтобы проветрить голову.

Итог:

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

Теги:
Всего голосов 4: ↑2 и ↓20
Комментарии0

Cursor — это не чат в IDE

Я бекенд‑разработчик.
И я с помощью Cursor собрал расширение для браузера: Speech‑to‑Text и Extract Text from Picture.

До этого я честно пытался делать то же самое в чатах OpenAI / Grok / DeepSeek.
Сценарий всегда один: контекст расползается, требования приходится повторять, а иногда чат просто зависает — и я делаю всё заново.

После этого я перестал относиться к LLM как к переписке и начал относиться как к рабочему месту: проект + файлы + правила + Git.

Мой принцип

Мне не нужен «идеальный промпт».
Мне нужен процесс, который не убивает мой день, когда модель поехала не туда.

С чего начать (мой чеклист)

Это реально можно собрать за вечер.

I. Intro

II. Rules: сделай «рамки» работы

Я не могу отдать свои правила (там много личного/проектного), но логика простая: rules — это договор, как Cursor работает в моём репо.​

Мой минимум, который почти всегда даёт буст:

  • Перед ответом смотри /README.md и /docs/.

  • Если не хватает данных — задай до 3 вопросов и только потом действуй.

  • Любые правки кода — маленькими порциями; после шага пиши, какие файлы изменил.

  • Если задача большая — сначала Plan, потом Agent.

Если лень писать с нуля — я иногда беру за основу готовые developer rules и допиливаю под себя:

Хак: rules можно дописывать прямо по ходу работы — я часто прошу агента «сформулируй правило, чтобы мы больше так не делали», и добавляю его в проект.

III. Положи «источники правды» в репу

Тут мой единственный принцип: всё, что я устал повторять — я выношу в файлы.

Пример структуры, которую я делаю для большинства задач:

project/
  README.md
  docs/
    business-requirements.md
    tech-spec.md
    decisions.md
  src/
  research/

README.md — одна страница «что строю и зачем».
docs/ — требования и решения (чтобы не хранить их в голове и в чате).

IV. Режимы: я не жму Agent сразу

Я использую три режима:

  • Ask — когда хочу разобраться/проверить идею и ничего не ломать.​

  • Plan — когда задача больше пары часов: сначала план и вопросы.​

  • Agent — когда план ок: он уже правит файлы и двигает задачу.​

И два хака, которые у меня реально помогают:

  • Хак 1: я спрашиваю у самого агента в Cursor, какую модель лучше взять под мою задачу.

  • Хак 2: я стараюсь не использовать авто-режим — автоматически Cursor часто подбирает модель неудачно.

V. Бизнес‑дока → Tech Spec

Я не начинаю с “какой стек лучше”.

У меня уже есть привычный стек (я писал про него тут), и мой первый вопрос к Cursor другой: могу ли я остаться на нём под эти бизнес‑требования или мне придётся делать иначе (и почему).​

Дальше я делаю так:

  1. Пишу бизнес‑требования простыми буллетами в /docs/business-requirements.md.

  2. Прошу Cursor собрать Tech Spec: API + архитектура + риски + edge cases.

  3. И только потом иду в код.

Пример (упрощённо, мой кейс с промокодами):

  • Пользователь присылает сообщение с промокодом.

  • Промокод валиден, если: сейчас в диапазоне date_from..date_to и пользователь ещё не использовал его.

  • Если валиден — отправляю ответ: текст/фото (если есть) + кнопки с доступными подписками.

  • В момент покупки я обязан ещё раз проверить, что промокод активен.

  • После покупки подписки типа PROMO_CODES помечаю промокод использованным.

Где Cursor меня подставлял (и что я делаю)

Главный минус: LLM плохо исправляют ошибки, если уже “врубились” в неправильную реализацию.

Поэтому у меня репозиторий всегда под Git (или я работаю с включённой системой контроля версий).

  • Каждая фича — отдельный коммит (или ветка, если страшно).

  • Если вижу, что оно поехало не туда и прогресса нет — откат и делаю заново, но с более точными вводными/планом.

На этом всё.
Я показал подход, который у меня прижился: собрать в Cursor нормальное рабочее место, где ИИ работает “по проекту”, а не “по настроению”.

Если тема заходит — я регулярно пишу про инди‑разработку и свои эксперименты в ТГ: https://t.me/debug_leg

Теги:
Всего голосов 3: ↑1 и ↓2-1
Комментарии0

А ты доверяешь своему проекту?

Для 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: ↑2 и ↓0+2
Комментарии0

Железо в ипотеку: почему разработчикам снова придётся считать память⁠

Друг недавно пошёл купить планку памяти на 16 ГБ и вернулся с ощущением, что железо скоро будут продавать в ипотеку.

Он зацепился за простую мысль: оперативка есть везде — в компьютерах, телефонах, приставках, серверах. Если память дорожает, значит очень быстро подорожает всё остальное железо.

Для разработчиков это неприятный звоночек. На мобилках и десктопах подход «и так сойдёт, железо вывезет» будет работать хуже: более дешёвые устройства, больше экономии на начинке — значит, снова придётся думать про оптимизации, вес приложений, количество абстракций и то, что реально нужно тащить в рантайм.

На бэке привычное временное решение «завалим проблему железом» (которое по традиции становится постоянным) тоже перестаёт быть очевидным. Если память, GPU и виртуалки дорожают, то горизонт «давайте просто докинем ещё один инстанс» превращается в всё более дорогой вид спорта.

С другой стороны, на всё это сверху уже наезжает волна сервисов и приложений на LLM, сделанных без особых мыслей про ресурсы. Если виртуалки и GPU подорожают, LLM‑API, скорее всего, тоже станут дороже, а значит, экономика части проектов, построенных по принципу «шлём всё в большую модель и не паримся», может просто перестать сходиться.

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

Вопрос к читателям: если железо и облака ещё подорожают, вы скорее пойдёте в жёсткую оптимизацию всего или просто заложите рост себестоимости в цену продукта?

Если такие разборы интересны, в Telegram делюсь ещё и практикой: как считаю экономику своих фич и LLM‑штук на реальных проектах.

Теги:
Всего голосов 1: ↑1 и ↓0+1
Комментарии11

Как 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

Что получилось - https://chromewebstore.google.com/detail/speech-to-text/jolafoahioipbnbjpcfjfgfiililnoih

Теперь Speech to Text может расшифровывать не только микрофон, но и всё, что играет на компьютере: YouTube-видео, Zoom-созвоны, лекции, подкасты и т.д.

Дополнительно добавил:

  • Аудиоплеер для предпросмотра файла перед отправкой

  • Анонимную расшифровку по прямой ссылке на аудио

Бонус

Модерация в Chrome Web Store прошла за 2 часа (обычно было 8-12). Предполагаю, что регулярные релизы дают "репутацию" у алгоритмов Google.

Выводы

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

Хотите больше деталей?
Про процесс унификации стека, выбор инструментов и другие эксперименты с расширениями пишу в своём Telegram-канале @debug_leg. Там более неформальный формат: короткие посты, скриншоты процесса и честные истории про грабли. Подписывайтесь, если интересна кухня разработки.

Теги:
Всего голосов 1: ↑0 и ↓1-1
Комментарии0
1

Информация

В рейтинге
1 552-й
Зарегистрирован
Активность