Things that live here:

  1. Work log, where I note things I feel I'll have to Google later.
  2. Journal, very similar but about non-IT topics.
  3. Blog for rare longer-form posts (last one below).

Feel free to look at what you can find here and enjoy yourself.


~19% of my country is occupied by Russia, and horrible things are happening there. You can help stop this! If you can donate - I contribute to (and fully trust) Come Back Alive and Hospitallers, but there are also other ways to help.


Latest posts from the Work log

Profiling startup import time of Python programs

How to speed up Python application startup time - DEV Community

This tells you the time for imports:

PYTHONPROFILEIMPORTTIME=True uv run my_program.py

Exclude directories when building UV packages

My package was 156mb because my tests/ were 120mb.

Uv uses hatchling

TL;DR add this to pyproject.toml

[tool.hatch.build.targets.sdist]
exclude = [
  "tests/"
]

Before/after:

# before
-rw-r--r--  1 sh sh 156M Jul 13 13:20 pkg-9.2.0.tar.gz
# after
-rw-r--r--  1 sh sh 8.3M Jul 13 13:15 pkg-9.3.0.tar.gz

# yay!

Day 2725 / UI pattern click to copy name, shift-click to copy hex

Colors - Core concepts - Tailwind CSS

Click to copy the OKLCH value or shift+click to copy the nearest hex value.

Oh that’s cool I could use that. The only reason I found it was because https://quasar.dev/style/color-palette/#color-list didn’t give clean access to the hex values so I kept looking :)

Prefix my custom CLI commands with a comma and fish function descriptions

I think I’ve read about this years ago somewhere, just thought of it

For all my (fish) CLI aliases a , is an OK prefix to use, it even supports completion.

alias ,isodate='date +%F'

No idea about any downsides yet, will play with this for a week or so.

function ,blist -d "search and show bitwarden credentials"
    command bw list items --search "$argv" | jq '.[].login | [.username, .password]' -c
end

function ,bcp  -d "copy password of the first matching bitwarden item"
	command bw list items --search $argv | jq .[0].login.password -r | xc
	echo "copied password for '$argv'"
end

# etc, I see potential here!

`` Also TIL: fish functions can have a description that will be shown when tab completing! function functionname -d 'function description'

Isn’t it beautiful? Pasted image 20260529015502.png

Kubectl get info about resource with templates and yaml

I wanted the metadata.annotation pod-requests, viewable in node config -> YAML on the Rancher webgui.

Came up w/ this:

kubectl get node node-name -o template  --template='{{ index .metadata.annotations "management.cattle.io/pod-requests" }}' 

#  | jq '.["nvidia.com/gpu"]' 

It refused to allow me to use - and / inside the name (k get node nodename -o template --template={{.metadata.annotations.management.cattle.io/pod-requests}} didn’t work), solution from Helm templating doesn’t let me use dash in names - Stack Overflow.

Fun version w/ templates and json (there has to be a better way):

k get node nodename -o template  --template='{"requests": {{ index .metadata.annotations "management.cattle.io/pod-requests" }}, "limits": {{ index .metadata.annotations "management.cattle.io/pod-requests" }}, "total": {"nvidia.com/gpu": {{ index .metadata.labels "nvidia.com/gpu.count" }} } }' | jq .

Returns:

{
  "requests": {
    "cpu": "19795m",
    "memory": "7450Mi",
    "nvidia.com/gpu": "1",
    "pods": "37"
  },
  "limits": {
    "cpu": "19795m",
    "memory": "7450Mi",
    "nvidia.com/gpu": "1",
    "pods": "37"
  },
  "total": {
    "nvidia.com/gpu": 1
  }
}

Or even

k get node ki-srv03 -o template  --template='{"requests": {{ index .metadata.annotations "management.cattle.io/pod-requests" }}, "limits": {{ index .metadata.annotations "management.cattle.io/pod-requests" }}, "total": {"nvidia.com/gpu": {{ index .metadata.labels "nvidia.com/gpu.count" }} } }' | jq '. | [.requests["nvidia.com/gpu"], .limits["nvidia.com/gpu"],  .total["nvidia.com/gpu"] | tonumber]' -c

# -> [2,1,4]

