Стендап Сьогодні

Що я зробив, що я хочу зробити, і що це все значить.
Повсякденні здобутки в форматі стендапу.
Детальніше в статті

Підписатись на RSS
📢 Канал в Telegram @stendap_sogodni
🦣 @stendap_sogodni@shevtsov.me в Федиверсі

05.12.2025

Соціальні танці та життя

💃🕺 Тиждень танців закінчується. З понеділка повертаємось до простих, зрозумілих речей — інфраструктури, архітектури, програмування.

Хочу закінчити по те, як соціальні танці допомагають в житті.

Часто чоловіки уникають танців через те, що це “дівчаче заняття”. Втім, як я писав, соціальні парні танці навпаки ставлять чоловіків та жінок в суворі гендерні ролі. Ти не просто є присутнім в жіночій компанії, ти ведеш, ти ставиш тон, ти керуєш. Бути лідером в танці — це первісно маскулінне проявлення.

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

Також, зазначу, що соціальні танцюристи утворюють дуже дружні спільноти. Це особливе хобі, тут немає явної конкуренції. Зате танець — це завжди робота на двох! (Окремо стоїть сальса руеда де касіно, де взагалі всі стоять в одному колі та партнери обмінюються майже після кожного руху.) Отже, партнери дійсно потрібні один одному та зацікавлені в спільному зростанні. На тренуваннях завжди доброзичлива атмосфера.

Пишу це та збираюся на наступне тренування. Де, знаю, доведеться трохи подумати, трохи напружитися, трохи навчитися, де буде весело, буде успіх, буде радість, буде зростання, буде весело. Чудові плани на пʼятницю, хіба ні?


04.12.2025

Соціальні танці та сексуальність

Певно, такої теми ніхто не очікував на моєму каналі! Втім, я гадаю це розуміння позбавить вас деяких перешкод до захоплення танцями. Особливо чоловіків.

Коли я починав займатися соціальними танцями, то в мене на той час було дві ментальні моделі.

Перша — я танцюю з дівчиною, бо в мене є намір з нею спати. Гадаю, в більшості чоловіків саме таке ставлення до танців, якщо та коли вони вже до них доходять. Десь в клубі, на дискотеці тощо. І це цілком нормальна причина танцювати!

Але як тільки ти приходиш вчитися танцю, то ця модель терпить повний розгром, бо тобі доведеться танцювати з довгою низкою дівчат, з якими спати ти не будеш. Суто обʼєктивно.

Та на такий випадок зʼявляється друга ментальна модель — цей танець позбавлений сексуального змісту, це не більше ніж вправа. Звісно, можна й так танцювати. Але тепер ми маємо інший когнітивний дисонанс: соціальні танці сповнені сексуальності. Танцювати їх “як вправу” це як їсти кашу без масла… та без солі.

З цими двома крайностями в голові танцювати просто некомфортно. Ти постійно знаходишся в стресі: це не надто близька позиція? якщо я тримаю її рукою за голий живіт, що це каже про мої наміри? і з такими думками ти ніколи не просунешся в танцях.

Ох, багато мені було потрібно часу, щоб знайти простір посередині. Безпечний простір! Бо так, танець невідʼємно сексуальний, але ця сексуальність обмежена безпечними кордонами. Насамперед танець — це танець, та не зобовʼязує ні до чого. Та завдяки наявності цих кордонів партнери можуть розслабитися та проявляти себе впевнено та без обтяжень.

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


03.12.2025

Мова та запис танців

Всі тут знають, як я люблю вести нотатки — тож нічого дивного, що й танцювальні комбінації захотілося записувати. Але як? Я був здивований дізнатися, що гарного способу… практично немає!

Я наївно вирішив, що для танців існує щось схоже на музичну грамоту. Знайшов, наприклад, нотацію Бенеша та Лабанотацію. Але — на відміну від музичної партитури, ними практично ніхто не користується.

Зазвичай текстом танці записуються через вже відомі “примітиви”, наприклад - “базовий крок”, “хамерлок”, “болеро”. Що вони всі значать — треба, щоб тобі показали. Влучних описів “з нуля” я поки не бачив. І тут друга проблема — багато рухів не мають назви взагалі, а отже передаються суто на практиці.

