2026-10-04

Новая версия Voice Inbox

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

 

Оставить комментарий

 
  2026-10-02

Экранная клавиатура

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

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

Добавил возможность сборки экранного хелпера под Android. Вышло здорово! 

Интересно а под iOS получится портировать?

 

Оставить комментарий

 
  2026-10-01

Отмонтировать забыла

Начальник — секретарю:

— Катенька, дорогая, перепиши месячную отчетность нашим партнерам, они сейчас к тебе подойдут.

Заходят партнеры:

— Добрый день, это вам переписать отчетность?

— Добрый день, да, будьте так любезны, вот чистая дискета, можно на нее?

— Да, конечно.

# mkfs -t vfat -c /dev/fd0h1440
# mount -t vfat -o iocharset=koi8-r,codepage=866 /dev/fd0 /mnt/floppy
# find / -noleaf -type f -name Otchet_april.[a-zA-Z] -exec cp '{}' /mnt/floppy \;
# ls -la /mnt/floppy/Otchet_april.[a-z][A-Z] && sync && sleep 3

Протягивает дискету обратно:

— Возьмите, пожалуйста!

Партнеры, у которых отвисают челюсти:

— Них...я себе!!!

Катенька (испуганно):

— Что такое?!.. Черт! Я опять отмонтировать забыла?!

 

Оставить комментарий

 
  2026-09-30

Эмулятор Windows в браузере

У Fabrice Bellard на сайте есть прекрасное, лучше самому увидеть

 

Оставить комментарий

 
  2026-09-28

Сплит-клавиатура с донглом

На выходных я собрал версию клавиатуры с правым сенсором. Особенность правого сенсора в том, что он находится на вторичном устройстве, а команды от него передаются по Bluetooth на левую половинку клавиатуры, которая затем транслирует их на компьютер.

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

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

Такая конфигурация позволит быстро переключать донгл между разными компьютерами. Кроме того, клавиатура сможет будить компьютер. Сделать это по Bluetooth гораздо сложнее, поскольку Bluetooth-адаптер никогда полностью не засыпает и механизм пробуждения работает иначе. Если же клавиатура подключена к компьютеру через USB, всё значительно проще.

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

Одновременно донгл всё ещё будет Bluetooth-устройством, через которое можно будет взаимодействовать с экранной программой, показывающей текущую раскладку клавиатуры.

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

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

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

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

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

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

 

Оставить комментарий

 
  2026-09-26

Прорезиненные ножки для клавиатуры

Клавиатура должна надёжно стоять на столе и не двигаться во время работы. Поэтому мне хотелось добавить на её нижнюю поверхность нескользящие ножки.

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

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

Тогда я решил использовать самоклеящуюся резиновую ленту, специально предназначенную для крепления к различным поверхностям. Я заказал ленту толщиной один миллиметр, но быстро понял, что ошибся: она должна быть примерно вдвое толще. К счастью, две полоски можно склеить между собой и получить нужную толщину — два миллиметра. Если вырезать их аккуратно, место соединения остаётся практически незаметным.

В итоге получилось идеально. Я ожидал получить цельную резиновую ленту, но она оказалась слегка вспененной. Впрочем, это не испортило результат, а, скорее, даже улучшило способность ножек препятствовать скольжению.

Теперь нижняя поверхность клавиатуры выглядит ещё аккуратнее, а обе её половинки устойчиво и приятно лежат на столе. Благодаря встроенным магнитам их также можно соединить друг с другом. В таком виде клавиатуру очень удобно переносить.

Осталось только придумать для неё дорожный футляр — или хотя бы простой тканевый мешочек.

 

Оставить комментарий

 
  2026-09-22

Результаты выходных

На выходных я закончил новый корпус для тонкой версии низкопрофильной клавиатуры с сенсором. Теперь с ней можно работать совсем без мыши.

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

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

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

 

Оставить комментарий

 
  2026-09-12

Тачпад для Corne

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

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

Я рассмотрел несколько вариантов.

Можно превратить в мышь саму клавиатуру. Она достаточно маленькая и даже немного похожа на неё. Но двигать клавиатуру по столу пока кажется мне слишком странной идеей.

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

А что, если добавить тачпад?

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

Сказано — сделано.

Тачпад Cirque прекрасно подошёл к клавиатуре на базе ZMK и органично вписался в дизайн корпуса. Теперь моя клавиатура может использоваться не только для набора текста, но и для управления курсором.

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

 

Оставить комментарий

 
  2026-09-05

Локальная агентская разработка

Можно ли программировать с AI-агентом полностью локально?

Программировать с Codex или Claude Code легко и приятно. Даёшь агенту задачу, он читает проект, меняет несколько файлов, запускает тесты, видит ошибку, исправляет её и продолжает работу, пока не получит результат.