Day 2704 / bttf for CLI time parsing and interesting help pattern

BurntSushi/bttf: A command line tool for datetime arithmetic, parsing, formatting and more.

I use wolframalpha for most of my casual date ops etc. but the project is cool and I may need it.

But the most interesting bit is the documentation.

Quoting README:

I may ship arbitrary and capricious breaking changes at this point. You have been warned. […] And it doesn’t give a hoot about POSIX (other than the TZ environment variable).

And THIS. I either love it or hate it, can’t decide:

-h/--help
	This flag prints the help output for bttf.

	Unlike most other flags, the behavior of the short flag, -h, and the
	long flag, --help, is different. The short flag will show a condensed
	help output while the long flag will show a verbose help output.

It breaks my usual expectations but damn it’s a cool pattern that I really want to be a thing! You’re allowed to break conventions if your thing is really smarter and you’re explicit and intentional about it.

Day 2692 / FNP-2026 at LREC paper notes

When Tables Go Crazy: Evaluating Multimodal Models on French Financial Documents

CFQA: A Chinese Financial Question Answering Benchmark from Corporate Annual Reports

(!) Verifiable Financial Enterprise Question Answering via Inference-Time Grounding and Traceability

Day 2689 / Borda count

Related: Likert scale

xh notes

ducaale/xh: Friendly and fast tool for sending HTTP requests o

Shorthand

# from README
xh http://localhost:3000/users # resolves to http://localhost:3000/users
xh localhost:3000/users        # resolves to http://localhost:3000/users
xh :3000/users                 # resolves to http://localhost:3000/users
xh :/users                     # resolves to http://localhost:80/users
xh example.com                 # resolves to http://example.com
xh ://example.com              # resolves to http://example.com

Convert enum to dict in python

python - How to make a dict from an enum? - Stack Overflow

# Source - https://stackoverflow.com/a/60451617
# Posted by Chris Doyle
# Retrieved 2026-04-09, License - CC BY-SA 4.0

from enum import Enum
class Shake(Enum):
    VANILLA = "vanilla"
    CHOCOLATE = "choc"
    COOKIES = "cookie"
    MINT = "mint"

dct = {i.name: i.value for i in Shake}
print(dct)

Latest post from Blog

'The Hacker Manifesto', переклад українською

The Hacker Manifesto, український переклад

Оригінал: .:: Phrack Magazine ::.
Контекст: Маніфест хакера — Вікіпедія / Hacker Manifesto - Wikipedia
Існуючий дуже класний переклад, не відкривав, поки не закінчив свій: Маніфест хакера | Hacker’s Manifesto | webKnjaZ: be a LifeHacker

                               ==Phrack Inc.==

                    Том I, випуск 7, Phайл[0] 3 з 10

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
Наступне було написано невдовзі після мого арешту...

	                        \/\Совість хакера/\/

	                               автор:

	                          +++The Mentor+++

	                           8 січня 1986р.
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=

	Сьогодні ще одного спіймали, пишуть у всіх газетах. "Кібер-скандал:
підлітку повідомили про підозру", "Кіберзлочинця затримали після
проникнення в систему банку".
	Тупа школота[1], вони всі однакові.

	Та чи ви, з вашою трафаретною психологією[2] та знаннями 
інформатики зразка першої половини пʼятидесятих[3], коли-небудь дивилися 
в душу хакера? [4] Чи вас колись цікавило, що ним рухає[5], 
які сили на нього впливали, що його сформувало?
	Я хакер, ласкаво прошу у мій світ...
	Мій світ почався ще зі школи... Я розумніший за більшість інших
дітей, і дурниці, які нам викладають, мені набридають.
	Тупий трієчник[6], вони всі однакові.

	Восьмий, девʼятий, десятий, одинадцятий клас[7]. В пʼятнадцятий
