Posts with tag "project"

Каково это, быть многоруким Шивой?

posted on 2025-11-09

Иногда меня спрашивают: "Саша, как ты все успеваешь?" Но обычно эти люди не подозревают, что успеваю я очень малую часть того, что задумано. У меня постоянно, есть куча каких-то проектов и идей, над которыми хочется поработать. Снаружи может казаться, что я успеваю многое, но на самом деле я делаю лишь небольшую часть из того, что запланировал. А все остальные планы копятся и копятся.

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

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

Далее я увлекся следующей идеей – переключился на хакатон, который устраивал МТС. Этот хакатон был ориентирован на создание ПО для автономного управления роботами.

МТС второй год уже проводит такой хакатон. Называется он "МТС True Tech". Наверное, в серии следующих нескольких постов я расскажу, как и что делал в рамках этого хакатона. С начала октября по начало ноября я учился программировать роботов. В том году я не стал ввязываться в этот хакатон, потому что казалось, что у меня вообще же нет опыта, как я буду делать что-то, связанное с робототехникой? А в этом году я просто загорелся этой идеей, махнул рукой на то, что опыта ровно ноль и решил как-нибудь поучаствовать.

Удивительно, что даже при отсутствии опыта мне удалось пройти в полуфинал. Но детали подробности расскажу в следующих постах.

Но какой же ответ на заголовок этого поста? Каково быть многоруким Шивой и браться за всё, что хочется?

Как по мне, это очень прикольно, потому что разнообразит кругозор, позволяет попробовать много разного и не закиснуть в рутине. Так что, ребята, не бойтесь и пробуйте себя во всём!

Помощник по работе с opensource проектами

posted on 2024-03-21

Сегодня хочу рассказать про один из своих прошлых проектов. Когда-то у меня появилась идея, как упростить себе обработку большого числа пулл-реквестов и issue в своих opensource проектах. И тогда я сделал сайт 12forks.com (сейчас уже недоступен, как выглядела главная страница можно глянуть через WebArchive).

Идея 12Forks состояла в том, что он собирал всю коммуникацию по всем твоим issues и pull-requests на одной странице, подсвечивая те из них, которые требуют каких-то действий с твоей стороны. То есть, если ты оставил в issue комментарий, то он исчезает с дашборда до тех пор, пока кто-либо не ответит или пока не пройдёт заданное время - и тогда 12Forks предложит тебе попинговать собеседников.

Такая схема позволяет не забывать про те issues и pull-requests, которые ты завёл в чужих проектах или которые кто-то завёл в твоих. Так же 12Forks был призван уменьшить количество информации, убрав то на что не стоит отвлекаться.

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

Недавно у меня появился коллега, который когда-то поработал в Google. Он рассказывал что там во внутренней системе code review есть такое понятие, как attention set, принцип работы которой похож на то что я делал в 12Forks.com.

Как думаете, стоит ли возродить этот проект?

Свой Code Assistant

posted on 2025-07-20

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

В основном попадаются восторженные статьи про то, как круто работает вайб-кодинг, как с его помощью написали первый Hello World и тому подобное говно. Но мне повезло найти одну очень интересную статью, где автор анализирует работу IDE Cursor и устройство его промпта.

Я начал писать своего кода-ассистента, ориентируясь на исходники проекта Aider, но посматриваю и на другие проекты с открытым кодом, типа RooCode, Cline и прочих.

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

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

Я пошел другим путем — для редактирования использую CLI команду patch, научив LLM формировать правильный diff. Пока работает неидеально: иногда дифф получается некорректным, и команда патч ломается. Но если показать LLM ошибку, она делает следующую попытку с исправленным патчем. Обычно ко второй-третьей попытке всё получается.

Я планирую дальше развивать код-ассистент. Теперь нужно добавить цикл проверки изменений через тестирование.

Особенно интересно работать с таким проектом в Common Lisp — можно быстро экспериментировать: смотреть внутренний стейт, править функции, добавлять новые инструменты и сразу тестировать изменения. Такой режим работы очень удобен. Даже для интерфейса я пока использую CL REPL, но планирую добавить веб-интерфейс и может быть консольный, как у Aider. Пока, это площадка для экспериментов!

Сегодня расскажу ещё про один мой проект, который так и не превратился...

posted on 2024-04-05

Сегодня расскажу ещё про один мой проект, который так и не превратился в продукт. Правда в отличие от 12forks.com, этот проект жив до сих пор. Проект связан с GitHub и полезен тем, кто развивает фреймворк или библиотеку, предназначенную для разных платформ, языков программирования или операционных систем.

На GitHub есть возможность запускать тесты вашей библиотеки в так называемой "матрице". То есть тесты запускаются для различных комбинаций одного или нескольких параметров. В качестве параметров часто выступают разные OS и версии языка программирования. В зависимости от языка, сюда можно добавить и разные реализации, например Python библиотеку можно тестировать и под CPython и под PyPi, а уж сколько доступно реализаций Common Lisp, я вообще молчу!

У меня много Opensource библиотек для Common Lisp и многие из них для меня системо-образующие - хотелось бы чтобы они работали для как можно большего числа реализаций CL и под разными операционными системами. Однако как показать, для каких комбинаций OS и реализации языка тесты успешно проходят? Нормального способа я не нашёл, и поэтому решил сделать свой "велосипед". Так получился GitHub Actions.

Уже не помню почему я решил назвать проект Github Actions. Логичнее было бы назвать его Matrix Badger, ведь всё что он делает - генерит SVG картинку со статусом запуска тестов для всех комбинаций матрицы. Пример такой картинки - в начале этого поста. На картинке результат тестов какой-то популярной библиотечки для Scala.

Я так и не придумал, как монетизировать этот небольшой проект. Но он много ресурсов не требует и времени не отнимает, а польза от него есть - сам в каждом своём проекте его использую.

Вообще мне кажется что сложно сделать так, чтобы разработчики платили за подобные продукты. У нас же как, если кто-то за что-то хочет с нас копеечку - сразу возникает мысль: "Я же могу сделать сам и даже лучше!" :)))


Created with passion by 40Ants