Но у такого подхода есть очевидное ограничение: исходный код отправляется в облачный сервис.

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

Причём хотелось проверить это не на специально собранном AI-сервере, а на железе, которое уже было под рукой: MacBook Pro 2021 года с M1 Pro и 32 GB unified memory.

Модель действительно помещается

Первое приятное открытие: современные локальные модели уже вполне помещаются в такое железо.

Я попробовал несколько вариантов Qwen 3.6 через Ollama:

  • Qwen 3.6 27B Coding;

  • Qwen 3.6 35B-A3B;

  • несколько разных агентских оболочек.

Особенно любопытным оказался Qwen 3.6 35B-A3B. Несмотря на 35 миллиардов параметров, это MoE-модель: на каждом токене активно только около 3 миллиардов параметров. Поэтому она неожиданно оказалась быстрее dense-модели 27B.

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

Можно.

Гораздо интереснее оказалось то, что происходит после запуска.

Эксперимент 1: Codex + Ollama

Codex умеет работать не только с моделями OpenAI, но и с локальным OpenAI-compatible endpoint. Поэтому схема получилась довольно естественная:

Codex → Ollama → Qwen

Inference при этом выполнялся на старом MacBook, а сам Codex и исходный код могли находиться на другой машине.

Технически всё заработало.

Практически — не очень.

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

И это оказалось важным наблюдением.

Для обычного чат-бота скорость генерации — одна из основных характеристик. Для coding agent этого недостаточно.

Хороший агент должен уметь сделать:

прочитать код → изменить → запустить тест → увидеть ошибку → исправить → снова запустить тест → продолжать до результата

Если после третьего шага он решает, что работа закончена, количество tokens per second уже не особенно важно.

Эксперименты с другими агентами и моделями

Дальше я попробовал несколько комбинаций агентов и локальных моделей.

Qwen 3.6 35B-A3B, например, на M1 Pro генерирует заметно быстрее 27B Coding. Я также попробовал Gemma и OpenCode.

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

Иногда его можно было подтолкнуть ещё одним сообщением. Но тогда исчезает сама идея агентской разработки.

Если мне нужно постоянно следить за агентом и говорить ему «продолжай», то часто быстрее просто сделать изменение самому.

Эксперимент 4: Pi + Qwen 3.6 27B Coding

Самый практичный результат неожиданно дала самая простая связка:

Pi + Qwen 3.6 27B Coding.

Она оказалась не самой быстрой.

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

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

И результаты оказываются вполне приемлемыми.

Это довольно сильно изменило мой взгляд на локальные coding-модели.

Оказалось, что вопрос уже не звучит как:

Может ли небольшая локальная модель программировать?

Может.

Более интересный вопрос:

Может ли агентская оболочка достаточно хорошо использовать эту модель, чтобы она самостоятельно дошла от задачи до результата?

И здесь разница между агентами оказалась, возможно, даже важнее разницы между моделями.

Так можно ли заниматься локальной агентской разработкой? Да.

На MacBook Pro 2021 года с 32 GB памяти я могу запустить полноценную coding-модель и дать ей реальную задачу в существующем проекте. Агент может читать репозиторий, менять код, запускать тесты и самостоятельно получать рабочий результат.

Ещё несколько лет назад это само по себе звучало бы довольно фантастически.

Но есть вторая часть ответа:

на моём железе это пока практически не имеет смысла.

Qwen 3.6 27B Coding работает достаточно хорошо, но слишком медленно. Некоторые операции занимают минуты. В результате работу, которую агент делает локально, я зачастую могу быстрее выполнить руками.

Облачные Codex и Claude Code ощущаются быстрее на порядок.

Поэтому эксперимент одновременно дал два результата:

локальная агентская разработка уже работает; потребительский ноутбук пятилетней давности для неё уже недостаточно быстр.

Следующий эксперимент — железо

Поэтому следующий шаг будет не очередная модель.

Я хочу оставить ту комбинацию, которая уже показала себя рабочей:

Pi + Qwen 3.6 27B Coding

и заменить только hardware.

В идеале — взять на некоторое время workstation с RTX 5090 32 GB и повторить те же реальные задачи.

Это даст гораздо более интересный ответ:

Что произойдёт, если убрать главный недостаток локального агента — скорость?

Если одна consumer GPU сможет сделать локальный Qwen достаточно быстрым, а Pi сохранит способность стабильно доводить задачи до конца, то полностью offline agentic development перестанет быть техническим экспериментом и превратится во вполне практичный рабочий инструмент.

И вот это уже хочется проверить.

 

Оставить комментарий

 
  2026-08-15

Одиссея

Посмотрел «Одиссею» Нолана. Мне понравилось.

Удивительно, IMAX — это не обязательно 3D. Нолан снял фильм в 2D, и это нисколько не убавило зрелищности.

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

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

 

Оставить комментарий