Що веде мене до наступного висновку… танець не зберігається у письмовій формі! Ми можемо читати письменні твори тисячолітньої давнини, можемо відтворити музику Моцарта такою, якою вона була. А танці — ні! Всі танці, які ми знаємо, збереглися через передачу від вчителя до учня. І це, на мою думку, дуже особливо! Ти стаєш причетний до справжньої усної традиції.

(З появою відео ситуація змінилася, бо по відео вже можна спробувати відтворити танець, яким він був. Це не так легко, як здається — але принаймні можливо.)

А ще цікаво було помітити, що думати про танці це теж особливий режим. Я звик думати словами, але про танці думаєш… тілом? Це як… дізнатися, що в Вімі є не тільки режим команд та режим вставки, а ще й візуальний режим! Надихає!

(Ну й сумніваюся, що LLM на щось здатні в цій галузі. )


02.12.2025

Ведення та слідування в соціальних танцях

Якщо подивитися збоку на соціальний танець — мою улюблену сальсу, наприклад — то не є очевидним, що в танцюристів різні ролі. Обидва рухаються в музику, щось там роблять. Може в тебе є досвід клубних танців, там теж кожний танцює сам за себе, як хоче. Чи досвід будь-якого парного спорту, хай то бадмінтон чи бокс. Пара працює на спільний результат, але кожен має рівну частину відповідальності.

Коли приходиш перший раз на тренування з сальси чи бачати, це відчуття може підсилитися. Ось кроки хлопчиків, ось кроки дівчаток… Вивчили? Тепер стаємо в пару, робимо те ж саме.

Втім, це зовсім не так. В соціальних танцях є дві чітких, суворих ролі: ведучий та ведена, лідер та фоловер. Вони відрізняються не тільки кроками чи рухами — вони мають фундаментально різні задачі. Настільки різні, що партнери вкрай рідко міняються ролями — справа тут не в тому, щоб вивчити чужі рухи. Чоловіку властиво вести, а жінці — вестися. (Тут дисклеймер, що люди різні, та кожен сам обирає свою роль.)

Соціальний танець — це не синхронне плавання. Це завжди заклик та відповідь. Це дуже важливо зрозуміти, бо в цьому і є танець. Успіх танцю, задоволення від танцю не в тому, щоб гарно станцювати свою частину, а у звʼязку між партнерами та вдалому виконанню власної ролі в цьому асиметричному союзі.

Ведення — це, власне коли лідер власними рухами та жестами пояснює фоловеру, що далі робити.Хоча теоретично вести можна будь-якими рухами, на практиці існує певна “мова жестів”, в якої в кожного свій “словниковий запас”.

Отже, роль лідера - “вести”. З попередньої крайності (кожен танцює сам за себе) можна перестрибнути в протилежну — що ведення це керування рухами партнерки. Я хочу, щоб вона йшла — я її тягну. Хочу, щоб повернулася — кручу. І так далі. Таке ведення придушує потенціал фоловера. Натомість лідер власним веденням утворює простір, в якому може розкритися фоловер. До того ж вести — значить ще й вирішувати, що танцювати далі, створювати структуру танцю. (Ну й це наче очевидно, в той же ж час ти встигаєш танцювати за себе.)

Роль фоловера - “слідувати”. Хоча це звучить дуже просто (ну роби те, що тобі показують — та й усе), я до кінця не розумію, як партнеркам вдається! Почнемо з того, що слідувати — значить відповідати веденню лідера. Не робити рухів, які йдуть всупереч веденню. (Типова помилка початківця — починати власну партію ще до того, як відбулося ведення.) Але ж от в чому парадокс — ведення не задає всі рухи. Це ж навіть фізично неможливо! Натомість задача фоловера — наповнити створену лідером структуру власним стилем.

Ось так виходить воно все складно. Зі сторони й не зрозуміти.


01.12.2025

Танці — це Dark Souls соціальних активностей

💃🕺 Вітаю на Тижні Танців на моєму каналі! Цього року я перевідкрив для себе забуте захоплення — соціальні танці, а саме сальсу та бачату. Затягнути когось нового танцювати — приблизно так само складно, як переконати, що Dark Souls це не знущання з геймерів, а гра, яка здатна принести більше задоволення ніж будь-яка інша. Після періоду навчання, звісно. Але на цьому схожість соціальних танців з Dark Souls не закінчується.

🎲 Не вийде просто “лупасити по кнопках”. Як і Dark Souls, танці існують на взаємодії відчуттів та інтелекту. Кожний початий рух доведеться закінчувати. Темп, ритм, спостереження та влучно обрані рухи — головне. Як і в Dark Souls, тобі доведеться зазирати в майбутнє та бути готовим реагувати та ініціювати.