раз слухаю, як вчителька пояснює, як скорочувати дроби. Мені все ясно. "Ні, 
Вікторія Миколаївна[8], я не написав проміжні кроки, я розвʼязав все усно..."
	Тупий підліток. Мабуть списав. Всі вони такі.

	Сьогодні я зробив відкриття. Я знайшов компʼютер. Ха, почекай-но, це круто. 
	Він робить те, що я від нього хочу. І якщо він помиляється, це тому, що 
	помилився я. А не тому що він мене не любить...
	             Або відчуває від мене загрозу...
	             Або вважає мене самозакоханим всезнайком[9]...
	             Або ненавидить себе, дітей, та педагогіку[10]...
	Тупий підліток. Він постійно тільки грає в свої ігри. Всі вони такі...

	Потім це відбулось... відчинились двері в світ... несучись телефонною 
лінією як героїн венами наркомана, надсилається електронний пульс,
шукається спасіння від ідіотизму навколо...[11] Знаходиться борд[12].
	"Це воно... це те, до чого я належу..."
	Я з усіма тут знайомий... попри те, що я з ними ніколи не 
зустрічався, не розмовляв, і колись можливо більше нічого не чутиму про 
них... Я їх всіх знаю...
	Тупий підліток. Знову займає телефонну лінію... Вони всі однакові.

	Та ще й як — ми всі однакові! [13] Нас годували
дитячими сумішами з ложки, коли ми хотіли стейк... а ті куски мʼяса, які 
до нас все ж потрапляли, були вже пережовані і без смаку. Над нами
панували садисти, або нас ігнорували байдужі. Для тих, хто хотіли чомусь 
нас навчити, ми були вдячними учнями, але їх було як краплин дощу в
пустелі.

	Цей світ зараз наш... світ електрона і комутатора, світ краси
бода[14]. Ми користуємося існуючою послугою не платячи за те, що могло б 
бути дуже дешевим, якби ним не завідували жадібні бариги[15], і ви 
називаєте нас злочинцями. Ми досліджуємо... і ви називаєте нас 
злочинцями. Ми шукаємо знання... і ви називаєте нас злочинцями. Ми 
існуємо без кольору шкіри, без національності і без релігійної 
нетерпимості... і ви називаєте нас злочинцями. Ви будуєте атомні бомби, 
ви ведете війни, ви вбиваєте, обманюєте, і брешете нам, намагаючись 
змусити нас повірити, що ви це робите для нашого блага, але злочинці тут — ми.

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

	Я хакер, і це мій маніфест. Можливо ви зупините мене як особу, але ви 
ніколи не зупините нас всіх... зрештою, ми всі однакові.
	

