diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..56fafce
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1 @@
+.html
diff --git a/budget/2026-01.md b/budget/2026-01.md
deleted file mode 100644
index 3f39cbb..0000000
--- a/budget/2026-01.md
+++ /dev/null
@@ -1,216 +0,0 @@
-19.01: 40
-
-* создать заготовку компонента budget в iOS
-* реализовать budgetReportedDate()
-* реализовать budgetReportedWeekday()
-
-18.01: 30
-
-* собрать проект с подключенной либой gb
-* вызвать simplyPrint в iOS
-* перенести функции в gb
-
-18.01: 50
-
-* досоздать заготовку build.gradle.kts
-* создать заготовку ver-sdkios
-* переименовать ver-sdkios -> sdk-ios
-* сделать скрипт util/gen-ios
- √ сборка
- √ архивирование
-
-17.01: 40
-
-* доверстать заготовку интерфейса
- два поля ввода
- текстовый результат
- кнопки для буфера
-
-17.01: 35
-
-* сверстать поле ввода spent с кнопкой
-
-16.01: 40
-
-* долг:
- entities.yml: удалить copyResult
- это didClickCopy ведь уже
-* создать заготовку приложения на iOS по примеру песочницы
-* оформить ЗС
- https://github.com/kornerr/git-budget/pull/7
-* влить ЗС
-
-16.01: 35
-
-* создать ЗС
- [GigaIDE AI version]
- до изменений paste
-* повторить копирование в буфер через Giga IDE
- не удалось
- ибо не работает агент
-
-15.01: 45
-
-* уведомить о факте копирования
- на моём Samsung это и так происходит
- ГигаЧат сказал, что и многие другие производители отображают уведомление на копирование в буфер
- итог: не надо ничего показывать дополнительно
-* создать новую ветку для ЗС с помощью Cursor
-* продублировать копирование в буфер с помощью Cursor
-* оформить ЗС cursor
-* оформить ЗС ручной
-* влить ЗС ручной
-* скачать Giga IDE
-
-15.01: 35
-
-* оформить ЗС ручной
-* влить ЗС ручной
-* включить запись
-* добавить кнопку копирования в буфер
-* сделать копирование результата в буфер руками
- https://stackoverflow.com/questions/19253786/how-to-copy-text-to-clipboard-in-android
-
-14.01: 40
-
-* оформить ветку, но не сливать её
- https://github.com/kornerr/git-budget/pull/2
-* сделать руками вставку в буфер
- тоже под запись
- замерить время
- вышло 40 минут
- а с cursor AI было 40 минут второй части + сколько в первой
- т.е. никак не быстрее
- как минимум то же время
- но в голове меньше мыслей было
- а по факту было больше review
- и меньше внимательности
- ибо я пропустил в review, что нужно было didClickPaste вместо pasteSpent
-
-14.01: 40
-
-* исправить работу с inputSpent, pastedSpent
- надо ввести shouldResetSpent
- spent на основе inputSpent и pastedSpent
- после чего убрать из shouldResetResult весь блок if с вызовом budgetCtrl()
- ибо внутри should нельзя вызывать эффекты вроде budgetCtrl()
-* исправить задание значения для vm.inputSpent из spent при отличии
- cursor неверно выбрал поле и не так написал эффект
-* проверить отображение pasted spent в поле ввода
- и что нет цикла после задания inputSpent руками
- цикла нет
- отображение есть
- вставка из буфера произошла успешно
-
-13.01: 40
-
-* оформить ЗС
- https://github.com/kornerr/git-budget/pull/1
-* влить ЗС
- перед Cursor AI
- обязательно
- иначе потом ничего не видно будет по комитам
-* сделать вставку из буфера
-
-13.01: 45
-
-* сделать budgetReportedWeekday()
- использовать LocalDate
- оно больше подходит, чем Calendar
- https://stackoverflow.com/questions/38739983/calendar-set-day-of-week-not-correct
-* передавать значения по умолчанию
-* сделать подсчёт строки результата
-* (практически) сравнять функциональность W и A
-
-12.01: 45
-
-* добавить Scaffold
- как-будто из-за его отсутствия может быть чёрная штука вверху при выборе поля
- не использовать modifier из Scaffold
- использовал - помогло
-* сделать два поля ввода
-* сделать budgetReportedDate()
-
-12.01: 40
-
-* переименовать Playground -> Budget
-* сверстать интерфейс с двумя полями ввода и одним выводом
-
-11.01: 35
-
-* влить ветку budget на сайте
- чтобы можно было добавить cv/ files
-* запустить заготовку в Android Studio
- запустилось
-* создать util/do-tmux
-* вернуть и перегенерить cld/*
-
-11.01: 40
-
-* обработать файлы первого уровня
-* обработать уровень app
-* обработать уровень app/src/main
-* обработать уровень app/src/main/res
-* обработать уровень app/src/main/kotlin
-
-10.01: 25
-
-* найти репозиторий старого git budget
- https://github.com/kornerr/git-budget
- его и возьму
-* найти эталон по UI для бюджета
- вот этот сайт плюс-минус на мой уровень
- https://costtrack.app/
- общий список прилложений по бюджетированию
- https://t-j.ru/short/all-budget-apps
- итог
- эталона нет
- почти все приложения уродливые
- так что я могу делать свою уродливую версию
- а там уже посмотрим
-
-09.01: 35
-
-* определять weekday / weekend
-* считать перерасход
-* считать 'осталось Р/д' для будней
-
-09.01: 30
-
-* обдумать создание отдельного приложения
- уже без JS
- либо забить на буфер пока что
- но потом всё равно хочется его иметь
- либо всё-таки приложение
- тогда и гит чисто для бюджета будет смотреться логичнее
- да и просто как пример приложения-доказательства выглядит лучше
- создать надо, но в следующей итерации
- прямо сейчас мне полезнее подсчёт, а не форма
- итог:
- потом -да, сейчас - нет
-* убрать pre
- кнопки буфера можно оставить, они ведь в браузере работают
-* считать целевой утренний баланс
-
-08.01: 45
-
-* изучить отсутствие вставки из буфера в WebView
- Uncaught (in promise) NotAllowedError: Failed to execute 'readText' on 'Clipboard': Read permission denied.
- после ввода WebCC ничего не изменилось
- onPermissionRequest не вызывается
- короче, это прям проблема на WebView
- так что аналог электрона - это прям сильно упорото будет
- в JS стопицот вещей иначе работают
- их тупо невозможно поддержать
- гораздо проще КМП
-
-08.01: 45
-
-* добавить кнопку быстрой вставки из буфера в поле ввода
-* добавить кнопку быстрого копирования результата
-* сделать вставку из буфера
-
-07.01: 15
-
-* исправить форматирование даты 3.1 -> 03.01
-* учитывать отрицательный баланс
\ No newline at end of file
diff --git a/budget/2026-01_article.md b/budget/2026-01_article.md
new file mode 100644
index 0000000..d197d60
--- /dev/null
+++ b/budget/2026-01_article.md
@@ -0,0 +1,93 @@
+Title: Что нам стоит на КМП построить?
+URL: https://habr.com/ru/articles/989286/
+
+Может ли Kotlin Multiplatform сократить трудозатраты при разработке одного продукта под несколько платформ? Мои вычисления говорят, что да, на 21%. Покажу это на примере своего хобби-проекта GitBudget для Android + iOS.
+
+# Текущее положение дел
+
+Одним из популярных способов разработки под несколько платформ является схема «одна платформа - одна команда разработки». Например, взглянем на известный мессенджер, заточенный под парковки. Некоторое время назад я словил следующую багу исчезновения сообщений:
+
+
+
+Как следует из видео, в ходе переписки с GigaChat у меня пропадали сообщения: на Android бага проявилась лишь раз (4-я секунда видеозаписи), на Web бага повторялась стабильно. Разное поведение на разных платформах свидетельствует о том, что продукт под разные платформы делают разные команды разработки. У каждой команды свой язык программирования, своя архитектура, свой процесс code review, свой уникальный набор порождаемых багов, своя команда тестирования, свой ФОТ и т.д..
+
+Таким образом, чем больше мы дублируем в коде, тем больше мы вынуждены дублировать организационно. КМП может помочь сократить дублирование части кода, но, конечно, не полностью, а лишь на определённый процент. Каков этот процент? Посчитаем на примере моего хобби-проекта GitBudget.
+
+# Обзор GitBudget
+
+GitBudget - это крошечный хобби-проект для упрощения ведения собственных трат. На текущий момент нет истории трат, поддержки Git и прочего запланированного. Тем не менее, я пользуюсь этим приложением не первый месяц для упрощения ежедневного подсчёта двух важных для меня цифр:
+
+1. Перерасход: Насколько на текущий день траты превышают план (бюджет)
+2. Осталось ₽/д: Сколько можно потратить сегодня и в последующие дни текущей недели средств, чтобы не превысить недельный план (бюджет)
+
+Углубляться в формулу и в архитектуру сейчас не буду, т.к. они не предмет данной статьи. Пытливый читатель всё это найдёт сам [на GitHub](https://github.com/kornerr/git-budget).
+
+Ознакомимся с внешним видом приложения на Android и iOS:
+
+
+
+Никакой фантастики в UI/UX нет, все элементы интерфейса стандартные (и даже не везде выровненные). Использование приложения на текущий момент сводится к трём действиям пользователя:
+
+1. Вставить из буфера обмена траты за вчера (Spent)
+2. Вставить из буфера обмена остаток баланса на вчерашний день (Morning balance)
+3. Скопировать итоговый расчёт в буфер обмена (Result)
+
+# Трудозатраты на разработку
+
+Для удобства подсчёта условимся о разделении всего кода приложения на три группы:
+
+| № | Группа | Пример | Файлы Android | Файлы iOS |
+| --- | --- | --- | --- | --- |
+| 1 | UI | Jetpack Compose, SwiftUI | MainActivity.kt, VM.kt | AppView.swift, VM.swift |
+| 2 | Платформа | ClipboardManager, UIPasteboard | budget.kt, main.kt, other-android.kt, registerOneliners.kt | budget.swift, cld-ios.swift, other-ios.swift |
+| 3 | Логика | budgetShouldResetMorningBalance | budgetFun.kt, entities.yml | budgetFun.kt, entities.yml |
+
+КМП в GitBudget я использую лишь для логики, а UI и платформенный код нативные. Почему так? Потому что логика полностью под моим контролем, она обновляется по моему усмотрению. С UI и платформенным кодом ситуация иная - это собственность корпораций Apple и Google, они задают правила игры и обновляют UI с платформой по своему усмотрению (например, придумывают [Liquid Glass](https://habr.com/ru/articles/956116/), от которого не увернуться).
+
+Считать будем два объективных показателя - количество строк кода и время, затраченное на реализацию какой-либо функциональности. На каждый из этих показателей посмотрим в разрезе вышеобозначенных трёх групп - UI, платформа, логика - и двух платформ - Android, iOS.
+
+## Первый показатель: Количество строк кода
+
+| № | Платформа | Всего | UI | Платформа | Логика |
+| --- | --- | --- | --- | --- | --- |
+| 1 | Android | 692 | 160 (23%) | 221 (32%) | 311 (45%) |
+| 2 | iOS | 540 | 90 (16%) | 139 (26%) | 311 (58%) |
+
+**Вывод-1**: 311 строк логики для iOS я **не писал повторно** благодаря КМП, это **58%** всего кода iOS.
+
+**Вывод-2**: 311 ненаписанных повторно строк кода для iOS с точки зрения обеих платформ (692 + 540 = 1232) означают, что **25%** кода всего проекта я не писал повторно.
+
+## Второй показатель: Время реализации функциональности
+
+Под запись я добавил кнопку `Paste` для поля ввода `Morning balance` как для Android:
+
+
+Так и для iOS:
+
+
+В итоге получились такие цифры:
+
+| № | Платформа | Тип реализация | Особенности реализации | Время |
+| --- | --- | --- | --- | --- |
+| 1 | Android | Первичная | Создаём новую функциональность, которой не было, собираем почти все грабли | 17:34 |
+| 2 | iOS | Вторичная | Подключаем готовую логику, дописываем лишь UI, граблей практически нет | 07:33 (43%) |
+
+**Вывод-3**: Повторение функциональности на iOS с готовой логикой заняло на **57% меньше времени**, т.е. произошло **в 2 раза быстрее**
+
+**Вывод-4**: Если принять, что без КМП функциональность на каждой из двух платформ делали бы в сумме 17:34 * 2 = 35:08 минут, то сэкономленные 10 минут при повторении функциональности для iOS означают, что для всего проекта я **сэкономил 21% времени**.
+
+# Выводы
+
+Итак, экономия с КМП в цифрах выглядит так:
+
+1. Количество строк для iOS снизилось на **58%**
+2. Суммарно количество строк кода по всему проекту снизилось на **25%**
+3. Время, необходимое на повторение функциональности для iOS, снизилось на **57%**
+4. Суммарно затраченное время по всему проекту на реализацию функциональности снизилось на **21%** (эту цифру я использовал в самом начале статьи)
+
+# Вопросы читателю
+
+1. Суммарная экономия в 21% по времени проекта - это много или мало?
+2. Окупает ли экономия в 21% явно не однодневный переход команд на новый процесс разработки?
+3. Насколько важен синхронный выпуск функциональности на обе платформы, причём работающей одинаково на каждой платформе?
+
diff --git a/budget/2026-01_email.md b/budget/2026-01_email.md
new file mode 100644
index 0000000..64a20c1
--- /dev/null
+++ b/budget/2026-01_email.md
@@ -0,0 +1,22 @@
+Title: КМП как альтернатива сокращению
+
+Кому: Зуев Игорь, Корнюшин Пётр, Сухов Сергей, Терентьев Евгений, Петров Виктор
+
+
+Привет, коллеги,
+
+завтра состоится серия созвонов по поводу сокращения троих человек из
+команды iOS Connect.
+
+У меня есть встречное предложение по повышению эффективности
+команд разработки с помощью Kotlin Multiplatform. Предлагаю перевести
+сокращаемых троих человек в новую команду КМП, которую я готов возглавить
+без отрыва от руководства командой iOS Connect.
+
+КМП может сэкономить около 21% времени разработки, подробно я это расписал
+в статье на Хабре: https://habr.com/ru/articles/989286/
+
+Если предложение заинтересовало, буду рад обсудить детали данной спецоперации.
+
+С уважением,
+Михаил.
\ No newline at end of file
diff --git a/budget/2026-Q1.md b/budget/2026-Q1.md
new file mode 100644
index 0000000..e2fe4d7
--- /dev/null
+++ b/budget/2026-Q1.md
@@ -0,0 +1,539 @@
+14.02: 35
+
+* продумать структуру проекта KD
+ не является ли он корнем всего проекта?
+ т.е. не должно ли в корне репы быть директории ver-nodejs?
+ а в отдалённом будущем, может, даже и ver-macos?
+ т.е. являются ли KDController+KDContext самостоятельными продуктами без транслятора?
+ как-будто нет
+ ведь транслятор может поставлять и эти файлы тоже
+ типа зачем в принципе руками делать скрипты под каждый проект
+ пусть транслятор это и делает?
+ транслятор ли это тогда? или уже нечто большее?
+ а файл YML - это файл проекта, выходит
+ с другой стороны, есть же тесты как раз контроллера и контекста
+ да и registerOneliners тоже как-будто являются продуктом
+ хотя для работы в C++ нужно будет сделать ведь какой-то аналог как Ctrl, так и registerOneliners
+ и для Swift тоже
+ т.е. всё-таки биндинги на разные языки тоже часть продукта
+ хотя эти биндинги как-будто тоже могут и должны поставляться вот эти инструментом kd
+ выходит, это всё-таки комплексное решение
+ для каждого языка - свой набор файлов
+ может, не только файлов, но и примеров аля Hello World
+ выходит, есть три продукта:
+ 1. KD Generator
+ по файлу yml генерит в нужные места нужные файлы
+ если это утилитарная функция то вроде как нет смысла делать что-либо отличное от Node.js
+ оно просто удобнее всего
+ а поддерживать разные варианты - это как-будто уже излишнее
+ 2. KD Controller, Context, registerOneliners, тесты контроллера и контекста
+ тесты нужны чисто для меня самого
+ но теоретически их может запускать и генератор
+ хотя зачем? они нужны чисто для разработки
+ кстати, тестов registerOneliners как-будто нет
+ хотя это как раз HW могут осуществлять по факту
+ 3. Обёртки для Swift, C++, JS?
+ есть ли смысл класть их куда-либо по раздельным папкам?
+ как-будто можно сделать корневую директорию src
+ а оттуда линковать уже как в HW, так и в другие места
+ хотя их по сути надо встраивать в KD Generator
+ ибо Node.js будет отдельно поставляться без репы исходников
+* создать src/ с KDController/Context
+* создать test/
+ для начала с проверкой Controller/Context
+
+14.02: 40
+
+* обдумать будущее своего проекта + котлин
+ нужно делать Kotlin Dialect / Диалект Котлина
+ ПСКОВ будет продуктом KD
+ Git Budget будет продуктом KD
+* переименовать репу cross-language-dialect в kotlin-dialect
+* сделать ревизию текущего состояния проекта CLD
+* переместить swift/js глубже в history-2025
+* Канал Диалект Котлина:
+ написать хвалу C++ за его строгость и некоторую аутсайдерность
+Несмотря на то, что данный канал посвящён Котлину и тому, как правильно на нём писать код под несколько платформ, помощь языка C++ в определении правил написания этого самого кода трудно переоценить. Именно благодаря C++, в котором практически невозможно написать то, что без проблем пишется на Kotlin и Swift, приходится выкручиваться и находить третий путь. Спасибо C++ за несгибаемость.
+
+13.02: 50
+
+* вызвать заготовку oneliners напрямую
+ без связи с CLDController
+* (последнее) поддержать синтаксис oneliners для эффектов
+ удалось!
+
+12.02: 50
+
+* сделать привычную обёртку над CLDController
+ хотя по факту нас интересует ровно один вызов: budgetCtrl().set(...)
+ возможно, это должен быть класс, да
+ просто для удобство ссылки на этот класс и хранения его экземпляра
+ это просто привычно? хотя хранить его смысла нет, он как бы отсутствует
+ ведь теперь это всё будет синглтоном внутри KT
+ пример шаблонной функции:
+ https://stackoverflow.com/a/44469314/3404710
+ итог: ввести функцию шаблонную, чтобы она вызывала разные typeToAny() из KT
+ ввести функцию в KT?
+ ввёл шаблонную функцию budgetCtrlSet(k, v)
+ работает
+* сделать пример обёртки над didLaunch для BudgetContext
+ удалось с помощью функций const
+
+11.02: 50
+
+* зарегистрировать шуд?
+ на самом деле, это не нужно
+ эти шуды должны остаться внутри fun.kt
+ тогда этот код регистрации тоже не будет иметь смысл дублировать
+ шуды же всё равно крутятся сами по себе без эффектов внешних
+ т.е. их безопасно регать сразу в fun.kt
+ итог: ввести константу со списоком функций для регистрации и отдельно функцию регистрации стандартного списка
+
+10.02: 45
+
+* проверить вызов KT.budgetControllerContext для получения текущего значения Context
+ это работает
+* прибраться в коде
+* выводить все ключи
+
+09.02: 50
+
+* проверить передачу контекст через шуд
+* проверить получение значения поля из шуда
+ всё вспотыкается об крайне неудобно сделанные типы
+
+08.02: 100
+
+* изучить NodeGui?
+ как-будто это подрывает смысл весь нативности
+ ведь пусть хоть Qt и нативный, но приложение-то уже ненативное
+ поэтому пока нет смысла изучать, я этим не продвину нативность
+ а мне как раз надо доказать нативность
+* спросить у команды Kotlin показать, как callback передать
+ https://youtrack.jetbrains.com/issue/KT-84169/How-to-register-a-C-C-callback-into-Kotlin-dynamic-library
+* изучить использование С в KMP
+ https://kotlinlang.org/docs/mapping-primitive-data-types-from-c.html
+ возможно, тут будет ответ на callback
+ https://youtrack.jetbrains.com/issue/KT-43978/koltin-native-Dynamic-Library-how-to-override-a-fun
+ нашёл тут наводку
+ удалось вызвать простой callback
+* вернуть void()
+* добавить registerFieldCallbackC без параметров
+* ввести CLDController.currentContext и достать значение Context
+ не удалось: segfault
+
+07.02: 100
+
+* создать заготовку BudgetComponent
+* ввести data class Item и попробовать достучаться до него
+ или функцию вызвать свободную вызвать для начала
+ вроде createBudgetContext()
+ удалось получить доступ к Item.x (как get_x)
+* достучаться до CLDController
+* бегло ознакомиться с NodeGui
+
+06.02: 55
+
+* не удаётся создать экземпляр CLDController
+
+05.02: 60
+
+* установить доппакеты
+ bzip2 tar gcc make perl git
+* установить guest additions
+ не получилось с первого раза
+ может, и нафиг?
+ но тогда я ключи не передам без SharedFolders
+ итог: установил после установки доппакетов
+* скопировать ключи проекта
+ доступа до git.hi-tech.org нет
+ так что ключи не помогли
+* установить java
+ sudo apt install default-jdk
+* склонировать проект
+ Android Studio не нужно
+ скопировал архив tar руками через Shared folders
+* изучить ошибку запуска kom/util/gen-entities
+ исправил двумя правками
+
+04.02: 35
+
+* сделать sdk-mac-x64
+
+03.02: 50
+
+* сделать ver-mac-x64 hw gbmac
+
+02.02: 40
+
+не сделал для статьи:
+* ответить на критику из статьи Flutter vs KMP
+ https://habr.com/ru/companies/friflex/articles/839646/
+* ответить на страхи
+ я останусь без работы, если кто-то сможет делать мою работу
+* пример статьи со схлопыванием куска кода
+* страхи
+ надо ж переходить
+ а это тоже не просто
+ да, надо, это не палочка выручалочка
+* узнать версию Qt свою
+ 6.9.1
+* установить Qt 6.10.1
+ brew install qt
+* исправить ошибку AGL not found на Xcode 26
+ установка Qt 6.10.1 помогла
+* запустить qt-kt
+
+28.01: 230
+
+* написать статью
+ для тех кто в танке
+ КМП?
+ архитектура
+ шаблон проектирования CSE
+ как выглядит процесс
+ расчёты
+ ускорение вторичного написания кода
+ единые баги логики на разные платформы
+ единое поведение на все платформы
+* посчитать объём общего кода и разного
+* посчитать скорость дублирования функциональности из Android в iOS
+ первичный код - запись: 17 мин
+ дублированный код - запись: 7 мин
+ это около 41% от времени
+ т.е. экономия времени - 59%, т.е. в два раза тупо эффективнее
+ для того человека, который уже писал этот код и знает его досконально
+ для новичка, думаю, результат будет иной
+* посчитать разницу в объёмах кода первоначального и дублированного
+* подготовить статью на основе видеозаписей по git-budget
+
+* добавить спойлер в вводную
+ можно сэкономить X времени
+* описать GitBudget
+ √ описать кратко проект
+ √ сделать фотку внешнего вида на Android + iOS
+ √ описать UX
+ показать картинку со структурой мобильного приложения из презентации
+ перейти на GitBudget
+* занести в таблицу объём кода по группам
+* показать реализацию фичи кнопки вставки на Android и iOS
+* аналитику расписать
+ время
+ строк кода
+ и т.п.
+* выводы написать
+* завести репозиторий для видео сайта
+ чтобы не потерять их через несколько лет
+ ведь я их просто кладу на хостинг
+ а в какой-нибудь год просто забуду заплатить
+* убрать ссылку в GitHub на kornerr.ru/git-budget
+* обновить README GB
+ надо убрать старое описание
+ и вставить новую фотку Android + iOS
+* повторно прочитать статью
+* опубликовать на хабре
+ https://habr.com/ru/articles/989286/
+* подготовить письмо
+* отправить письмо
+* уведомить всех получателей о письме
+
+28.01: 90
+
+* создать проект с видеофайлами
+ https://github.com/kornerr/ruvid
+* обрезать видео инцидента с MAX
+ 00:53
+
+28.01: 30
+
+* переписать вводную
+
+27.01: 55
+
+* переименовать статью
+ Что нам стоит на КМП построить?
+* описать текущее положение дел
+
+26.01: 60
+
+* найти статьи про КМП на хабре
+ понять наполнение
+* создать первую версию вводной
+ https://habr.com/ru/articles/989286/
+
+25.01: 55
+
+* повторить вставку morning balance с Cursor для Android
+ вставляет в поле
+ но логика не пересчитывается
+* повторить вставку morning balance с Cursor для iOS (без кода до)
+ вставляет в поле
+ но логика не пересчитывается
+* повторить morning balance c Cursor для iOS именно с промптом продубировать функциональность, которую добавил для Android с пояснением про вставку
+ это получилось как-будто 1-в-1
+ типа Cursor чего-то может понять про копии
+ это даёт какую-то надежду
+* конвертнуть записанные видео с ИИ в MP4
+
+24.01: 30
+
+* оформить ЗС
+ https://github.com/kornerr/git-budget/pull/9
+* влить ЗС
+* продублировать копирование из буфера в morning balance для iOS под запись
+* оформить ЗС
+ https://github.com/kornerr/git-budget/pull/10
+* влить ЗС
+* видео ios: ~/gbart
+
+23.01: 30
+
+* оформить ЗС
+ https://github.com/kornerr/git-budget/pull/8
+* влить ЗС
+* сделать копирование из буфера в morning balance для Android под запись
+ видео: ~/gbart
+
+22.01: 40
+
+* README: Long, Double
+* обновить версию до 1.3.0
+* обновить changelog
+* оформить ЗС
+ https://github.com/OGStudio/cross-language-dialect/pull/12
+* влить ЗС
+* сделать копирование из буфера в spent
+* сделать копирование из result в буфер
+* подключить функциональность из gb в iOS
+
+21.01: 30
+
+* сделать Swift extension для возможности вызвать budgetCtrl().set(x, y) без label
+ работает
+* заполнить setupShoulds
+* передать inputSpent
+* передать inputMorningBalance
+* передавать result
+* заполнить setupEffects заготовкой
+
+20.01: 30
+
+* исправить weekday, чтобы reportedWeekday был 7, а не 1
+* добавить registerCallback для отладки
+
+19.01: 40
+
+* создать заготовку компонента budget в iOS
+* реализовать budgetReportedDate()
+* реализовать budgetReportedWeekday()
+
+18.01: 30
+
+* собрать проект с подключенной либой gb
+* вызвать simplyPrint в iOS
+* перенести функции в gb
+
+18.01: 50
+
+* досоздать заготовку build.gradle.kts
+* создать заготовку ver-sdkios
+* переименовать ver-sdkios -> sdk-ios
+* сделать скрипт util/gen-ios
+ √ сборка
+ √ архивирование
+
+17.01: 40
+
+* доверстать заготовку интерфейса
+ два поля ввода
+ текстовый результат
+ кнопки для буфера
+
+17.01: 35
+
+* сверстать поле ввода spent с кнопкой
+
+16.01: 40
+
+* долг:
+ entities.yml: удалить copyResult
+ это didClickCopy ведь уже
+* создать заготовку приложения на iOS по примеру песочницы
+* оформить ЗС
+ https://github.com/kornerr/git-budget/pull/7
+* влить ЗС
+
+16.01: 35
+
+* создать ЗС
+ [GigaIDE AI version]
+ до изменений paste
+* повторить копирование в буфер через Giga IDE
+ не удалось
+ ибо не работает агент
+
+15.01: 45
+
+* уведомить о факте копирования
+ на моём Samsung это и так происходит
+ ГигаЧат сказал, что и многие другие производители отображают уведомление на копирование в буфер
+ итог: не надо ничего показывать дополнительно
+* создать новую ветку для ЗС с помощью Cursor
+* продублировать копирование в буфер с помощью Cursor
+* оформить ЗС cursor
+* оформить ЗС ручной
+* влить ЗС ручной
+* скачать Giga IDE
+
+15.01: 35
+
+* оформить ЗС ручной
+* влить ЗС ручной
+* включить запись
+* добавить кнопку копирования в буфер
+* сделать копирование результата в буфер руками
+ https://stackoverflow.com/questions/19253786/how-to-copy-text-to-clipboard-in-android
+
+14.01: 40
+
+* оформить ветку, но не сливать её
+ https://github.com/kornerr/git-budget/pull/2
+* сделать руками вставку в буфер
+ тоже под запись
+ замерить время
+ вышло 40 минут
+ а с cursor AI было 40 минут второй части + сколько в первой
+ т.е. никак не быстрее
+ как минимум то же время
+ но в голове меньше мыслей было
+ а по факту было больше review
+ и меньше внимательности
+ ибо я пропустил в review, что нужно было didClickPaste вместо pasteSpent
+
+14.01: 40
+
+* исправить работу с inputSpent, pastedSpent
+ надо ввести shouldResetSpent
+ spent на основе inputSpent и pastedSpent
+ после чего убрать из shouldResetResult весь блок if с вызовом budgetCtrl()
+ ибо внутри should нельзя вызывать эффекты вроде budgetCtrl()
+* исправить задание значения для vm.inputSpent из spent при отличии
+ cursor неверно выбрал поле и не так написал эффект
+* проверить отображение pasted spent в поле ввода
+ и что нет цикла после задания inputSpent руками
+ цикла нет
+ отображение есть
+ вставка из буфера произошла успешно
+
+13.01: 40
+
+* оформить ЗС
+ https://github.com/kornerr/git-budget/pull/1
+* влить ЗС
+ перед Cursor AI
+ обязательно
+ иначе потом ничего не видно будет по комитам
+* сделать вставку из буфера
+
+13.01: 45
+
+* сделать budgetReportedWeekday()
+ использовать LocalDate
+ оно больше подходит, чем Calendar
+ https://stackoverflow.com/questions/38739983/calendar-set-day-of-week-not-correct
+* передавать значения по умолчанию
+* сделать подсчёт строки результата
+* (практически) сравнять функциональность W и A
+
+12.01: 45
+
+* добавить Scaffold
+ как-будто из-за его отсутствия может быть чёрная штука вверху при выборе поля
+ не использовать modifier из Scaffold
+ использовал - помогло
+* сделать два поля ввода
+* сделать budgetReportedDate()
+
+12.01: 40
+
+* переименовать Playground -> Budget
+* сверстать интерфейс с двумя полями ввода и одним выводом
+
+11.01: 35
+
+* влить ветку budget на сайте
+ чтобы можно было добавить cv/ files
+* запустить заготовку в Android Studio
+ запустилось
+* создать util/do-tmux
+* вернуть и перегенерить cld/*
+
+11.01: 40
+
+* обработать файлы первого уровня
+* обработать уровень app
+* обработать уровень app/src/main
+* обработать уровень app/src/main/res
+* обработать уровень app/src/main/kotlin
+
+10.01: 25
+
+* найти репозиторий старого git budget
+ https://github.com/kornerr/git-budget
+ его и возьму
+* найти эталон по UI для бюджета
+ вот этот сайт плюс-минус на мой уровень
+ https://costtrack.app/
+ общий список прилложений по бюджетированию
+ https://t-j.ru/short/all-budget-apps
+ итог
+ эталона нет
+ почти все приложения уродливые
+ так что я могу делать свою уродливую версию
+ а там уже посмотрим
+
+09.01: 35
+
+* определять weekday / weekend
+* считать перерасход
+* считать 'осталось Р/д' для будней
+
+09.01: 30
+
+* обдумать создание отдельного приложения
+ уже без JS
+ либо забить на буфер пока что
+ но потом всё равно хочется его иметь
+ либо всё-таки приложение
+ тогда и гит чисто для бюджета будет смотреться логичнее
+ да и просто как пример приложения-доказательства выглядит лучше
+ создать надо, но в следующей итерации
+ прямо сейчас мне полезнее подсчёт, а не форма
+ итог:
+ потом -да, сейчас - нет
+* убрать pre
+ кнопки буфера можно оставить, они ведь в браузере работают
+* считать целевой утренний баланс
+
+08.01: 45
+
+* изучить отсутствие вставки из буфера в WebView
+ Uncaught (in promise) NotAllowedError: Failed to execute 'readText' on 'Clipboard': Read permission denied.
+ после ввода WebCC ничего не изменилось
+ onPermissionRequest не вызывается
+ короче, это прям проблема на WebView
+ так что аналог электрона - это прям сильно упорото будет
+ в JS стопицот вещей иначе работают
+ их тупо невозможно поддержать
+ гораздо проще КМП
+
+08.01: 45
+
+* добавить кнопку быстрой вставки из буфера в поле ввода
+* добавить кнопку быстрого копирования результата
+* сделать вставку из буфера
+
+07.01: 15
+
+* исправить форматирование даты 3.1 -> 03.01
+* учитывать отрицательный баланс
\ No newline at end of file
diff --git a/budget/article-points.md b/budget/ai-article-points.md
similarity index 73%
rename from budget/article-points.md
rename to budget/ai-article-points.md
index c609869..afd91a2 100644
--- a/budget/article-points.md
+++ b/budget/ai-article-points.md
@@ -1,3 +1,7 @@
+ознакомитья с другой статьёй про AI
+ https://kean.blog/post/experiencing-claude-code
+ возможно, толковая
+
плюсы:
хорошо описывает стуртуру кода и шаблоны используемые
хоть сам Cursor и не умеет им следовать
@@ -7,7 +11,9 @@
а в самом начале их и использовать не будешь, т.к. вроде и не нужны
но Cursor их проставил, т.к. они могут понадобиться
можно тренироваться делать review и оценивать эффективность своих советов по правкам
- писать действительно можно, но динамика не положительная
+ писать действительно можно, но скорее в момент изучения
+ когда хорошо представляешь себе результат
+ но плохо представляешь себе код
минусы:
часто ошибается и пишет код не туда, т.е. нарушает архитектуру
@@ -39,7 +45,20 @@
т.к. одна строка и сравнение на самом деле не нужно
цикла ведь нет
а это можно увидеть и почувствовать лишь при записи руками
-
+ при поиске, как сделать какую-то штуку ты НЕ наткнёшься на интересное
+ например, вот я искал про Binding
+ https://www.hackingwithswift.com/quick-start/swiftui/how-to-create-custom-bindings
+ а там ссылка была сюда
+ https://www.revenuecat.com/blog/engineering/apple-retention-messaging-api/
+ из этой ссылки я уже узнал, что в Apple есть стандарт на ответ от бэка
+ 700мс
+ теперь я могу трясти с команды бэка ответы до 700мс, ибо вот так делает Apple
+ если бы мне ИИ написал решение, я бы всего этого не получил
+ и остался бы менее просвещённым
+
+ ИИ-чат бот в FF
+ Gemini
+ Недоступен in your country, stay tuned!, лол
видео:
~/cursorai
@@ -48,7 +67,12 @@
реклама
фотки с Грокс от 14.01
реклама GigaIDE с 25% приростом производительности
+ наливатор коктейлей: https://habr.com/ru/companies/yandex/articles/985556
+ routerai: якобы x10 скорость прототипирования
+ ох, прям аккуратно вставили слово "прототипирования"
+ответы по теме AI
+ 1. https://www.linkedin.com/feed/update/urn:li:activity:7426127984128036864?commentUrn=urn%3Ali%3Acomment%3A%28activity%3A7426127984128036864%2C7427564907996278786%29&dashCommentUrn=urn%3Ali%3Afsd_comment%3A%287427564907996278786%2Curn%3Ali%3Aactivity%3A7426127984128036864%29
Философские вопросы
Если всё так радужно, то почему преподаватели курсов волшебного ИИ
@@ -72,6 +96,14 @@
за 5 минут напишет ИИ? Или за 5 минут не напишет? А за 50 минут разве
тоже не напишет? А за 50 дней тоже не напишет? Вопросы, вопросы...
+
+
+лиды:
+ из статьи про KMP сделать ссыку на AI
+ из статьи про AI сделать ссылка на KMP
+ статья KMP
+ PS: Если вы в своей компании хотите внедрить KMP для повышения производительности, то пишите в личку ;)
+
заметки с телефона
[ ] ИИ: Восхваление: https://habr.com/ru/companies/redmadrobot/articles/978112/
[ ] Вопрос по ИИ: иногда пишет не тот код, а ктоттогда этот ИИ попрпвит, если разработчик сам не знает, насколько сгенеренный код соответствует архитектуре?
diff --git a/budget/now.md b/budget/now.md
index f4fa125..b9506ba 100644
--- a/budget/now.md
+++ b/budget/now.md
@@ -1,21 +1,82 @@
НАДО:
-* исправить weekday, чтобы reportedWeekday был 7, а не 1
- в iOS monday == 2
-* добавить registerCallback для отладки
-* заполнить setupShoulds
-* заполнить setupEffects
-* подключить функциональность из gb в iOS
-* исправить -0%
-* сделать Swift extension для возможности вызвать budgetCtrl().set(x, y) без label
+* создать generator
+ тут будет лишь ver-nodejs
+ тогда, возможно, даже и смысла в ver-nodejs нет
+ да, смысла нет, это слишком важный инструмент, чтобы иметь несколько вариаций
+* создать helloworld/
+ тут уже будут ver-nodejs, ver-android, ver-ios, ver-macos-x64/arm64, ver-linux-x64, ver-windows-x64
+
+далее сначала нужно перевести на nodejs
+затем уже наварганить генерацию обёрток для C++
+ и функций в KT для получения готовых экземпляров всего
+сделать геренацию полей F по аналогии со спецструктурой YML
+ т.е. генерить спецструктуру со статическими полями?
+ это после C++ генерации станет ясно, как лучше оформить
+* отдельно сделать версию CLDController для cinterop
+ ибо по умолчанию не компилится не для C++
+ либо это отдельный файл должен быть в CLD
+ формат надо обдумать
+
* оформить ЗС
- https://github.com/kornerr/git-budget/pull/8
+ https://github.com/OGStudio/kotlin-dialect/pull/13
+* влить ЗС
+* обновить ссылку на git clone в проекте KOM для подтягивания новой версии CLDController
+ теперь это KDController
+
+
+
+
+
+* проверить ответ на YouTrack
+ в итоге я могу туда дать ссылку на свой пример
+
+* переключиться на CLD
+ можно сделать пока перевод на NodeJS
+ заодно подумать недельку о NodeGui
+
+
+* перейти на NodeGui?
+ или найти движок внутри C++/JS?
+* изучить QML + JS
+ можно ли загрузить код на Kotlin?
+
+* передать в QML budgetCtrl
+ чтобы в QML вызывать что-то вроде budgetCtrl.set("key", value)
+ хотя не факт, что можно Any передать из QML
+* оформить ЗС
+ https://github.com/kornerr/git-budget/pull/16
* влить ЗС
-* CLD:
- обновить до 1.3.0
- влить подвисший ЗС
+* после исправления CLD:
+ удалить iso установочный
+* поделитья статьёй по KMP-1 с Гришей
+* исправить -0%
+ * Android
+ * iOS
+* ответить на вопросы Олега и Ильи к статье
+
+
+ПСКОВ
+ добавить recent files
+ где-нибудь вместо File: /path
+ или сделать это выпадашкой
+ прям надо переключаться между файлами последними
+
+
+ преимущество off-line
+ никакой рекламы и отвлечения от записи мысли
+ просто запиши и не будь отвлечён
+ в отличие от записи мысли в готовящейся статье на хабре
+ там реклама отвлечёт
+ потеряешь время
+
+* iOS:
+ проверить настройку отключения вопроса вставки из буфера
+ Настройки
+ Приложение
+ Вставка из других приложений
* оформить ЗСы с ИИ
https://github.com/kornerr/git-budget/pull/2
@@ -23,7 +84,9 @@
добавить ссылки на статью
добавить ссылки на видеозаписи
-
+* записать видео процесса переноса с Android на iOS
+ копируем код как есть
+ подправяем синтаксис и вызовы API
* восстановить страницу kornerr.ru/git-budget
её же на своём сайте добавить в примеры
@@ -66,7 +129,8 @@
тогда всё лучше сходится
* тысячи форматировать доппробелами
-
+* изучить планировщики задач 2025 (топ для iPhone)
+ https://dzen.ru/a/ZshWUWbMiXuc-VFd
* сделать вставку из буфера
* сделать кнопку копирования результата
показывать уведомление о факте копирования
diff --git a/business/2026-01.md b/business/2026-01.md
deleted file mode 100644
index 78d2d27..0000000
--- a/business/2026-01.md
+++ /dev/null
@@ -1,60 +0,0 @@
-11.01: 30
-
-* пройти тест по Инглишу на HH
- попробовал C1
- не удалось
- повторить 11 февраля
-* прочитать MKCV-Brief_2019-11
- чтобы сопоставить с полной версией
- там лишь примеры и технологии
- без лишних описаний, самое то
-* прочитать МКР_2019-11
-* прочитать МКР_2021-03
-* создать заготовку нового МКР 2026-03
- https://docs.google.com/document/d/1DKlY6ObDF278sRKj138eget5NwQek-O7irH0_mlFeXI/edit?tab=t.0
-
-11.01: 35
-
-* написать первичный список нужных полномочий
-* прочитать MKCV_2019-10
-
-10.01: 60
-
-* изучить потенциал Cursor AI
- может ли оно заменить слабого программиста
- т.е. того, кому надо максимально описать задачу, чтобы получить нужный результат
- да, слабого может, но надо дотошно описывать желаемые изменения
-* расписать первичный план КМП грубо
- дублирование на Android
- дублирование на iOS
- сделать ГТО по разработке для Android: Compose (Input, Text, Button, Row, Column)
- сделать ГТО по CSE
- сделать ГТО по КМП
- заготовление списка контактов на Web
- заготовление информации о контакте на Web
- дублирование на Android
- дублирование на iOS
- комбинация для iOS Ucim
- комбинация для Android Ucim
-* составить план по КОТу для первого квартала
-
-07.01: 10
-
-* расписать R, T цели по SMART-2
-
-06.01: 110
-
-* расписать цель по SMART-1
-Научиться команде за два квартала выдавать фичи сразу и для iOS, и для Android
-Specific: не указано
-Measurable: не указано
-Achievable: не указано
-Relevant: не указано
-Time-bound: два квартала
-* расписать S и M цель по SMART-2
-Изменить процесс разработки в команде на КМП так, чтобы в 2026-м году выдавать фичи сразу и для iOS, и для Android
-* расписать A цели по SMART-2
-
-05.01: 25
-
-* подготовить и отправить КП-3: Мария Сарафанова
\ No newline at end of file
diff --git a/business/2026-02-12_Собес-ИсходныйКод.md b/business/2026-02-12_Собес-ИсходныйКод.md
new file mode 100644
index 0000000..3b83033
--- /dev/null
+++ b/business/2026-02-12_Собес-ИсходныйКод.md
@@ -0,0 +1,38 @@
+Title: Первичное собеседование
+Company: Исходный код (mos.ru, Моя Москва)
+Date: 2026-02-12
+URL: https://zoom.us/j/92528151011?pwd=CEmahrxZya91kYz6F0bIcQOECrntPc.1
+
+√ В какую команду ищете руководителя?
+ Надо командами разработки
+√ Какие команды есть?
+ 25 человек - это все-все
+ 11 всего на android, ios, web команды
+ SRUM
+ спринты 3 недели
+ daily 11:30 ежедневно
+ техрадар: обмен знаниями
+ performance review: раз в полгода
+ матрица компетенций
+ 360
+ раз в год
+√ Сколько в командах человек?
+√ Есть ли отдел аналитики?
+√ Есть ли отдел тестирования?
+√ ДМС со стоматологией
+√ Офис: ст. м. Пролетарская
+√ Время работы: 10:00-19:00
+
+* Как выглядит процесс от постановки задачи до приёмки?
+* Какая ситуация по срокам?
+* Какие сейчас есть проблемы?
+* Какие цели надо достичь мне как руководителю?
+* По ГПХ работаете?
+
+Потенциальные вопросы ко мне
+ как предотвратить выгорание команд?
+
+Прочитать про
+ матрицу компетенции
+ 360
+ сигнальная таблица
\ No newline at end of file
diff --git a/business/2026-Q1.md b/business/2026-Q1.md
new file mode 100644
index 0000000..50d2f5d
--- /dev/null
+++ b/business/2026-Q1.md
@@ -0,0 +1,195 @@
+14.02: 40
+
+* ответить Еремееву и Lycett на LinkedIn
+* спросить у Анастасии (Исходный код), что именно привело к отказу
+ чтобы, как она выразилась на созвоне, этот созвон был не зря
+ и чтобы я тоже понял, что надо поменять на своей стороне
+
+13.02: 25
+
+* освежить часть вопросов по iOS
+ остановился: 18. 🟢 В чем разница между if let и guard let?
+
+12.02: 15
+
+* проверить отклики на почте и в HH
+
+11.02: 35
+
+* обновить резюме на LinkedIn
+
+10.02: 45
+
+* частично обновить резюме на LinkedIn
+
+09.02: 20
+
+* проверить почту и отклик
+* пн: откликнуться
+ исходный код
+ https://hh.ru/vacancy/129040090
+ отметить в таблице
+
+07.02: 30
+
+* завершить Английскую версию резюме
+
+06.02: 40
+
+* составить таблицу по собесам
+ уже двоим отправил
+ надо упростить отслеживание
+ https://docs.google.com/spreadsheets/d/17nzM6tuQFQ-t1nAEQGn4UBcj5yLa9F5vzcmmF-UdjAM/edit?gid=311411124#gid=311411124
+* перевести половину резюме на Ангийский
+
+05.02: 20
+
+* добавить Redux-like arch в CV
+* почта
+* откликнуться на ООО Корпу
+ https://hh.ru/vacancy/129305916?hhtmFrom=vacancy_search_list
+ откликнулся
+
+04.02: 30
+
+* перепроверить резюме на HH
+* проверить почту GMail
+ чтобы там не было лишнего
+ отписаться
+
+03.02: 40
+
+* перенести в HH опыт разработчика-2
+* перенести в HH опыт руководителя-1
+* перенести в HH опыт разработчика-1
+
+02.02: 30
+
+* перенести в HH опыт руководителя-2
+
+01.02: 15
+
+* написать пункт про ускорение на основе данных таблицы?
+ с двузначных на однозначное по превышению сроков выпуска перешли
+ лучше про создание команды
+* записать усиление команды в момент шторма
+
+31.01: 35
+
+* изучить правила ПЭ
+* бегло ознакомиться с ПЭ: Заработок
+* бегло посмотреть ПЭ: Нетворкинг: 10%
+ остановился на https://t.me/c/2431091628/48/1985
+ это около 30/300, 10%
+
+30.01: 30
+
+* досчитать цифры по Android, iOS за 2020
+
+29.01: 30
+
+* сократить техники
+* описать технологии
+* заполнить заготовками интересное
+* досчитать цифры по Android, iOS за 2021
+
+27.01: 25
+
+* описать возврат к управлению
+ сделать самой большой секцией
+ это текущее
+* описать техники
+
+26.01: 35
+
+* описать возврат к разработке
+
+25.01: 40
+
+* дописать до первого руководства включительно
+
+24.01: 30
+
+* vps: влить ветку 25K4
+* vps: создать ветку 26k1
+* vps: продублировать файлы cv из github на сайт
+ в www/cv
+ а потом в publish.prod сделать symlink
+* сделал новую заготовку дя резюме
+
+23.01: 40
+
+* заполнить ios за 2024, 2023
+* заполнить android за 2024, 2023
+
+22.01: 30
+
+* заполнить desktop 25
+ https://wiki.iva.ru/spaces/IVCS/pages/165708340/IVCS+Desktop.+Version+25.0
+* заполнить desktop за 2024, 2023
+
+21.01: 30
+
+* составить таблицу дат выпусков по фронтам за 2025-й
+ сделал android, ios, web
+
+11.01: 30
+
+* пройти тест по Инглишу на HH
+ попробовал C1
+ не удалось
+ повторить 11 февраля
+* прочитать MKCV-Brief_2019-11
+ чтобы сопоставить с полной версией
+ там лишь примеры и технологии
+ без лишних описаний, самое то
+* прочитать МКР_2019-11
+* прочитать МКР_2021-03
+* создать заготовку нового МКР 2026-03
+ https://docs.google.com/document/d/1DKlY6ObDF278sRKj138eget5NwQek-O7irH0_mlFeXI/edit?tab=t.0
+
+11.01: 35
+
+* написать первичный список нужных полномочий
+* прочитать MKCV_2019-10
+
+10.01: 60
+
+* изучить потенциал Cursor AI
+ может ли оно заменить слабого программиста
+ т.е. того, кому надо максимально описать задачу, чтобы получить нужный результат
+ да, слабого может, но надо дотошно описывать желаемые изменения
+* расписать первичный план КМП грубо
+ дублирование на Android
+ дублирование на iOS
+ сделать ГТО по разработке для Android: Compose (Input, Text, Button, Row, Column)
+ сделать ГТО по CSE
+ сделать ГТО по КМП
+ заготовление списка контактов на Web
+ заготовление информации о контакте на Web
+ дублирование на Android
+ дублирование на iOS
+ комбинация для iOS Ucim
+ комбинация для Android Ucim
+* составить план по КОТу для первого квартала
+
+07.01: 10
+
+* расписать R, T цели по SMART-2
+
+06.01: 110
+
+* расписать цель по SMART-1
+Научиться команде за два квартала выдавать фичи сразу и для iOS, и для Android
+Specific: не указано
+Measurable: не указано
+Achievable: не указано
+Relevant: не указано
+Time-bound: два квартала
+* расписать S и M цель по SMART-2
+Изменить процесс разработки в команде на КМП так, чтобы в 2026-м году выдавать фичи сразу и для iOS, и для Android
+* расписать A цели по SMART-2
+
+05.01: 25
+
+* подготовить и отправить КП-3: Мария Сарафанова
\ No newline at end of file
diff --git a/business/cv-ideas.md b/business/cv-ideas.md
index 0525f32..76c69dd 100644
--- a/business/cv-ideas.md
+++ b/business/cv-ideas.md
@@ -1,3 +1,12 @@
+
+Простая экономика
+ 20-е марта
+ about:config
+ dom.event.clipboardevents.enabled
+
+
+
+
* Могу придумывать систему
Пример: задание оценить способность Cursor AI ускорить разработку
diff --git a/business/now.md b/business/now.md
index 78a31d2..6e18c39 100644
--- a/business/now.md
+++ b/business/now.md
@@ -1,24 +1,76 @@
НАДО:
-* продублировать файлы cv из github на сайт
-* переиначить текущую заготовку про прошлое
- схлопнуть в секции
- управление (ещё нет, надо написать)
- разработка
- управление
- разработка
-* освежить SCRUM
- https://habr.com/ru/articles/825354/
+* на LinkedIn ответить, что мне интереснее управление командой
+ √ Сергею Еремееву
+ √ Robert Lycett
+ Anastasiya Sundeeva
+
+* написать копию статьи про КМП на English в LinkedIn
+ сделать на неё ссылку с хабра для тех, кому нужен English
+ сделать из статьи LinkedIn ссылку на статью на Хабре
+ из неё сделать ссылку на ТГ канал @kotlindialect
+* написать Леониду Слепхину (LinkedIn)
+ после публикации статьи KMP на Английском в LinkedIn
-* составить таблицу дат выпусков по фронтам за 2025-й
- чтобы понять, на каком мы месте были
-* составить таблицу дат выпусков за 2024-й
-* составить таблицу дат выпусков за 2023-й?
+* освежить крупными мазками с вопросами-ответами по iOS
+ https://github.com/vyachesIavskiy/iOS-Interview-Questions
+ продолжить: 18. 🟢 В чем разница между if let и guard let?
+
+после 11 февраля:
+ повторить тест по Инглишу на C1
+
+* ознакомиться отдельно со structured concurrency
+ actor
+ Sendable
+ найти статью исчерпывающую
+* ознакомиться с
+ Big-O notation
+ как оптимизировать время компиляции программы
+ как оптимизировать время запуска программы
+
+* проверить отклики на почте и в HH
+
+
+
+* перепроверить задание от Сани Некрасова от 2020-го?
+ уже нет смысла
+ я ж не прогером хочу быть
+* ответить Сане на его публикацию об ИИ своей
+ https://www.linkedin.com/posts/aleksandr-nekrasov_2025-key-takeaways-ai-still-cant-reliably-activity-7425753210319036416-u2sn?utm_source=share&utm_medium=member_desktop&rcm=ACoAAAdqeucBN55Ve2Lq5eMSZiIkc_pDn270344
+* спросить у Сани о вакансиях development team lead
+
+* отклинуться
+ sber user
+ https://hh.ru/vacancy/130219025?hhtmFromLabel=suitable_vacancies&hhtmFrom=negotiation_list
+
+* записаться на семинар Liquid Glass
+ https://developer.apple.com/events/view/QGV7T9L3L8/dashboard
+* посмотреть ПЭ: Нетворкинг
+ продолжить c https://t.me/c/2431091628/48/1985
+
+* подготовить текст о себе в ПЭ: Нетворкинг
+
+
+
+* написать текст для потенцильного техсобеса, почему нет особого смысла, почему вопросы технические имеют мало смысла
+ предложить определиться здесь, подходим ли мы друг другу
+ для этого надо немного скорректировать формат собеса
+ что скажешь?
+ прежде всего факты
+ убрал созвоны daily - ничего не ухудшилось
+ убрал обязательное review - тоже
+ но это сильно радикально, только в крайнем случае рассказывать
+ цель не в том, чтобы никого не пущать
+ цель в том, чтобы сделать работу эффективнее
+ а для надо и пущать, и быть гибче
+ не отвергать по своему мнению,
+ а делать пилотные проекте и принимать решение лишь с цифрами в руках
+ привести пример с представителями гибдд
* составить CV
выкладки по пользе от KMP в цифрах не писать
@@ -26,9 +78,21 @@
сначала не публичить своё резюме
попробовать пару собесов по своему таймингу
перешёл на Android для понимания среды
+ добавить ссылки на 2 статьи хабра (будущие)
+ пример работы с ИИ с аналитикой
+ пример KMP с аналитикой
-11 февраля:
- повторить тест по Инглишу на C1
+
+* освежить SCRUM
+ https://habr.com/ru/articles/825354/
+
+* освежить знания про архитектуру
+ см личку в ТГ
+ has_a, is_a
+
+* дополнить таблицу дат выпусков по фронтам за 2025-й
+ * заполнить web за 2024, 2023
+ * заполнить ios, desktop за 2022
* составить план по Бюджету и ПСКОВу для первого квартала
* составить план по Делу для первого квартала
diff --git a/cursorai/now.md b/cursorai/now.md
index 3ad01be..bb2a41a 100644
--- a/cursorai/now.md
+++ b/cursorai/now.md
@@ -19,4 +19,23 @@
После конкретного вопроса про CLD исправися
Не смог найти ответ на вопрос "How to run the project"
Но смог на "How to launch PSKOV"
-
\ No newline at end of file
+ Психологически не ты сам пишешь код, а машина
+ хотя по факту времени тратишь столько же
+ т.е. выигрыша по времени нет
+ а проигрышь по ownership есть
+ ownership очень важно для собственнго развития
+ чтобы не быть арендатором лишь
+ Скептицизм
+ > Configure project :app
+w: file:///Volumes/MOE/p/kom/ver-android/app/build.gradle.kts:24:9: 'jvmTarget: String' is deprecated. Please migrate to the compilerOptions DSL. More details are here: https://kotl.in/u1r8ln
+ Если все умеют в суперумный ИИ, то чего же он не может такую простую ошибку исправить?
+
+
+
+ Философия
+ ИИ - это проекция собственных знаний и ошибок
+ ИИ - это просто классный автомобиль, не более, он не знает, не хочет и ему не нужно
+ никуда ехать без водителя
+ это не замена человека
+
+
\ No newline at end of file
diff --git a/kmp/2026-Q1.md b/kmp/2026-Q1.md
new file mode 100644
index 0000000..9045b54
--- /dev/null
+++ b/kmp/2026-Q1.md
@@ -0,0 +1,406 @@
+https://jira.iva.ru/browse/VCSMOB-13473
+[KMP] Отображать аватарки
+
+12.02: 155
+
+* изучить про AsyncImage
+ https://swiftwithmajid.com/2021/07/07/mastering-asyncimage-in-swiftui/
+ нет возможности задать заголовки HTTP
+ хотя я ведь могу для всех сессию задать!!
+ нет, в shared URLSession нет возможности настройки
+ возможно, это намеренно
+* изучить Kingfisher вместо AsyncImage
+ https://stackoverflow.com/a/79837058/3404710
+ kingfisher может конфликтовать
+ попробую сначала Nuke
+ он очеть похож на то, что можно делать на Android
+* изучить библиотеку для отображения картинок в One
+ Nuke
+ вроде есть возможность задать заголовки
+* проверить текущее состояние приложений
+ заметил лишь добавление вёрстки экрана информации о контакте на Android
+* проверить изменения в ava* с моего влития
+ onPainterLoaded
+ спросил у Дениса, зачем нам это надо
+ видимо, опять какая-то неясная экономия и оптимизация
+* добавить зависимость Nuke
+* отображать квадратные изображения в iOS
+* привести изображение к круглому виду
+* завязать на состояние загрузки
+* починить расширение изображения
+
+11.02: 105
+
+* отобразить заготовки аватарок в iOS
+* отобразить заглушки в iOS
+* вынести contUI.swift
+ после подлития main
+ ибо сильно крупный шаг
+* оформить ЗС
+ https://git.hi-tech.org/ivasdk/kom/-/merge_requests/37
+* сообщить о ЗС
+Сливаю ЗС об отображении заглушек аватарок на iOS: https://git.hi-tech.org/ivasdk/kom/-/merge_requests/37
+√ 583, main, >=2
+* влить ЗС
+* записать в таблицу
+
+10.02: 190
+
+* переиспользовать ЗС
+ https://git.hi-tech.org/ivasdk/kom/-/merge_requests/27
+* ввести mutableState для ав
+ чтобы из VM получать флаг для отображения заглушки в нужный момент
+ avaShouldResetPlaceholderVisibility
+* отображать заглушку
+ лишь до успешной загрузки
+ лишь на неудачную загрузку изображения
+* сделать цветовую заглушку по известным функциям
+* сделать инициалы
+* починить отображение авы в списке чатов
+ нужна Session? ибо 403 возвращает сервер
+ поправил
+* проверить iOS
+* оформить ЗС
+ https://git.hi-tech.org/ivasdk/kom/-/merge_requests/27
+* сообщить о ЗС
+Сливаю ЗС об отображении заглушек аватарок на Android: https://git.hi-tech.org/ivasdk/kom/-/merge_requests/27
+√ 262, main, >=2
+* влить ЗС
+* добавить в таблицу
+
+09.02: 150
+
+* починить загрузку аватарок после изменений Ильи
+ что-то поменялось сильно
+ теперь нихера нет контактов именно в моей сборке
+ у Ильи есть
+ надо сделать заново на основе последних изменений
+ это как-будто дешевле всего
+ т.е. нужен новый ЗС
+ этот позже переиспользую
+* повторить частичный накат
+ √ util/other
+ √ README
+ √ ava.kt
+ √ avaUI.kt
+ √ const.kt
+ √ other.kt
+ √ gradle
+ ~ entities.yml
+* восстановить иконку в списке контактов
+* проверить работопособность в iOS
+* оформить ЗС
+ √ описать изменения gen-entities
+ √ упомянуть о рассмотрении Glide
+ √ упомнять об avaUI
+ https://git.hi-tech.org/ivasdk/kom/-/merge_requests/16
+* сообщить о ЗС
+Сливаю ЗС об отображении аватарок в списке контактов на Android: https://git.hi-tech.org/ivasdk/kom/-/merge_requests/16
+√ 219, main, >=2
+* влить ЗС
+* отметить ЗС в таблице
+* сообщить Денису о починке cld translator и необходимости ручных изменений для этого
+* восстановить иконку в инфе о выбранном контакте
+* вынести contUI.kt
+* подлить main
+* оформить ЗС
+ ~ сообщить Олегу убрать шуды на каждое поле контакта
+ https://git.hi-tech.org/ivasdk/kom/-/merge_requests/28
+* сообщить о ЗС
+Сливаю ЗС об отображении аватарки в инфе о контакте на Android: https://git.hi-tech.org/ivasdk/kom/-/merge_requests/28
+√ 278, main, >=2
+* влить ЗС
+* отметить ЗС в таблице
+
+07.02: 90
+
+* ввести в VM contInfoItem
+* добавить аву в инфу о контакте
+* добавить аву в список чатов
+
+06.02: 190
+
+* проверить запуск KOM на Xcode 13 на 10.12.2.184
+ kotlin 2.1.21
+ json 1.8.0
+ xcodegen 2.35.0
+ не удалось в Package.swift сослаться на zip xcframework
+ хотя вроде как должно было бы работать в Xcode 13
+ не выгорело: 1.5 часа потратил
+* починить CLD tr на Linux
+ 1. надо поменять руками для CLD tr версию java version с 8 на 21
+ сделать патч по версии java?
+ да не, пусть руками, это один раз же
+ в будущем надо переделать translator на nodejs
+ но это потом
+ написать в README KOM заметку для CLD в Linux
+ 2. далее sed -i.backup + rm $file.backup
+* ознакомиться с примером AvatarLoader + Compose от Дениса
+ не очень понятно
+ смущает @OptIn и странная ситуация с API в Glide
+ итог: попробую Coil
+* изучить загрузку картинок в Compose по URL
+ тут вся суть Session на сервер отправить
+ без него не будет картинки
+ Coil выглядит приятнее, чем Glide
+ хотя по факту работает и так
+* добавить зависимость Coil
+* отобразить картинку в Compose
+ https://ivcs.hi-tech.org/services/resource?resourceId=e64bf0bf-442b-4370-894a-8f7f827c7866&width=100
+* закруглить изображение
+* сделать заглушки-изображения?
+ это уже можно не мне
+ хотя у нас же заглушка-текст по ivac!
+ тогда мне
+* заменить ContItem.avaId -> avaURL
+* отследить неудачную загрузку авы
+ onError
+* улавливать состояние загрузки
+ onState
+* создать компонент аватарок
+
+05.02: 140
+
+* создать ветку по авам
+* изучить Glide и Coil
+ https://bumptech.github.io/glide/int/compose.html
+ https://coil-kt.github.io/coil/compose/
+ * узнать URL запроса в Ucim/Ava
+ ИГР Shortcuts.loadRI url: 'https://ivcs.hi-tech.org/services/resource?resourceId=e64bf0bf-442b-4370-894a-8f7f827c7866&width=100'
+ ИГР ImageCS.retrieve url/token: 'Optional(https://ivcs.hi-tech.org/services/resource?resourceId=e64bf0bf-442b-4370-894a-8f7f827c7866&width=100)'/'8ccabf0b-73ed-43c3-add7-969b9c727f05'
+ * определиться с заголовками
+ Серёга сказал, что Session нужно отправлять
+* скачать Ubuntu 25.10
+
+===
+
+https://jira.iva.ru/browse/VCSMOB-13464
+[KMP] Создать заготовку информации о контакте для Android
+
+04.02: 130
+
+* создать ветку
+ andinf
+ сделал
+* добавить /* 1 */ в if своих шудах в контактах
+ забыл первоначально
+* восстановить упущенные Ильёй поля в
+ стоп, подлить от Ильи сначала ветку
+ да, Илья исправил
+ мне не надо восстанавливать
+* улавливать выбор контакта
+* отображать экран-заглушку
+* возвращаться назад
+* переименовать ContactInfo -> Info
+* локализовать confInfoTitle
+ как раз в эффекте contLocalize
+* отображать имя выбранного контакта
+* оформить ЗС
+ https://git.hi-tech.org/ivasdk/kom/-/merge_requests/10
+* сообщить о ЗС
+Сливаю ЗС об отображении заготовки информации о контакте: https://git.hi-tech.org/ivasdk/kom/-/merge_requests/10
+√ 163, main, >=2
+* влить ЗС
+* отметить ЗС в таблице
+
+===
+
+https://jira.iva.ru/browse/VCSMOB-13334
+[KMP] Создать заготовку списка контактов
+
+03.02: 270
+
+* создать ветку
+ paste
+* сделать значения по умолчанию для хоста для Android
+ чтобы достаточно было нажать на кнопки Далее без ввода
+ делать по аналогии с вводом в GitBudget через Paste
+* переименовать DBGFillHostInput -> DBGHost
+* продублировать для iOS
+ надо замутить свой Binding как-будто, чтобы разделить getter и setter
+ https://www.hackingwithswift.com/quick-start/swiftui/how-to-create-custom-bindings
+* оформить ЗС
+ √ фотки переделать
+ √ записать видео
+ https://git.hi-tech.org/ivasdk/kom/-/merge_requests/6
+* сообщить о ЗС
+Сливаю ЗС об отладочной кнопке заполнения поля ввода хоста: https://git.hi-tech.org/ivasdk/kom/-/merge_requests/6
+√ 127, main, >=2
+* влить ЗС
+* отметить в таблице КЗС
+* Илья:
+ выдать кнопку заполнения username/password
+* создать ветку
+* разобраться с двойной передачей login из AC в CC
+ два раза был вызов MainComponent.setupEffects
+ закомментировал
+* сделать запрос контактов
+* разобраться с ошибкой запроса контактов
+ loadURL без установки заголовков ещё
+ добавить
+* разбирать контакты
+* отображать заглушки контактов
+* отображать список контактов с настоящими именем и почтой
+* оформить ЗС
+ https://git.hi-tech.org/ivasdk/kom/-/merge_requests/8
+* сообщить о ЗС
+Сливаю ЗС об отображении заготовки списка контактов на Android: https://git.hi-tech.org/ivasdk/kom/-/merge_requests/8
+√ 193, main, >=2
+* влить ЗС
+* отметить в таблице КЗС
+
+02.02: 130
+
+* отображать заглушку списка контактов на Android
+* продублировать заглушку списка контактов на iOS
+* оформить ЗС
+ https://git.hi-tech.org/ivasdk/kom/-/merge_requests/5
+* сообщить о ЗС
+Сливаю ЗС о создании заглушки списка контактов: https://git.hi-tech.org/ivasdk/kom/-/merge_requests/5
+√ 473, main, >=2
+* влить ЗС
+* отметить в таблице КЗС
+
+===
+
+https://jira.iva.ru/browse/VCSMOB-13302
+[KMP] Создать заготовку авторизации для iOS
+
+27.01: 170
+
+* создать заготовку экрана логина
+* сообщать об ошибке логина/пароля
+* добавить Starscream
+* добавить websocket на основе Starscream
+ https://dev.to/fassko/websockets-in-ios-using-swift-276l
+* подключиться к WS
+* ознакомитья с Task
+ https://habr.com/ru/articles/762148
+* восстановить пинги
+ тут как раз нужен Task sleep
+* A: вынести resetWebSocket в эффекты
+* продублировать авторизацию для iOS
+* README: отметить авторизацию iOS
+* обдумать внутреннюю статью про KOM
+ хотя внутреннюю статью как-будто публиковать-то и нельзя
+ ведь на KOM добро не все давали
+ можно ли рассмотреть этой статьёй основные моменты с тем,
+ чтоб потом быстрее написать про git-budget?
+ итог: нет смысла, лучше время на код потратить
+* сделать видеозапись
+ ввести неверный хост
+ увидим алёрт
+ ввести верный хост
+ передём на логин пароль
+ ввести неверные логин и пароль
+ увидим алёрт
+ ввести верные логин и пароль
+ увидим пустое окно
+* подготовить видеодемонстрацию
+* оформить ЗС
+ https://git.hi-tech.org/ivasdk/kom/-/merge_requests/4
+* влить ЗС
+
+26.01: 185
+
+* создать заготовку sdk-ios
+* сделать заготовку скрипта gen-ios
+* создать заготовку ver-ios
+* сделать видеодемонстрацию
+ показать util/gen-ios
+* оформить ЗС
+ https://git.hi-tech.org/ivasdk/kom/-/merge_requests/3
+* влить ЗС
+* создать заготовку экрана хостов
+* придать вид карточки
+* добавить тень
+* делать запрос
+* сообщать об ошибке хоста
+* скрывать экранр хоста после успешного ввода
+
+===
+
+https://jira.iva.ru/browse/VCSMOB-13212
+[KMP] Создать заготовку авторизации для Android
+
+24.01: 100
+
+* перенести UI авторизации
+* перенести VM авторизации
+* перенести auth/Fun.kt
+* исправить невозможность сделать запрос
+ вернуть serialization plugin
+* перенести авторизацию для Android
+* записать видео авторизации
+ ввести неверный хост
+ увидим алёрт
+ ввести верный хост
+ передём на логин пароль
+ ввести неверные логин и пароль
+ увидим алёрт
+ ввести верные логин и пароль
+ увидим пустое окно
+* подготовить видео с титрами
+* оформить ЗС
+ https://git.hi-tech.org/ivasdk/kom/-/merge_requests/2
+ добавить видео
+* влить ЗС
+
+23.01: 45
+
+* исправить генерацию entities.kt
+ обновить и пересобрать cld
+* копировать CLDController/Context из CLD в Android
+* перенести CLD
+ entities.yml
+ √ отметить /*@JsExport*/
+ √ добавить клонирвание translator куда-нибудь в ~/iva-smth
+ √ сделать запуск translator из ~/iva-smth
+ √ заменить generate-entities на какой-либо один скрипт в util/
+ причём его надо будет вызывать всегда для всех платформ
+* кратко описать CLD translator в README
+* оформить ЗС
+ https://git.hi-tech.org/ivasdk/kom/-/merge_requests/1
+* влить ЗС
+
+22.01: 75
+
+* создать репозиторий KOM
+* описать в таблице README готовую функциональность
+* генерить entities.kt в корень проекта временно
+* создать заготовку Android HW
+ на основе git-budget
+* генерить entities.kt в ver-android
+
+===
+
+https://jira.iva.ru/browse/VCSMOB-13190
+[KMP] Описать движение данных в архитектуре CSE
+
+21.01: 180
+
+* создать динамический пример движения данных архитектуры CSE
+ ~/m/p/svg
+ выдал Ване KaiSD проверить 21.01.26
+* от Вани получил следующий отзыв
+ Выглядит как пошаговый визуализатор исполнения кода,
+ но при этом разделение на блоки не очень понятно.
+ И логика движения кружка тоже.
+ Можно увидеть куда он двигался, но нельзя понять куда он должен двигаться.
+ Возможно, нужны точки соединения и линии между ними.
+
+
+20.01: 90
+
+* ознакомитья с SVG
+ https://www.w3schools.com/graphics/svg_animation.asp
+* от руки нарисовать схему с авториацией текущей
+ слева - контроллер / контекст
+ справа-вверху - шуды
+ справа-внизу - эффекты
+ полоски должны путешествовать ctx -> should -> ctx, effect -> ctx, ctx -> effect
+ полоски и будут отображать движение данных
+* найти редактор SVG
+ https://freesvgeditor.com/en/svg-editor-online
+* набросать пример
+ ~/c/svg(4).svg
\ No newline at end of file
diff --git a/kmp/abc.md b/kmp/abc.md
deleted file mode 100644
index e69de29..0000000
diff --git a/kmp/now.md b/kmp/now.md
new file mode 100644
index 0000000..c0c9bc7
--- /dev/null
+++ b/kmp/now.md
@@ -0,0 +1,76 @@
+13.02: 17:15-18:45 90
+
+* проверить тормоза без использования VM
+ для начала просто проверить тормоза без Ava.View полностью в ячейках
+ да, без lazy image то же самое еле заметно подёргивание
+* изучить изменения в ava после !34
+* подлить main
+* сделать видеозапись
+* оформить ЗС
+ https://git.hi-tech.org/ivasdk/kom/-/merge_requests/39
+* сообщить о ЗС
+Сливаю ЗС по отображению изображений аватарок на iOS: https://git.hi-tech.org/ivasdk/kom/-/merge_requests/39
+√ 57, main, >=2
+* влить ЗС
+* записать в таблицу
+* сделать отчёт в чат КМП
+ √ подготовить видео
+ √ посчитать количество сэкономленных строк кода
+ √ ввести скрипт
+
+НАДО:
+* подготовить документ с графом связей между сущностями
+* оформить ЗС
+ https://git.hi-tech.org/ivasdk/kom/-/merge_requests/43
+ тут дока больше
+* сообщить о ЗС
+* влить ЗС
+* таблица
+
+* добавить ссылки на API endpoints рядом с сущностями в YML
+* попутно удалить shouldResetInfo и соответствующие поля из ContContext
+* ввести
_ACTIVE_SHOULDS и регистрацию отладки сразу внутри Fun.kt
+* проверить гипотезу кэширования второй Ava одного запроса
+ чтобы не было двух запросов одной картинки
+
+* сделать комбинацию на Android
+
+
+* подготовить шпаргалку по Redux / CSE
+
+* ввести линтер с запретом @State и @Binding вне VM.swift
+ ввести аналогию для Android
+* проверить замену на Glide
+ именно после полной реализации на Coil
+ чтобы функционально всё удовлетворяло
+ в Android Connect ведь Glide
+ чтобы меньше трения было при добавлении
+ и без увеличения размера
+ https://bumptech.github.io/glide/int/compose.html
+
+
+* улавливать изменения в имени контакта по WS
+ это важно сделать для задания пути работы с WS
+
+* доработать локализацию до генерации нативных файлов Android
+* доработать локализацию до генерации нативных файлов iOS
+
+* добавить ширину авы в параметры Ava()
+ сейчас в инфе о контакте фотка размытая выходит
+ но тогда будет загрузка вторая
+ т.е. при переходе на контакт будет сначала видна заглушка
+ тут прям не так просто
+ надо подумать
+
+* продулировать авторизацию на Desktop
+
+для Пети:
+* описать архитектуру
+* кто за что отвечает
+
+* iOS input 2026-01-27:
+ переключаться на Return с поля username на password
+ сейчас не надо, ибо SwiftUI поднимает вьюху в свободное пространство при показе клавы
+* iOS input 2026-01-27:
+ скрывать клавиатуру на Return в поле password
+ сейчас не надо, ибо SwiftUI поднимает вьюху в свободное пространство при показе клавы