🎁 Куди б ти не пішов, завжди знайдеш щось цікаве. Прогресія в танці цілком залежить від тебе, та на кожному тренуванні та вечірці ти збираєш для себе нові елементи. Як і в Dark Souls, це не мета, а завжди присутній фактор відкриття та розвитку. В танцях приємно прийти в нову групу, бо навіть з одного заняття ти дізнаєшся щось нове.

♾️ Справжня Dark Souls починається у PVP. Справжні танці починаються в імпровізації. Так, танцювати заздалегідь підготовані та домовлені комбінації — так само задовольняє, як проходити знайомих босів знайомими тактиками. Але звільнись від того і в тобі прокинеться творчість.

🏋️ Як і в Dark Souls, ти є ключем до власного успіху. Немає нічого неможливого, втім немає й коротких шляхів. Тільки практика, тільки “git gud” перетворює танець зі стресового, гіпертривожного заняття новачка в безтурботний стан потоку. Та, чорт забирай, той стан потоку вартий, щоб за нього кілька разів повернутися до багаття!

🌞 Як і Dark Souls, танці — місце для веселої кооперації. Хоч перед кожним з нас стоїть власний шлях та власні випробування, ніхто не проходить його наодинці. (В соціальних танцях, на відміну від Dark Souls, буквально.) Ти можеш очікувати на доброзичливу атмосферу, підтримку та допомогу. Як і в Dark Souls, те, що тобі здається неможливим, раптом виходить завдяки вдалому партнеру.

🎳 When in doubt, roll it out. Need I say more?


28.11.2025

Головне у системі продуктивності — це перегляд

Бо без перегляду в нас немає системи. Власне, ми робимо розрізнені нотатки системою, коли беремося їх переглядати.

Раніше я гадав, що головне — це всеосяжність системи, чи ретельне дотримання того, що в ній написано. Але на практиці й те, і те — практично неможливо виконати. Та й не потрібно. Що нам потрібно — це зберігати свіжість системи та згадувати, що там записано. Решта відбувається майже автоматично.

Втім, не все так просто. Перегляд — це не просто “продивитися”. Це приділити кожному пункту належну увагу. Якщо не приділяти та не підтримувати систему у свіжості, то в певний момент очі скляніють та ти вже не думаєш про свої списки, коли на них дивишся. Це — кінець системи.

Отже, ми маємо переглядати наші списки та думати про них. Бачиш проблему? Обсяг списків, які ти здатний переглянути, обмежений. Але ця проблема існує лише в голові. Обсяг справ, які ти здатний зробити, обмежений ще більше.

Тож висновок — ми мусимо розділяти справи за тим, скільки уваги вони потребують та як часто. Є “вхідні” - вони постійно збираються, зате уваги потребують небагато. Є поточні задачі — вони потребують максимум уваги та регулярної, та як раз список поточних задач має сенс звести до тих, що ти дійсно робиш, а не хотів би робити. Ну і нарешті, є “задачі на потім” - їх може бути дуже багато, зате рятує те, що більшість з них потребує тільки трішечки уваги та тільки раз на тиждень, місяць чи навіть квартал.

Але щоб система працювала, ти повинен чітко розуміти, як часто та з якою увагою переглядати кожен список.

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


27.11.2025

Використання ШІ для заповнення тестів

Для мене головною областю використання ШІ є, певно, ті місця, де я сам не дотягую. Тобто Ші не заміняє мою роботу, а доповнює її, часто дуже вигідно.

От взяти нещодавню ситуацію. Треба було для Сінтри щось підправити в функції форматування діапазонів дат. В нас там дуже розумна функція, яка вміє, наприклад, 20-27 листопада, якщо дати в одному місяці. Тестів на цю функцію — немає. Бо ніколи не було часу писати тести, ви що, це ж сайд-проєкт.

Поки ти таку функцію пишеш вперше, то зрозуміло, що тестуєш по всякому вручну, та знає, що вона працює. Але якщо стає задача щось додати роки потому — то ніколи не вгадаєш, який крайовий випадок зламався.

Отже… відкриваю агента, і кажу - “покрий цю функцію тестами, врахуй всі комбінації вхідних параметрів та всі розгалуження.” Ну він і нагенерував пачку тестів. Щоправда, спочатку це були не найкраще написані тести — багато було повторень. Тож попросив у матричному стилі. Повторень стало менше!