Замітки:

  1. Ph-айл: worst of both worlds between phile and файл
    • 2025-11-09: Phайл.
  2. Damn kids: тупі/кляті/грьобані діти/школота1/малолітки2? Дякую цьому твіту Букви, який дає мені моральне право використовувати слово “школота”, бо нічого інше не клеїлося (“Окаяні дітлахи!")
  3. three-piece-psychology: інтерпретую як невисоку оцінку розвитку внутрішнього світу. Тому: пересічним/шаблонним/банальним/трафаретним3/примітивним/нехитрим/безхитрим; psychology: ‘інтелект’ але не зовсім, мені подобається ‘ментальність’
    • 2025-11-09: хай буде “трафаретна психологія”, можливо там таки оцінка спроб його зрозуміти, не інтелекту
  4. and 1950’s technobrain: Німецький переклад, який сподобався англіцизмами та дав ідею перекласти technobrain в значенні “знання про компʼютери”, а не слово в слово: Berühmte Manifeste 2 – openPunk
  5. хакер/гакер: Вікіпедія вважає обидва допустимими; сам Авраменко ссилаючись на ті самі правила українського правопису теж вважає обидва допустимими, але все ж любить “г” більше (Хакер чи гакер - експрес-урок - YouTube). А я не можу і не буду. Хакер. I will die on this hill.
  6. what makes him tick: TODO, нічого не подобається. Що його рухає/надихає, що у нього всередині, …
    • 2025-11-09: “що ним рухає”, дякую ChatGPT!
  7. underachiever: хай буде “відстаючий”. Хоча пригадую з ЗНО, що суфікси уч/юч обмежені у вживанні, правильніше ВІДСТАЛИЙ мені не подобається.
    • 2025-11-09: “тупий трієчник”, дякую ChatGPT.
  8. junior high or high school: тут додаю драми замість дослівності, тому що все ближче до оригіналу, що я можу придумати, занадто канцеляристично: “я закінчую базову чи повну загальну середню освіту”..?
  9. Ms. Smith:
  10. I’m a smart ass
    • 2025-11-09: “самозакоханий всезнайко”, дякую ChatGPT.
      • “вважає мене розумником хріновим” дуже непоганий другий варіант.
      • … Знайти короткі вирази, які передають “він думає, що я думаю, що я тут найрозумніший” було тяжко.
      • (r/russian давав ще варіанти градусу “умник ебанный”, … ..no, just no. Варіації “має мене за розумника є**ного”, яке підкидало ChatGPT, теж не радували.)
      • Горох взагалі каже, що правильніше “всезнавець, всевідач”4, але я не буду замінювати слово з “абсолютною частотою” 234 на слово з частотою 1 (чи на слово взагалі без частоти і трьома5 результатами в Гуглі)
  11. doesn’t like teaching: оплакую невикористаний варіант від душі “ненавидить себе, дітей, і педагогіку”. Дуже оплакую. Upd: we live once, це занадто ідеально, хай буде!
  12. a refuge from the day-to-day incompetencies is sought
    • 2025-11-09: “невігластва навколо” ➔ “ідіотизму навколо”.
  13. a board is found: мається на увазі електронна дошка оголошень (BBS — Вікіпедія), дід форумів і прадід іміджбордів. Найцікавіше слово для перекладу. Якщо буде “борд” то збережеться драматизм оригіналу, але є шанси, що хтось спутає з іміджбордами. Коли вони були популярні, нормальні люди в Україні їх не називали ніяк, російською були варіанти “доска”, “бибиэска”6. “BBS” був би найпростішим виходом; “електронна дошка оголошень” знову ж таки канцеляризм. По контексту далі очевидно, що мова йде про якесь спілкування, тому хай буде “борд”, принесу в жертву однозначність і зрозумілість милозвучності.
  14. you bet your ass we’re all alike: як же складно підбирати такі речі. Умовні embeddings з ML тут були б в тему. “Дай мені щось на кшталт ‘авжеж’ тільки більш emphatical”. Попередня версія “Авжеж ми всі однакові!”
    1. You bet – phrases: базара нет, по любому, я вас умоляю
    2. Будьте певні7
    3. ЩЕ Б ПАК — СИНОНІМІЯ | Горох — українські словники
      1. Авжеж?8
    4. 2025-11-09: “Ще й як — ми всі однакові!” — знак оклику тут додає енергії англомовного “you bet your ass”
  15. the beauty of the baud: Бод — Вікіпедія Нехай мій (і єдиний можливий) переклад буде всім настільки ж зрозумілим, наскільки мені був зрозумілий оригінал, коли я його читав вперше.
  16. profitteering gluttons
    • 2025-11-09: “ненажерливі бариги” ➔ “жадібні бариги”

Hat tip to:

Random:

Два роки потому

  1. you bet your ass we’re all alike: як же складно підбирати такі речі. Умовні embeddings з ML тут були б в тему. “Дай мені щось на кшталт ‘авжеж’ тільки більш emphatical”

09/11/2025, в світі, де це вже можливо, я повернувся до цього тексту.

Змінив наступне:

  • Дякую ChatGPT за

    • [0]: Ph-айл => Phайл
    • [5]: what makes him tick: “що є причиною його поведінки” ➔ “що ним рухає”
    • [6]: “тупий відстаючий” ➔ “тупий трієчник”
    • “намагаючись заставити нас повірити, що ви це робите для нашого блага, і попри все - це ми тут злочинці.” ➔ “змусити нас повірити […] але злочинці тут — ми.” (ChatGPT підкинуло “змусити” і відповіло на питання, чи треба тире в останньому реченні)
    • [15] “ненажерливі бариги” ➔ “жадібні бариги”
  • [2]: трафаретна ментальність ➔ психологія

  • [10]: “shouldn’t be teaching”: таки використав ідеальне “ненавидить себе, дітей та педагогіку” (було: “не любить викладати”)

  • [11] `невігластва навколо” ➔ “ідіотизму навколо”

  • [13]: “Та можете не сумніватись, що ми всі однакові…” ➔ “Та ще й як — ми всі однакові!”