Настройка рабочего места для агентной разработки на базе OpenCode, Oh My OpenCode и OpenSpec: независимость от провайдера, управление агентами и субагентами, роль спецификаций в рабочем процессе.
Читать далееЭпик на несколько тысяч лет истории — от аквапанка бронзового века до времён, приближающихся к цивилизации третьего типа по Кардашёву. Технологический спидран во всей его красе. Но, как и в игровом прохождении, периодически находятся лучшие методы, так и некоторые технологии оказываются недостаточно хороши для нужной скорости истории.
Вот одна из них.
Для Марса и пояса Койпера одним из немногих традиционных вариантов остаётся пока еще ожидаемая термоядерная энергетика. Луна и Меркурий получают огромное количество солнечной энергии. На Венере потенциально можно использовать ветряки для плотной атмосферы. Марс в отношении энергетики заметно хуже. Солнечный свет слабее и страдает от пыли, а ветряк при разреженной атмосфере не эффективен.
Описанную здесь импульсную термоядерную схему я придумывал для энергоснабжения Цереры. Точных аналогичных схем электростанций при поверхностном поиске я не нашел, так что возможна новизна.
Читать далееКлассический мониторинг отвечает на вопрос «что сломалось»: метрики показывают рост CPU, логи — стек ошибок, трейсы — медленный сервис. Но когда нужно ответить «почему именно этот сервис стал медленным», почти все инструменты пасуют. Вы видите, что контейнер потребляет 2 ядра CPU, но не видите, какая строка кода их загружает.
Coroot — open-source observability-платформа, которая из метрик, логов и трейсов делает выводы о том, что чинить. Её ключевая особенность — непрерывное профилирование без изменений кода: eBPF-профилировщик снимает CPU-профили всех процессов на ноде, а языковые профилировщики (Go, Java) добавляют память и блокировки. В результате флеймграф показывает нагрузку до точной строки кода, а предустановленные инспекции находят типовые проблемы — утечки памяти, лишние аллокации, блокировки.
Coroot ставится в любой Kubernetes-кластер. В этой статье мы развернём Coroot через официальный coroot-operator (Community Edition), а затем задеплоим четыре намеренно «сломанных» приложения — на Nuxt (Node.js), Python, Go и Java — и посмотрим, как их проблемы всплывают в профилировании.
Читать далееDHH за год прошёл от страха потерять навык из-за AI до отказа писать код руками. Почему разворот одного инженера меняет то, какие инструменты другие считают допустимыми, и где заканчивается применимость его опыта.
Читать далееМы собрали команду энтузиастов и за месяц сделали MVP площадки для проверки IT-идей. Казалось, что самое сложное позади. Но после запуска выяснилось, что написать продукт намного проще, чем собрать вокруг него живое сообщество. Рассказываю, где мы ошиблись с командой, процессами и первыми ожиданиями.
Читать далееПовторить анимацию складного iPhone на Samsung уже успели в эффектных демках. Но что потребуется, чтобы переход работал поверх открытого приложения, переживал блокировку и следующее складывание? На своём Fold 8 я разбирался, почему датчик присылает свежие ответы с застывшим углом, зачем включённому экрану ещё нужна картинка и как неудачный перенос одного приложения может сломать следующий переход в новом приложении.
Читать далееСамые интересные новости финансов и технологий в России и мире за две недели: Минфин предложил поднять налоги на инвестиционные доходы, Трамп подписал закон об «адских санкциях», ФРС опять начала поднимать ставку, Anthropic и OpenAI выпустили новые модели, рои OpenAI-агентов продолжают хулиганить, Google готовится отправить свои TPU в космос, а Figure учит роботов работать в незнакомых домах.
Читать далееВ салонах услуг — парикмахерских, груминге, маникюре — есть наблюдение, которое все считают очевидным. Новый мастер первые месяцы работает меньше остальных, и объясняют это одинаково: у него нет своей клиентской базы, а у коллег есть.
Объяснение выглядит самоочевидным ровно до того момента, когда его пробуешь воспроизвести. Я собрал простую модель, ожидал увидеть в ней этот разрыв — и не увидел вовсе. Разрыв появился только после того, как я поменял одно правило, которое к базе отношения не имеет.
Дальше — модель целиком, код, числа и вывод, который меня самого удивил.
Читать далееВ этом учебном году мне потребовалось подготовить лабораторные работы по дисциплине «Криптографические протоколы». Самый очевидный вариант практической работы – дать студентам Python и предложить что-нибудь зашифровать: сгенерировать ключ, вызвать AES-GCM из библиотеки, получить ciphertext, затем расшифровать его обратно.
Полезно, но мне хотелось немного другого. Когда мы изучаем криптографический протокол, гораздо интереснее не просто увидеть:
encrypt() → decrypt()
а поставить между отправителем и получателем активного нарушителя и посмотреть, что произойдёт.
Что видит атакующий в зашифрованном пакете? Что будет, если изменить ciphertext? Можно ли повторить старый, но совершенно корректный пакет? Что произойдёт при повторном использовании nonce? Как поведёт себя система после отзыва ключа?
Из этих вопросов постепенно появился CryptoLab – учебный стенд, который я сейчас развиваю параллельно с преподаванием курса.
В этой статье расскажу о том, как устроена первая лабораторная работа, какие задачи я пытался решить при её разработке и покажу два наиболее характерных эксперимента.
Читать далееПопробуем представить ситуацию: очередной человек за очередные два вечера написал с помощью очередного ИИ очередной магазин, пусть будет магазин кормов для кошек. Магазин работает, человек счастлив, новая эра разработки наступила. Теперь остается дело за малым - посмотреть, как оно вообще будет работать, что произойдет после того как автор решит в нем что-то поменять. И здорово было бы, чтобы к тому моменту, когда после добавления скидки пропадёт самовывоз - автор ещё не закончил рассказывать, сколько программистов больше не понадобится. При этом сам инструмент действительно годный. И желание попробовать его вообще везде вполне понятно: интересно же, что ещё получится. Опять же, нередко возникает момент, когда человек ещё не закончил пробовать, но уже начал делать делать далеко идущие прогнозы. Получается как с автополивом - вода из шланга течет, помидоры растут, при чем - сами. Только между "я настроил автополив" и "агрономы больше не нужны" всё-таки есть некоторая разница. И как будто бы, она не настолько неуловима.
Читать далееУтро четверга. Вы открываете таск-трекер, а там тикет от сканера зависимостей: «jackson-databind, CVE-2026-83557, критично, патчить». Ссылка на GitHub-бюллетень, CVSS, слово «полиморфная десериализация», и через двадцать минут у вас уже согласован hotfix на прод в пятницу в 18:00.
Читать далееЯ написал source generator для лексера HydraScript. Он собирал регулярное выражение из описаний токенов. После этого мне оставалось скопировать регулярку и руками вставить её в другой файл.
Даже тест на забытое копирование пришлось завести. Довольно много усилий, чтобы поддерживать одну строку в актуальном состоянии.
Проблема была в том, что результат моего генератора требовался другому генератору — тому, который стоит за атрибутом [GeneratedRegex] в .NET. Хотелось описать токен один раз и поручить остальное сборке. Для этого пришлось разобраться, в каком порядке Roslyn вообще выполняет генераторы.
Читать далееХочу посвятить эту статью погружению в разные возможности обновления данных в JS и React, раскрыв это на примере своей библиотеки "nexus-state". Поделюсь подробными примерами, мотивацией и расскажу, для чего вообще нужны стейт-менеджеры и как они работают. При написании примеров я постараюсь максимально просто объяснить суть и не буду затрагивать тему типизации.
Читать далее →В ходе моего исследования видеокарт линейки NVIDIA CMP, обхода их ограничений и снятия лимитов, оставалась еще одна проблема - видеокарты не могли нормально обмениваться данными напрямую друг с другом. Для моей задачи это было довольно неприятно, потому что сервер собирался ради запуска больших языковых моделей на нескольких дешевых видеокартах одновременно.
В итоге я полез разбираться, можно ли открыть на CMP 90HX настоящий P2P. И получилось - впервые в мире включить прямой обмен между этими картами, заставить одну CMP реально обращаться к памяти другой и получить нормальную скорость передачи.
Самое забавное, что по дороге мне очень сильно помогли сами инженеры NVIDIA. Не лично, конечно. Они просто забыли в драйвере ровно те внутренние механизмы, которыми сами пользовались при разработке и отладке.
Взломать драйвер NVIDIAКак собрать предметные миры, нормализовать таксоны, найти межпредметный перенос, проверить его и вовремя остановить исследование.
В первой статье этой серии «От университета до искусственного интеллекта: как ускорялся генератор изобретений» мы говорили о том, как человечество усиливало генератор нового. Во второй «Одиночный исследователь с ИИ: как собирать новое из разных предметных областей» — о том, что одиночному исследователю не нужна одна «лучшая методология»: реальная работа собирается из нескольких предметных областей и нескольких специализированных методов. Теперь пора сделать следующий шаг и разобрать саму технологию «Глаз стрекозы».
Самая простая ошибка при работе с искусственным интеллектом — начать с генерации идей. Модель охотно предложит десятки связей между биологией, экономикой, производством, логистикой, теорией устойчивости или любой другой областью. Часть этих связей будет интересной, часть — банальной, часть — просто красивой языковой конструкцией. Проблема в том, что до появления идеи исследователь должен понять, какими сущностями он вообще оперирует и какие предметные миры имеет право сравнивать.
Читать далееКоллеги всю неделю обсуждают релиз претрейна https://huggingface.co/yandex/AliceAI-Foundation-80B-A3B-Base https://habr.com/en/companies/yandex/articles/1083300/. В одном из чатов спросили как она отвечает на основополагающий вопрос, и я решил это проверить, что бы узнать сколько стоит инференс подобной модели.
Исходя из того что удалось найти, требуется 4 шт A100, вроде бы можно по пробовать на паре, но это требует CPU-offload, а на такие компромиссы, как и квантизации, я идти не готов. GPU я собрался брать в аренду на облаке, название его писать не буду.
Первый подход был к Datasphere на Jupiter notebook и это был провал (на 6000₽). Детали не важны - проехали. Потом попытался запросить VM c 4 A100, поднял квоты через тикеты, - вот это всё. И не помогло. Ну то есть в теории это возможно - поймать 4 A100, но мне не удалось. Ещё заявлен какой-то Gen2 - но на него даже квоту не поднимают.
Вернулся к Datashpere Jobs, потому что для Jupiter-то их (A100) выделяли! Схема такая:
Читать далееVulkan на моей GTX 1080 генерирует в полтора раза быстрее CUDA. Qwen вставляет китайские слова в русский текст даже при температуре 0. А маленькая модель однажды отчиталась, что удалила файл, и ничего не удалила. Всё это я узнал, пока делал Ollivo: программу, которая запускает локальные нейросети без Python, CUDA и терминала.
Читать далееТак уж вышло, что я до сих пор не могу подобрать лучший способ для работы с транзакциями. Поэтому я решил написать эту обзорную статью. Я разберу все известные мне паттерны для работы с транзакциями и постараюсь выбрать лучший.
db.BeginTxПричалы на обложке складываются в S-57, а в коде слева спрятаны две строки. Кто первый расшифрует, пишите в комментарии.
Читать далееТест зелёный, но в продакшене этот сценарий упадёт. Покажу, как один мок прячет бизнес-инварианты, переносит требования в голову разработчика и заставляет тесты молчать об изменениях.
Читать далее