vitus_wagner: My photo 2005 (Default)
[personal profile] vitus_wagner

Почему-то обновленный с F-Droid-а Fluffychat стал рассказывать что "у меня на телефоне, наверное нет сервисов гугля, и это хорошо для приватнсоти". Сервисы гугля у меня есть, whatsapp-то работает. Возможно это f-droid-овская сборка fluffychat не умеет с ними работать. Это мне не первый раз попадается.

Но в процессе оно рассказало, что существуют альтернативные гуглю системы push-нотификаций. В частности есть ntfy которая вся из себя открытая, и можно свой сервер поставить если очень хочется. Кстати почитав про ntfy я пришел к выводу что значительную часть того, для чего я использую матрикс, оно сделает и само по себе, а не в качестве прибамбаса к матриксу.

Гораздо более интересно то, что еще одним вариантом оперативного получения пуш-нотификаций о приходе сообщений в matrix, является xmpp-клиент conversation. То есть джаббер сам по себе.(ну это в общем понятно - протокол xmpp предполагает наличие постоянно открытого сокета. А матрикс работает через http(s).

Единственное что я пока из всей этой ситуации не понял - это откуда мой синапс узнает что слать нотификации моему мобильному клиенту надо через вот этот ntfy сервер (благо там единственным способом аутентифиации является URL-ка подписки), а в случае xmpp - откуда возьмет аккаунт с когорого можно слать сообщения.

Vibe coding, day 3

2025-06-09 14:57
amarao: (Default)
[personal profile] amarao
1. Нашёлся большой баг - сделал одну фичу, сломал другую. Три рефакторинга, всё аккуратно починено.
2. Релиз (сборка артефактов). Типовая devops'овая трясина. То пакета нет, то путь неправильный, etc. 50/50 я руками и робот.
3. Написана документация для пользователя.
4. Есть сборка под пачку архитектур (кроме linux/arm, там кросс-компиляция и какие-то глупые проблемы, пока отложил). docker image, бинарные артифакты, Есть (ручная) публикация на crates.io.

Примерно 6 часов на подготовку релиза. Довольно впечатляюще, хотя сделано примерно 1/3 от хорошего продакшена (changelog'а нет, управления версиями нет, аплоад на crates.io я пока в CI приносить не хочу из-за того, что появится возня с секретами).

Итого, 3 дня от идеи до mature. С учётом моей неполной компетенции в токио и genanki, основная экономия времени была именно там. Хотя CI тоже был сделан быстрее, чем я бы сделал руками, примерно в 2-3 раза. Но... сделано только 30%, так что тут выглядит как почти паритет. Особенно, с учётом, что плюнул на робота и пошёл сам чинить сборку образов.

3 дня до production grade кода (я утверждаю, что там production grade, хотя он настолько далёк от совершенства насколько можно) и почти полного комплекта deliverables.

deliverables:

cargo install duoload

или

docker run ghcr.io/amarao/duoload:latest (или :0.1.1 для точной версии)

или бинарные артефакты: https://github.com/amarao/duoload/releases/tag/v0.1.1
amarao: (Default)
[personal profile] amarao
Добавил поддержку json'а.

Съело тот же день, как и написать первую часть. Ощущаю, что продуктивность в сильно меньше (мой эстимейт json'овой работы - примерно 2-3 дня, то есть x3 акселерация, в сравнении x5-x15 в первый день).

Проблемы:

1. пропущенная галлюцинация в спеке, приведшая к конфликту между PRD и spec, из-за чего разные куски кода тащили в разные стороны (IRL? у меня дежавю).
2. Ужасающие выкрутасы вокруг дженериков в трейтах. Json часть написалась меньше, чем за час, а вот принесение в main.rs было болью. Там сейчас неоптимально, зато легко исправлять.

Часть времени было потрачено на небольшой рефакторинг, в ходе которого я понял, что робот был прав

```
pub struct TransferProcessor<C, B>
where
C: DuocardsClientTrait,
B: OutputBuilder,
{
client: C,
builder: B,
duplicates: DuplicateHandler,
stats: TransferStats,
deck_id: String,
}
```

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

Является ли сargo clippy --fix --lib -p duoload вайб-кодингом или нет?

Сейчас пытаюсь человечный рефакторинг сделать (через vibe, через vibe).

PS У cursor что-то сломалось. Они сказали, что автокомплиты потрачены (я их особо и не юзал), а вот requests продолжают работать на бесплатном тарифе, хотя там их сильно за сотни.

Да, мой стиль vibe-кодинга, это задачи, а не зажатый tab.

Если кто-то ссылку на результат пропустил, он тут: https://github.com/amarao/duoload


Upd: Первый раз в жизни у меня был коммит на два workflow, оба из которых прошли безупречно с первого раза. Первый раз!

https://github.com/amarao/duoload/commit/5cea4371b21e113b65b8a965d5e82d3b2e9fe625
vitus_wagner: My photo 2005 (Default)
[personal profile] vitus_wagner

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

Выяснилось что почему-то перестали работать клиентские соединения на 8448 порт. На 443 все работает и после перенастройки клиентов все стало летать.

При этом synapse продолжает слушать на этом порту и openssl s_client к нему вполне коннектится.

Вопрос в том, а должно ли работать в таком режиме s2s. Ау. [personal profile] nataraj, может потестируем?

Синапс вроде не обновлялся. Сейчас packages.debian.org его вообще ни в bookworm-backports, ни в trixie не показывает. Как выйдет trixie, придется, наверное из sid ставить.

У меня, конечно сразу возникло предположение что это злобный мегафон стал резать https-соединения на нестандартные порты. Если так, то s2s в безопасности - серверов никто в мобильном интернете не держит.

amarao: (Default)
[personal profile] amarao
Во.

Промпт агенту:

> Nope. The problem is that there is custom implementation for validation, which should not be. It should not be part of the trait.

> recent refactoring removed generic over duocards, so we no longer need multiple implementation for deck id validation. Move this code away from all traits, make it just a normal function.

И эти люди говорят про вайб-кодинг для не-программистов?

If it compiles, it works

2025-06-08 11:51
amarao: (Default)
[personal profile] amarao
Внезапно, языки программирования с высокими перилами (большим количеством проверок и защит от nonsensical code) для vibe coding куда полезнее, чем языки с расслабленными правилами, которые принимают что попало.

Если код не компилируется, вайбинг продолжается до тех пор, пока не компилируется.

А вот в условных питонах и js'ах всякие редкие условия (обработка ошибок, неожиданные типы данных в переменных и т.д.) полностью на совести LLM, а как мы знаем, no consciousness, no conscience, так что...

Возможно, развитием вайб-кодинга станет появление языка программирования максимального уровня фашизма, с минимумом срезанных углов. Никаких неявных typecasting'ов (даже в безопасных случаях), никакого operation precedence (писать всё в скобках). У того же Rust'а - отказ от неявного clone (надо? пиши clone) и т.д.

Может быть, не языка программирования, а набора правил, которые будут энфорситься на уровне компилятора (--no-sugar).

8 часов till MVP

2025-06-07 21:09
amarao: (Default)
[personal profile] amarao
8 часов (с большими перерывами) - и я получил рабочий код в режиме 99% vibe coding. 1% - это либо изменения, которые легче самому сделать, чем сказать "исправь" (лишная строка, пропущенный импорт), либо улучшения текста справки и мелкие правки спецификци.

Что делает программа? Скачивает слова с duocards (который я использую для заучивания греческих слов) и конвертирует их в anki-формат (apkg).

В процессе обнаружилось, что достаточно знать deck id, и можно скачивать без токена.

8 часов - начиная от запроса в gemini https://g.co/gemini/share/ae2eed2e85c7

и заканчивая отладкой.

Суть процесса:

* Сначала prd
* спецификация
* скелет с unimplemented!
* описание архитектуры
* постепенное наполнение модулей кодом

Каждый модуль пишется с тестами с самого начала. Мой vibe-coded mvp имеет 67 тестов для 3 модулей. И одну вспомогательную утилиту для отладки запросов в duocards.


Считая, что я потратил день на неё, остаётся посчитать эстимейт "сделать самому". Я плохо знаю асинхронный раст (возможно, можно было бы писать и без него, но моя предыдущая попытка была с асинком), плюс пачка библиотек, про существование которых я не знал. Гипероптимистично - 5 дней. Реалистично - 15 (3 недели).

Таким образом, vibe-acceleration от 5 до 15.

Но это невероятно трудно. Это 8 часов (реально - часов 5, т.к. большая пауза) high-context работы с ревью, изменениями спецификации из-за обнаруженных изменений IRL, погружение в тяжёлый внутренний мир самого anki (оказывается, нельзя просто так apkg прочитать - я потратил часа полтора пытаясь написать реальные интеграционные тесты с реальным анки и так и не осилил).

Вайбить сложнее, чем программировать.

... Хорошо вайбить сложнее, чем хорошо программировать.
amarao: (Default)
[personal profile] amarao
Vibe coding - это:

1. Как ездить на лошади. Быстрее, но навыков надо больше, чем пешком.
2. Как непрерывное code review. Что-то поняли, но сделали не так, что-то сделали, но лучше бы не делали и т.д.

Прикольно, эффективно, но невероятно утомительно. Программировать проще.

Password or no password

2025-06-07 13:31
vitus_wagner: My photo 2005 (Default)
[personal profile] vitus_wagner

Нашел вот в дистрибутиве пакет libpam-ssh-agent-auth и вот теперь думаю, а повысится ли безопасность моего сервера, если я его буду использовать.

Работает эта штука так - прописывается в /etc/pam.d/sudo и аутентифицирует пользователя желающего сделать sudo, если у него имеется работающий (отфорварженный) ssh_agent с доверенными ключами.

Какому файлу доверять - прописываается в /etc/pam.d/sudo. Можно прописать свой рабочий ~/.ssh/authorized_keys, можно для желающих пользоваться sudo завести отдельный файлик где-нибудь в /etc/.

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

Но главное вообще-то не в этом. Главное в том, что если у нас sudo с паролем, то вообще говоря оно уязывимо к установке keylogger, а вот ssh-вый агент использует криптографию с открытыми ключами, и поэтому не боится перехвата чего либо на стороне сервера.

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

Хотя вот на работе жил я с NOPASSWD в sudoers (там было слишком много серверов и контейнеров, чтобы везде пароли расставлять) и ничего.

P.S. Соберетесь настраивать у себя, не забудьте прописать в /etc/sudoers, что environment кирпичом не чистят переменную SSH_AUTH_SOCK из environment удалять не надо. А то не найдет вашего агента.

X-Post to LJ

vitus_wagner: My photo 2005 (Default)
[personal profile] vitus_wagner

Представился фонтан под названием "Душераздирающее зрелище".

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

vitus_wagner: My photo 2005 (Default)
[personal profile] vitus_wagner

В связи с последними событиями надо срочно вытаскивать из архивов проект A-57 Бартини.

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

Две кошки

2025-06-05 20:28
vitus_wagner: (photo)
[personal profile] vitus_wagner

Живая и пенопластовая

кошки

vitus_wagner: My photo 2005 (Default)
[personal profile] vitus_wagner

https://nohello.net/

Там рекомендуют не посылать приветствие в чате отдельной репликой, а сразу в первой реплике упоминать содержателный вопрос,

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

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

— Это вас так учат, в первой же реплике вываливать на собеседника важную информацию? Как мешком по голове.

— Конечно. Если радиосигнал до собеседника идёт минут десять, времени на обмен всякими ритуальными репликами вроде «Привет!», «Как дела?» может уйти безумно много. Поэтому, если звонишь по делу, тему этого дела надо объявить в первой же реплике.

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

X-Post to LJ

документация

2025-06-03 12:07
amarao: (Default)
[personal profile] amarao
Кажется, я начинаю понимать как писать документацию.

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

Озарение началось с вопроса от техписа "а где ваши шаблоны? (для документации)".
vitus_wagner: My photo 2005 (Default)
[personal profile] vitus_wagner

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

борщевик

Июнь еще не начался, а он уже почти длиннее рукоятки лопаты вырос.

vitus_wagner: My photo 2005 (Default)
[personal profile] vitus_wagner

img

Вид из купола на другие купола

img

Интерьер купола

vitus_wagner: My photo 2005 (Default)
[personal profile] vitus_wagner

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

И вот земляне, колонизировавшие эту планету дают монстрам названия из Кэррола. Поскольку у Кэррола монстров не так много - Snark, Bujum, Jabberwockey и Bandersnatch, используются названия из разнообразных переводов. То есть кроме Джаббервоков по лесам там бегают Бармаглоты и Жилбылволки, растут деревяья Джуб-Джуб, Тумтум и Баобук, и это разные деревья, хливкие шорьки выяснсяют отношения с мильынми бокрами, а глокая куздра своими развихрами курдячит и тех, и других.

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

— А где же Спордодрак?

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

(дракот простой и дракот диковищный там, тем не менее, есть).

будущее с AI

2025-06-01 12:53
amarao: (Default)
[personal profile] amarao
Одна из веток рассуждения, 'instrumentation', task-limited AI без свободной воли.

https://www.reddit.com/r/singularity/comments/1l0l7fm/instrumentation_theory/

Альтернативы

2025-05-31 22:30
amarao: (Default)
[personal profile] amarao
Я вот всё думаю про альтернативы... Медиум окончательно скуксился. dreamwidth при прочих равных... Не совсем хорош в показе кода, мягко говоря.

Потыкался, есть dev.to. Оно? Есть что-то лучше?
vitus_wagner: My photo 2005 (Default)
[personal profile] vitus_wagner

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

Еще вчера приехал из Китая POE-сплиттер, по этому поводу я собрался и протянул к себе на второй этаж от роутера эзернетовский кабель. Через потолок терраски и стенку комнаты второго этаэжа (утепленную толстенной плито пенофлекса). Теперь надо закрепить этот кабель уже в пределах комнаты (а у меня нечем это сделать красиво, надо прикупить будет) и можно настравивать 802.11r на обоих роутерах.

Profile

yurikhan: (Default)
Yuri Khan

August 2018

S M T W T F S
   1234
567891011
12131415161718
19202122232425
26 2728293031 

Links

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated 2025-06-10 15:42
Powered by Dreamwidth Studios