Ще ШІ чомусь почав з дуже дивних перевірок регулярними виразами, хоча функція вертає короткий рядок, який можна перевірити цілком. Ба більше, я й хотів перевіряти, що результат збережеться! Ну то теж попросив переробити на пряме порівняння.

Спочатку, зауважу, я покрив тестами код, який вже існував. Навіть спеціально вказав не змінювати реалізацію! Бо задача стояла зафіксувати поведінку такою, яка вона є. А далі вже як були тести, настав час спокійно доробляти.

Гадаю, буде цікаво подивитися, що там за тести, тож ось вони. Цей код практично повністю згенерований ШІ. Але розумієте, якби не ШІ, я б ніколи не став писати ці тести — просто код був би з помилками.


26.11.2025

Замороження фактів для LLM

Ще маленьке та корисне концептуальне відкриття. Як відомо (серйозно, всім повинно бути відомо), великі мовні машини оперують над ймовірностями, а не “твердими” фактами. Зокрема, чим довше поточний контекст, тим більше факти в ньому “розпливаються”.

Все це значить, що якщо в тебе помічник ШІ кожного разу виводить знання з першоджерела — наприклад, знаходить, як писати код через аналіз вже написаного коду — то в такого знання є певне межа, за якою ШІ буде помилятися та робити дурниці.

(Особливо треба розуміти, що факти в контексті будуть не тільки ті, що ми вважаємо за важливі, а й абсолютно тривіальні та зайві. Як те, чи використовуєте ви пробіли або табуляцію.)

Щоб такого не було, важливі факти можна підкласти в контекст в готовому вигляді. Так ми робимо з файлами правил, наприклад.

Але якщо взяти підхід ширше, то можна в будь-який момент зберегти знання з поточного контексту у файл. LLM залюбки згенерує вам Markdown. Цей файл вже буде легко доступним джерелом правди для майбутніх операцій. А проєкт буде обростати документацією на всілякі потреби: про те, як ми пишемо запити, тести, про те чи інше рішення.

Не знаю, чи в цього підходу є широко відома назва, але я його називаю замороженням фактів. Бо те, що записано в цих файлах, стає “твердою” правдою, яку ШІ більше не забуде.


25.11.2025

Дослідження чужого проєкту за допомогою LLM

Хочу особливо поділитися технікою, яка мене врятувала під час впровадження SQLiteData.swift. Річ у тім, що ця бібліотека не має стільки документації, скільки умовний ActiveRecord, та як виходиш за межі прикладів, то на пошук в інтернеті можна не розраховувати.

Та ось моя ідея: я склонував собі репозиторій, відкрив в Курсорі, та почав ставити питання. Ось кілька прикладів.

find examples of @fetchone or @fetchall used with parameters passed from parent components

Типовий випадок, як-от ProjectView(project: project). Як мені завантажити дії цього проєкту? Виявилося, що такі запити створюються в ініціалізаторі: _actions = FetchAll(Action.where { $0.id =project.id}).

how do you use toggle()

В документації все сумно. А з коду стає зрозуміло, що Action.update { $0.isCompleted.toggle() }

is there a way to extract statements that become `@FetchOne` and `@FetchAll`  into a separate module? i'm specifically struggling with types

Хотілося зробити DRY, але ніяк не міг зрозуміти, якого ж типу повинна бути функція, яка повертає той запит. (Не конкретний тип, який традиційно довжелезний та заплутаний, а узагальнений.) Тут ШІ мені згенерував цілий туторіал в Markdown, а тип виявився на кшталт some StructuredQueriesCore.Statement<Int>.

how can i get to the OpaquePointer db pointer needed for SQLIte3 calls from my database instance

Оце останнє на сьогодні, бо я хочу додати пошук із UNICODE_NOCASE, а розвʼязок знайшов тільки через команди бібліотеки SQLite3. А як добратися до цієї низькорівневої бібліотеки? Виявилося, дуже легко - через database.write { db in db.sqliteConnection }. Але в документації про це ані згадки.

Якщо розвинути ідею, можна було б відразу всі залежності проєкту таким чином додавати через MCP чи щось таке. Але я на таке поки не спроможний.


24.11.2025

Деякі обовʼязки лід-інженера

Що забув?