yk.camelcase.work

Нещодавні роботи

Нещодавні продукти, створені від початку до кінця. Кожен запис називає інженерне рішення, яке його сформувало, а не перелік функцій.

Кожен проєкт нижче почався з реальної проблеми. Далі роль та сама: продуктова концепція, системна архітектура, реалізація, інфраструктура, розгортання та безперервна доставка - кожен продукт продовжує розвиватися далеко за межами першого релізу.

Mixtrace - Ітеративна діагностика та перевірка міксу

Mixtrace вимірює відрендерений музичний мікс, пояснює, що не так, у термінах, з якими звукорежисер може працювати просто в DAW, і під час наступного завантаження перевіряє, чи виправлення справді спрацювало. Я побудував його навколо одного циклу - рендер, вимірювання, діагноз, перевірка, - де кожна знахідка має таймкод, центральну частоту й машинозчитувану умову успіху. Усі оцінки детерміновані й засновані на правилах: той самий мікс завжди отримує той самий діагноз.

Проблема

Мікс проходить десятки рендерів, і вже на шостому вуха звукорежисера перестають судити надійно - при порівнянні пліч-о-пліч майже завжди перемагає гучніша версія. Вимірювачі показують числа, а не те, що не так, у якому місці треку і що змінити в DAW. Через тиждень ніхто не пам'ятає, чи v7 справді виправила те, що було не так у v5.

Signal analysisPython, NumPy, SciPyRule enginedeclarative versioned definitionsFix verificationper-diagnosis contractsCross-version alignmentdynamic time warpingMeasurement storagePostgreSQL, JSONB

Архітектура

  • Вимірювання відокремлене від оцінки. Я нормалізую сирі значення в локалізовані спостереження, не прив'язані до цілі, а потім правила називають проблему. Оскільки спостереження зберігаються, зміна жанру чи цільового формату заново виводить кожен діагноз зі сховища - лише оновлення рушія вимагає повторно виміряти аудіо.
  • Кожна знахідка має контракт. Кожен діагноз визначає, яка метрика має змінитися, у якому напрямку і яка частка зафіксованого перевищення має зникнути, щоб проблема вважалася виправленою, - плюс запобіжники від побічних ефектів. Наступна версія оцінюється за ним автоматично.
  • Правила - це дані, а не код. Визначення діагнозів - версіоновані декларативні файли, що завантажуються під час старту, тож пороги й способи виправлення змінюються без релізу. Лінтер відхиляє будь-яке правило з розмитою порадою або з метрикою перевірки, якої немає в каталозі вимірювань.
  • Версії порівнюються в рівних умовах. На слух майже завжди перемагає гучніша версія, тому кожне порівняння спершу вирівнюється за гучністю. Потім версії автоматично синхронізуються - за зсувом, посекційно або через dynamic time warping, якщо додали такт, - тож знахідка на 1:42 у v5 перевіряється в тому самому музичному моменті у v7.
  • Реальні відхилення приглушуються. Різниця нижче порога чутності й усе, що в межах виміряної жанрової варіативності, подається як нейтральні спостереження, а не дефекти. Коли спрацьовує багато правил одночасно, я видаю один пункт про невідповідність профілю - від інструменту, який називає смак дефектом, швидко відмовляються.

Editron

Сервіс трансформації тексту за принципом API-first. Власний вебредактор - це клієнт того самого публічного API, якому заборонено його обходити, - саме це тримає інтеграційну поверхню чесною; рушій обробки можна замінити за одним внутрішнім контрактом, мультитенантність, API-ключі, квоти й облік використання закладено з самого початку, а також є опублікований TypeScript SDK.

Lernklang

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

Herald

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

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