Вирішив зібрати трохи статистики щодо того, скільки в мене часу на які проєкти йде. Колись користувався WakaTime, а потім якийсь час навіть CodeTime від Software.com, але вони всі грошей вимагають для повнішої аналітики, а мені воно не аж настільки треба.
То краще заселфхостити, еге ж? Поставив місяць тому Ziit: на вигляд дуже лаконічна штука, мені навіть трохи подобається. Але ресурсів споживає зовсім не лаконічно! Одна тільки Timescale DB на 200–300 МБ оперативки чого варта. Плюс є низка інших моментів, що дратують. По-перше, постійно розлоговує. Буквально щогодини або щось таке. Нафіга‽ 🤬 По-друге, доволі лімітований набір розширень для IDE. І по-третє, немає API-шки для експорту — за таке взагалі треба карати. Ну й наостанок не підтримує OIDC.
Отже, вирішив відмовлятися від Ziit, а натомість написати своє! Вчасно схаменувся, втім 😅 Мав на думці ідею рахувати не тільки той час, котрий я безпосередньо пишу код, але й той, коли використовую ШІ-агентів, бо врешті це добрячий такий шматок на себе перетягнуло. Але як виявилося, WakaTime це вже підтримує.
Тож натомість я підняв собі Wakapi — сумісну альтернативу WakaTime з відкритими сирцями. Він звісно трохи кривенький (наприклад, я так і не зміг змінити собі часовий пояс в налаштуваннях через якусь помилку, тож пішов і виправив руками прямо в базі 😂), але свою справу знає. Написаний на 🦶, споживає 40 МБ оперативки у докер-контейнері, працює швидко, і навіть OIDC підтримує! Для Claude Code та OpenCode є окремі плагіни, які звітують в систему час під категорією «ai coding» — можна окремо фільтрувати. Для VS Code та майже будь-якого вашого улюбленого редактора теж є. Дані можна зберігати в Postgres, але мені й SQLite 🪶 вистачає.
Хоча насправді це дивно трохи. Я міркував, як це писав би я, і дійшов висновку, що використав би DuckDB 🦆 (може й не тому, що прям треба, а чисто тому, що не було нагоди кудись його прикрутити досі). З іншого боку всі розширення для IDE шлють якесь «серцебиття» на сервак з купою додаткової інфи (назва проєкту, файлу, гілки, мова тощо) дуже часто, а в DuckDB інфа стовпчиками зберігається, а не рядками, бо це OLAP. Така вставка, певно, за швидкодією значно гірше за SQLite буде, ну а раз у ніколи статистику порахувати можна і зі «звичайної» OLTP. То я, мабуть, врешті складав би все в SQLite і з часом переганяв пачками в DuckDB, хз. Звучить як приклад надмірної інженерії. Якщо хтось тямить, як такі речі правильно робити, або якщо є де почитати про DuckDB для повних нубасів типу мене, то напишіть, плз, у коментарі чи шо.
Post #496
1.1K