<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"><channel><title>Dmitriy Semenkevich: writing</title><description>Essays and build logs by Dmitriy Semenkevich: AI products that don’t guess, financial engines, web experiments.</description><link>https://dimhold.by/</link><item><title>Please costs 24 dollars per million calls, which is nothing. Just the answer cost me 32.5 points of accuracy.</title><link>https://dimhold.by/blog/politeness-cost/</link><guid isPermaLink="true">https://dimhold.by/blog/politeness-cost/</guid><description>A year ago I stripped every please and thank you out of my prompt templates because of a joke Sam Altman made about electricity. I never checked what I saved. 20171 calls later the polite wrapper costs 24 dollars per million requests on sonnet and moves the answer no more than a control wrapper with no social word in it. The wrapper that did move things was the one telling the model how much to write: Just the answer takes haiku on GSM8K from 88.5 percent down to 56.0.</description><pubDate>Mon, 14 Sep 2026 00:00:00 GMT</pubDate></item><item><title>Please каштуе 24 даляры на мільён выклікаў. Гэта нішто. Just the answer каштавала мне 32.5 бала дакладнасці</title><link>https://dimhold.by/be/blog/politeness-cost/</link><guid isPermaLink="true">https://dimhold.by/be/blog/politeness-cost/</guid><description>Год таму я вычысціў з шаблонаў промптаў усе please і thank you праз жарт Сэма Альтмана пра электрычнасць. Колькі зэканоміў, так і не праверыў. Праз 20171 выклік ветлівая абгортка каштуе 24 даляры на мільён запытаў у sonnet і рухае адказ не мацней, чым кантрольная абгортка без ніводнага сацыяльнага слова. Рухае іншая: указанне пра даўжыню адказу зводзіць haiku на GSM8K з 88.5 працэнта да 56.0.</description><pubDate>Mon, 14 Sep 2026 00:00:00 GMT</pubDate></item><item><title>Please стоит 24 доллара на миллион вызовов. Это ничто. Just the answer стоило мне 32.5 балла точности</title><link>https://dimhold.by/ru/blog/politeness-cost/</link><guid isPermaLink="true">https://dimhold.by/ru/blog/politeness-cost/</guid><description>Год назад я вычистил из шаблонов промптов все please и thank you из-за шутки Сэма Альтмана про электричество. Сколько сэкономил, так и не проверил. Через 20171 вызов вежливая обёртка стоит 24 доллара на миллион запросов у sonnet и двигает ответ не сильнее, чем контрольная обёртка без единого социального слова. Двигает другая: указание про длину ответа уводит haiku на GSM8K с 88.5 процента до 56.0.</description><pubDate>Mon, 14 Sep 2026 00:00:00 GMT</pubDate></item><item><title>На сярэдзіне апгрэйда палова маёй калекцыі набрала 0</title><link>https://dimhold.by/be/blog/embedding-version-drift/</link><guid isPermaLink="true">https://dimhold.by/be/blog/embedding-version-drift/</guid><description>Бамп версіі ўнутры аднаго сямейства мадэляў выглядаў як патч, таму я памераў, што ён робіць з пошукам. З першай дзясяткі мяняецца 2.19 месца, а nDCG@10 рухаецца ў трэцім знаку. Фіксаванае адсячэнне па косінусе 0.8 прапускала 97.5% результатаў і стала прапускаць 1.8%, а індэкс на сярэдзіне міграцыі аддае 0 рэлевантных дакументаў для паловы калекцыі.</description><pubDate>Sun, 13 Sep 2026 00:00:00 GMT</pubDate></item><item><title>Halfway through the upgrade, half of my corpus scored 0</title><link>https://dimhold.by/blog/embedding-version-drift/</link><guid isPermaLink="true">https://dimhold.by/blog/embedding-version-drift/</guid><description>A version bump inside one model family looked like a patch release, so I measured what it does to retrieval. 2.19 of the top 10 slots change while nDCG@10 moves in the third decimal, a fixed 0.8 cosine cutoff goes from passing 97.5% of results to passing 1.8%. The index that is halfway through the migration returns 0 relevant documents for half the corpus.</description><pubDate>Sun, 13 Sep 2026 00:00:00 GMT</pubDate></item><item><title>На середине апгрейда половина моей коллекции набрала 0</title><link>https://dimhold.by/ru/blog/embedding-version-drift/</link><guid isPermaLink="true">https://dimhold.by/ru/blog/embedding-version-drift/</guid><description>Бамп версии внутри одного семейства моделей выглядел как патч, поэтому я померил, что он делает с поиском. Из первой десятки меняется 2.19 места, а nDCG@10 шевелится в третьем знаке. Фиксированное отсечение по косинусу 0.8 пропускало 97.5% результатов и стало пропускать 1.8%, а индекс на середине миграции отдаёт 0 релевантных документов для половины коллекции.</description><pubDate>Sun, 13 Sep 2026 00:00:00 GMT</pubDate></item><item><title>2 радкі каментара ператварылі 62 знаходкі ў 0</title><link>https://dimhold.by/be/blog/multi-agent-review/</link><guid isPermaLink="true">https://dimhold.by/be/blog/multi-agent-review/</guid><description>Рэўю кода ў мяне ідзе ў 3 стадыі і памер ніводнай з іх я не выбіраў паводле замеру. Пасля 191 выкліку мадэлі стадыя, якую я бараніў бы найзацяцей, ні разу не разышлася сама з сабой. Няправым раз за разам аказваўся мой уласны вымяральны апарат: 2 радкі каментара ў кантрольным файле апусцілі 62 знаходкі да 0.</description><pubDate>Sun, 06 Sep 2026 00:00:00 GMT</pubDate></item><item><title>2 comment lines turned 62 findings into 0</title><link>https://dimhold.by/blog/multi-agent-review/</link><guid isPermaLink="true">https://dimhold.by/blog/multi-agent-review/</guid><description>Code review here runs in 3 stages and I had never picked the size of any of them on evidence. After 191 model calls the stage I would have defended hardest had not once disagreed with itself. The thing that kept turning out to be wrong was my own apparatus: 2 comment lines in the control file took 62 findings down to 0.</description><pubDate>Sun, 06 Sep 2026 00:00:00 GMT</pubDate></item><item><title>2 строки комментария превратили 62 находки в 0</title><link>https://dimhold.by/ru/blog/multi-agent-review/</link><guid isPermaLink="true">https://dimhold.by/ru/blog/multi-agent-review/</guid><description>Ревью кода у меня идёт в 3 стадии и размер ни одной из них я не выбирал по замеру. После 191 вызова модели стадия, которую я защищал бы яростнее всего, ни разу не разошлась сама с собой. Неправым раз за разом оказывался мой собственный измерительный аппарат: 2 строки комментария в контрольном файле опустили 62 находки до 0.</description><pubDate>Sun, 06 Sep 2026 00:00:00 GMT</pubDate></item><item><title>У скрыпце не мянялася нічога і 24 з маіх 36 агентаў адпрацавалі нанова</title><link>https://dimhold.by/be/blog/deterministic-orchestration/</link><guid isPermaLink="true">https://dimhold.by/be/blog/deterministic-orchestration/</guid><description>Замер тут гэта 36 агентаў і спосаб, якім я іх ганяю, я называў дэтэрмінаваным, ні разу не памераўшы, што гэтае слова ахоплівае. Канвеер абганяе бар&apos;ер на 23.9 працэнта па часе. Ён жа раздае нумары выклікаў таму, хто скончыў першым, і журнал з ключом па пазіцыі вяртае 12 агентаў з 36 на прагоне, дзе не папраўлена наогул нічога.</description><pubDate>Fri, 04 Sep 2026 00:00:00 GMT</pubDate></item><item><title>Nothing changed in the script and 24 of my 36 agents ran again</title><link>https://dimhold.by/blog/deterministic-orchestration/</link><guid isPermaLink="true">https://dimhold.by/blog/deterministic-orchestration/</guid><description>A measurement here is 36 agents and I have been calling the way I run them deterministic without ever measuring what the word covers. The pipeline shape beats the barrier by 23.9 percent of wall clock. It also hands out call numbers by who finished first, which means a journal keyed by position replays 12 of 36 agents on a run where nothing was edited at all.</description><pubDate>Fri, 04 Sep 2026 00:00:00 GMT</pubDate></item><item><title>В скрипте не менялось ничего и 24 из моих 36 агентов отработали заново</title><link>https://dimhold.by/ru/blog/deterministic-orchestration/</link><guid isPermaLink="true">https://dimhold.by/ru/blog/deterministic-orchestration/</guid><description>Замер здесь это 36 агентов и способ, которым я их гоняю, я называл детерминированным, ни разу не померив, что это слово покрывает. Конвейер обгоняет барьер на 23.9 процента по времени. Он же раздаёт номера вызовов тому, кто закончил первым, и журнал с ключом по позиции возвращает 12 агентов из 36 на прогоне, где не поправлено вообще ничего.</description><pubDate>Fri, 04 Sep 2026 00:00:00 GMT</pubDate></item><item><title>Крытык прапускае 13 з 16 чарнавікоў, якія завальвае механіка</title><link>https://dimhold.by/be/blog/anti-slop-cycle/</link><guid isPermaLink="true">https://dimhold.by/be/blog/anti-slop-cycle/</guid><description>Кожны чарнавік тут праходзіць 19 механічных праверак, а потым крытыка-мадэль з адзнакай ад 0 да 10. Я паўтараю, што механіка вырашае тое, у чаго ёсць адназначны адказ, а меркаванне застаецца крытыку. Лікам я гэта ні разу не правяраў. На 16 сапраўдных чарнавіках механіка спрацавала на ўсіх 16, а 13 леглі на праходнай адзнацы або ніжэй. Падсадзі 8 парушэнняў майго правіла пра коску: крытык усё роўна скажа 2.7.</description><pubDate>Thu, 03 Sep 2026 00:00:00 GMT</pubDate></item><item><title>The critic passes 13 of the 16 drafts my checks fail</title><link>https://dimhold.by/blog/anti-slop-cycle/</link><guid isPermaLink="true">https://dimhold.by/blog/anti-slop-cycle/</guid><description>Every draft here goes past 19 mechanical checks and then past a model critic that scores it from 0 to 10. I have been saying the checks own what has one answer while the critic owns judgment. I never put a number on that. On 16 real drafts all 16 fire the checks and 13 land at or under the passing score. Inject 8 violations of my comma rule and the critic still says 2.7.</description><pubDate>Thu, 03 Sep 2026 00:00:00 GMT</pubDate></item><item><title>Критик пропускает 13 из 16 черновиков, которые заваливает механика</title><link>https://dimhold.by/ru/blog/anti-slop-cycle/</link><guid isPermaLink="true">https://dimhold.by/ru/blog/anti-slop-cycle/</guid><description>Каждый черновик здесь проходит 19 механических проверок, а потом критика-модель с оценкой от 0 до 10. Я повторяю, что механика решает то, у чего есть однозначный ответ, а суждение остаётся критику. Числом я это ни разу не проверял. На 16 настоящих черновиках механика сработала на всех 16, а 13 легли на проходной оценке или ниже. Подсади 8 нарушений моего правила про запятую: критик всё равно скажет 2.7.</description><pubDate>Thu, 03 Sep 2026 00:00:00 GMT</pubDate></item><item><title>Мадэль, якая прачытала мае эсэ, вяртае 2 правілы з 16</title><link>https://dimhold.by/be/blog/voice-beats-inference/</link><guid isPermaLink="true">https://dimhold.by/be/blog/voice-beats-inference/</guid><description>Мне пастаянна кажуць, што звод правілаў голасу не патрэбны: пакажы мадэлі апублікаванае і дай ёй вывесці голас самой. Я аддаў claude-opus-5 8 са сваіх 11 англійскіх эсэ і папрасіў напісаць звод. За 5 прагонаў яна напісала 92 запісы, з іх маіх 2. Усе 16 праверак даюць 0 на 12587 словах апублікаванай прозы, а ў шасці з іх 0 і ў базах параўнання, то бок шукаць там не было чаго.</description><pubDate>Wed, 02 Sep 2026 00:00:00 GMT</pubDate></item><item><title>A model reading my essays gives back 2 of my 16 rules</title><link>https://dimhold.by/blog/voice-beats-inference/</link><guid isPermaLink="true">https://dimhold.by/blog/voice-beats-inference/</guid><description>I keep being told the voice guide is unnecessary: show the model what you have already published and let it work the voice out. I gave claude-opus-5 8 of my 11 English essays and asked for the guide. Over 5 runs it wrote 92 entries and 2 of them are mine. All 16 checks score 0 across 12587 words of published prose, and for 6 of them even the baselines score 0, so there was nothing there to find.</description><pubDate>Wed, 02 Sep 2026 00:00:00 GMT</pubDate></item><item><title>Модель, прочитавшая мои эссе, возвращает 2 правила из 16</title><link>https://dimhold.by/ru/blog/voice-beats-inference/</link><guid isPermaLink="true">https://dimhold.by/ru/blog/voice-beats-inference/</guid><description>Мне постоянно говорят, что свод правил голоса не нужен: покажи модели опубликованное и дай ей вывести голос самой. Я отдал claude-opus-5 8 из своих 11 английских эссе и попросил написать свод. За 5 прогонов она написала 92 записи, из них моих 2. Все 16 проверок дают 0 на 12587 словах опубликованной прозы, а у 6 из них 0 и в базах сравнения, то есть искать там было нечего.</description><pubDate>Wed, 02 Sep 2026 00:00:00 GMT</pubDate></item><item><title>15 years after Simple Made Easy: 0 of my 102 local variables were final in 2013 and 91.6% of the code I keep is const now. I chose neither</title><link>https://dimhold.by/blog/hickey-fifteen-years/</link><guid isPermaLink="true">https://dimhold.by/blog/hickey-fifteen-years/</guid><description>In may 2013 I started a repository to translate a Rich Hickey talk into Russian. It is still at 0%. That same week I committed synchronized collections to a Java server. I rebuilt that shape and measured it. The commit did not move the failure rate at all. Then I ran the checklist from Simple Made Easy over my own code. 0 of my 102 local variables were final in 2013 and 91.6% of the code I keep is const now. I chose neither.</description><pubDate>Tue, 01 Sep 2026 00:00:00 GMT</pubDate></item><item><title>15 гадоў пасля Simple Made Easy: у 2013 годзе ніводная з маіх 102 лакальных зменных не была final, цяпер у жывым кодзе 91.6% гэта const. Я не выбіраў ні таго ні другога</title><link>https://dimhold.by/be/blog/hickey-fifteen-years/</link><guid isPermaLink="true">https://dimhold.by/be/blog/hickey-fifteen-years/</guid><description>У маі 2013 года я завёў рэпазіторый, каб перакласці даклад Рыча Хікі на рускую. Ён дагэтуль на 0%. На тым жа тыдні я закаміціў сінхранізаваныя калекцыі ў java-сервер. Я сабраў тую форму нанова і памераў: частату падзенняў каміт не зрушыў увогуле. Потым прагнаў спіс з Simple Made Easy па сваім кодзе. У 2013 годзе ніводная з 102 лакальных зменных не была final, цяпер у жывым кодзе 91.6% гэта const. Я не выбіраў ні таго ні другога.</description><pubDate>Tue, 01 Sep 2026 00:00:00 GMT</pubDate></item><item><title>15 лет после Simple Made Easy: в 2013 году ни одна из моих 102 локальных переменных не была final, сейчас в живом коде 91.6% это const. Я не выбирал ни того ни другого</title><link>https://dimhold.by/ru/blog/hickey-fifteen-years/</link><guid isPermaLink="true">https://dimhold.by/ru/blog/hickey-fifteen-years/</guid><description>В мае 2013 года я завёл репозиторий, чтобы перевести доклад Рича Хикки на русский. Он до сих пор на 0%. На той же неделе я закоммитил синхронизированные коллекции в java-сервер. Я собрал ту форму заново и померил: частоту падений коммит не сдвинул вообще. Потом прогнал список из Simple Made Easy по своему коду. В 2013 году ни одна из 102 локальных переменных не была final, сейчас в живом коде 91.6% это const. Я не выбирал ни того ни другого.</description><pubDate>Tue, 01 Sep 2026 00:00:00 GMT</pubDate></item><item><title>Simple Made Easy на маіх уласных дыфах: 85% выкінутага кода пайшло адным камітам</title><link>https://dimhold.by/be/blog/simple-made-easy-my-diffs/</link><guid isPermaLink="true">https://dimhold.by/be/blog/simple-made-easy-my-diffs/</guid><description>Я выняў дашборд з гэтай машыны праз 2 дні і 22 гадзіны пасля таго, як яна яго напісала. Колькі яшчэ пайшло тым жа шляхам, я ні разу не лічыў. 508 камітаў пазней: 57.4% слоў кода няма, з іх 85.0% пайшлі адным камітам. Першыя 5 файлаў па шырыні спляцення гэта тыя самыя 5, што зняў той каміт.</description><pubDate>Sun, 30 Aug 2026 00:00:00 GMT</pubDate></item><item><title>Simple Made Easy on my own diffs: 85% of the discarded code went in one commit</title><link>https://dimhold.by/blog/simple-made-easy-my-diffs/</link><guid isPermaLink="true">https://dimhold.by/blog/simple-made-easy-my-diffs/</guid><description>I took a dashboard out of this workspace 2 days and 22 hours after the machine wrote it and never counted how much else went the same way. 508 commits later: 57.4% of the code words are gone and 85.0% of that went in one commit. The 5 files with the widest braid in the history are the 5 that commit deleted.</description><pubDate>Sun, 30 Aug 2026 00:00:00 GMT</pubDate></item><item><title>Simple Made Easy на моих собственных диффах: 85% выброшенного кода ушло одним коммитом</title><link>https://dimhold.by/ru/blog/simple-made-easy-my-diffs/</link><guid isPermaLink="true">https://dimhold.by/ru/blog/simple-made-easy-my-diffs/</guid><description>Я вынул дашборд из этой машины через 2 дня и 22 часа после того, как она его написала. Сколько ещё ушло тем же путём, я ни разу не считал. 508 коммитов спустя: 57.4% слов кода нет, из них 85.0% ушли одним коммитом. Первые 5 файлов по ширине сплетения это те самые 5, что снял тот коммит.</description><pubDate>Sun, 30 Aug 2026 00:00:00 GMT</pubDate></item><item><title>Індэкс, пра які я казаў, што ён нічога не дасць: 2.8 мс супраць 8.3</title><link>https://dimhold.by/be/blog/files-as-state/</link><guid isPermaLink="true">https://dimhold.by/be/blog/files-as-state/</guid><description>Стан гэтай машыны ляжыць у файлах markdown, і я тлумачу гэта фразай пра хуткасць, якую ні разу не мерыў. Я сабраў індэкс SQLite, пра які казаў, што ён нічога не дасць, і замерыў на 1x, 10x і 100x. Ён выйграе ўсюды, а потым высветлілася, што я мерыў fsync.</description><pubDate>Sat, 29 Aug 2026 00:00:00 GMT</pubDate></item><item><title>The index I said would buy nothing: 2.8 ms against 8.3</title><link>https://dimhold.by/blog/files-as-state/</link><guid isPermaLink="true">https://dimhold.by/blog/files-as-state/</guid><description>This workspace keeps its state in markdown files and I explain that with a sentence about speed I had never measured. I built the SQLite index I said would buy nothing and timed it at 1x, 10x and 100x. It wins everywhere, and then I found out I had been timing an fsync.</description><pubDate>Sat, 29 Aug 2026 00:00:00 GMT</pubDate></item><item><title>Индекс, про который я говорил, что он ничего не даст: 2.8 мс против 8.3</title><link>https://dimhold.by/ru/blog/files-as-state/</link><guid isPermaLink="true">https://dimhold.by/ru/blog/files-as-state/</guid><description>Состояние этой машины лежит в файлах markdown, и я объясняю это фразой про скорость, которую ни разу не мерил. Я собрал индекс SQLite, про который говорил, что он ничего не даст, и замерил на 1x, 10x и 100x. Он выигрывает везде, а потом выяснилось, что я мерил fsync.</description><pubDate>Sat, 29 Aug 2026 00:00:00 GMT</pubDate></item><item><title>Часавы пояс, які выдаюць мае публічныя каміты, няправільны</title><link>https://dimhold.by/be/blog/red-line-open-data/</link><guid isPermaLink="true">https://dimhold.by/be/blog/red-line-open-data/</guid><description>26 публічных рэпазіторыяў і 510 маіх камітаў. Ацэнка часавога пояса па гадзінах, у якія гэтыя каміты зробленыя, дае адзіны чысты мінімум на +1. У 422 аб&apos;ектах з 510 запісана +03:00. Чым больш меркаў часу, тым упэўненей няправільны адказ. А зрух, дзеля якога я падняў 26 клонаў, ляжыць у адным GET без лагіна.</description><pubDate>Thu, 27 Aug 2026 00:00:00 GMT</pubDate></item><item><title>The timezone my public commits give away is the wrong one</title><link>https://dimhold.by/blog/red-line-open-data/</link><guid isPermaLink="true">https://dimhold.by/blog/red-line-open-data/</guid><description>26 public repositories and 510 of my own commits. Guessing a timezone from the hours those commits were made has one clean minimum at +1. 422 of the 510 commit objects say +03:00. More timestamps make the wrong answer more confident. The offset I built 26 bare clones to read turned out to sit in a single unauthenticated GET.</description><pubDate>Thu, 27 Aug 2026 00:00:00 GMT</pubDate></item><item><title>Часовой пояс, который выдают мои публичные коммиты, неверный</title><link>https://dimhold.by/ru/blog/red-line-open-data/</link><guid isPermaLink="true">https://dimhold.by/ru/blog/red-line-open-data/</guid><description>26 публичных репозиториев и 510 моих коммитов. Оценка часового пояса по часам, в которые эти коммиты сделаны, даёт единственный чистый минимум на +1. В 422 объектах из 510 записано +03:00. Чем больше меток времени, тем увереннее неверный ответ. А смещение, ради которого я поднял 26 клонов, лежит в одном GET без логина.</description><pubDate>Thu, 27 Aug 2026 00:00:00 GMT</pubDate></item><item><title>Колькі сабака праходзіць за адну прагулку з чалавекам</title><link>https://dimhold.by/be/blog/dog-walks-further/</link><guid isPermaLink="true">https://dimhold.by/be/blog/dog-walks-further/</guid><description>Два тэлефоны, адзін лес, гадзіна дваццаць. Адзін у кішэні, другі ў шкарпэтцы на ашыйніку. GPS раз на секунду. Зум прайшоў 5,42 км, я — 4,09. Але цікавейшым аказалася не наколькі больш, а чаму: медыянная хуткасць у нас амаль аднолькавая, а ўся розніца сядзіць у хвастах размеркавання.</description><pubDate>Thu, 20 Aug 2026 00:00:00 GMT</pubDate></item><item><title>Сколько собака проходит за одну прогулку с человеком</title><link>https://dimhold.by/ru/blog/dog-walks-further/</link><guid isPermaLink="true">https://dimhold.by/ru/blog/dog-walks-further/</guid><description>Два телефона, один лес, час двадцать. Один в кармане, другой в носке на ошейнике. GPS раз в секунду. Зум прошёл 5,42 км, я — 4,09. Но интереснее оказалось не то, насколько больше, а почему: медианная скорость у нас почти одинаковая, вся разница сидит в хвостах распределения.</description><pubDate>Thu, 20 Aug 2026 00:00:00 GMT</pubDate></item><item><title>How much further does a dog walk than the man walking it</title><link>https://dimhold.by/blog/dog-walks-further/</link><guid isPermaLink="true">https://dimhold.by/blog/dog-walks-further/</guid><description>2 phones, one wood, an hour and twenty. One in a pocket, one in a sock tied to a collar. GPS once a second. Zoom covered 5.42 km to my 4.09. The interesting part was not how much further, but why: our median speeds are almost the same and the whole difference lives in the tails.</description><pubDate>Thu, 20 Aug 2026 00:00:00 GMT</pubDate></item><item><title>9 мадэляў, accuracy ад 92.5 да 93.3, і адна з іх не знаходзіць нічога</title><link>https://dimhold.by/be/blog/accuracy-lies-on-imbalance/</link><guid isPermaLink="true">https://dimhold.by/be/blog/accuracy-lies-on-imbalance/</guid><description>На задачы з 6.8 адсотка станоўчых прыкладаў любы парог даў accuracy ў межах 0.8 пункта, пакуль паўната падала з 19.6 адсотка да 0.6. Адказ ніколі на ўсё запар дае 93.2. Матрыца памылак адрознівае гэтыя мадэлі імгненна, а адзін лік не адрознівае іх увогуле.</description><pubDate>Wed, 11 Jun 2014 00:00:00 GMT</pubDate></item><item><title>9 models, accuracy between 92.5 and 93.3, and 1 of them finds nothing</title><link>https://dimhold.by/blog/accuracy-lies-on-imbalance/</link><guid isPermaLink="true">https://dimhold.by/blog/accuracy-lies-on-imbalance/</guid><description>On a task with 6.8 percent positives, every threshold I tried scored within 0.8 points of the same accuracy while recall fell from 19.6 percent to 0.6. Answering never at all scores 93.2. The confusion matrix separates these models instantly and the single number cannot tell them apart at all.</description><pubDate>Wed, 11 Jun 2014 00:00:00 GMT</pubDate></item><item><title>9 моделей, accuracy от 92.5 до 93.3, и одна из них не находит ничего</title><link>https://dimhold.by/ru/blog/accuracy-lies-on-imbalance/</link><guid isPermaLink="true">https://dimhold.by/ru/blog/accuracy-lies-on-imbalance/</guid><description>На задаче с 6.8 процента положительных примеров любой порог дал accuracy в пределах 0.8 пункта, пока полнота падала с 19.6 процента до 0.6. Ответ никогда на всё подряд даёт 93.2. Матрица ошибок различает эти модели мгновенно, а одно число не различает их вообще.</description><pubDate>Wed, 11 Jun 2014 00:00:00 GMT</pubDate></item><item><title>The same code beat itself by 33 percent</title><link>https://dimhold.by/blog/same-code-beats-itself/</link><guid isPermaLink="true">https://dimhold.by/blog/same-code-beats-itself/</guid><description>I declared one function twice and timed the 2 copies against each other. On a single pair of rounds the identical code showed a 32.9 percent win, 10.6 percent of pairs produced a winner by more than 5 percent, and the first round of all ran 3.57 times slower than the settled median. Anything under about 3 percent on this machine is not a result.</description><pubDate>Wed, 11 Sep 2013 00:00:00 GMT</pubDate></item><item><title>Один и тот же код обогнал сам себя на 33 процента</title><link>https://dimhold.by/ru/blog/same-code-beats-itself/</link><guid isPermaLink="true">https://dimhold.by/ru/blog/same-code-beats-itself/</guid><description>Я объявил одну функцию дважды и померил две копии друг против друга. На одной паре раундов одинаковый код показал победу в 32.9 процента, 10.6 процента пар выдают победителя с разрывом больше 5 процентов, а самый первый раунд идёт в 3.57 раза медленнее установившейся медианы. Всё, что на этой машине меньше 3 процентов, это не результат.</description><pubDate>Wed, 11 Sep 2013 00:00:00 GMT</pubDate></item><item><title>Адзін і той жа код абагнаў сам сябе на 33 адсоткі</title><link>https://dimhold.by/be/blog/same-code-beats-itself/</link><guid isPermaLink="true">https://dimhold.by/be/blog/same-code-beats-itself/</guid><description>Я аб&apos;явіў адну функцыю двойчы і памераў дзве копіі адна супраць адной. На адной пары раўндаў аднолькавы код паказаў перамогу ў 32.9 адсотка, 10.6 адсотка пар выдаюць пераможцу з разрывам больш за 5 адсоткаў, а самы першы раўнд ідзе ў 3.57 раза павольней за ўсталяваную медыяну. Усё, што на гэтай машыне менш за 3 адсоткі, гэта не вынік.</description><pubDate>Wed, 11 Sep 2013 00:00:00 GMT</pubDate></item><item><title>Экран для пошуку падробак спрацоўвае на ліках, якіх ніхто не падрабляў</title><link>https://dimhold.by/be/blog/benford-first-digits/</link><guid isPermaLink="true">https://dimhold.by/be/blog/benford-first-digits/</guid><description>Закон Бенфарда прадаюць як экран: наводзіш на слупок лікаў і падробка відаць. Я навёў яго на 4 слупкі з аднаго рэпазіторыя, дзе падрабляць не было каму і навошта, і 3 з іх праваліліся. Горш за тое, два прынятыя тэсты даюць на тых самых даных супрацьлеглыя вердыкты: слупок, які прапускае MAD, адхіляе chi square.</description><pubDate>Wed, 12 Jun 2013 00:00:00 GMT</pubDate></item><item><title>The fraud screen fires on numbers nobody faked</title><link>https://dimhold.by/blog/benford-first-digits/</link><guid isPermaLink="true">https://dimhold.by/blog/benford-first-digits/</guid><description>Benford&apos;s law is sold as a screen you point at a column of numbers. I pointed it at 4 columns from one repository, where nobody had any reason to fake anything. 3 of them failed. Worse, the 2 standard tests disagree with each other on the same data: the one column MAD lets through is the one chi square rejects.</description><pubDate>Wed, 12 Jun 2013 00:00:00 GMT</pubDate></item><item><title>Экран для поиска подделок срабатывает на числах, которых никто не подделывал</title><link>https://dimhold.by/ru/blog/benford-first-digits/</link><guid isPermaLink="true">https://dimhold.by/ru/blog/benford-first-digits/</guid><description>Закон Бенфорда продают как экран: наводишь на столбец чисел и подделка видна. Я навёл его на 4 столбца из одного репозитория, где подделывать было некому и незачем. 3 из них провалились. Хуже того, два принятых теста дают на одних и тех же данных противоположные вердикты: столбец, который пропускает MAD, отвергает chi square.</description><pubDate>Wed, 12 Jun 2013 00:00:00 GMT</pubDate></item><item><title>93 percent of the work went to clients who had already left</title><link>https://dimhold.by/blog/retry-that-made-it-worse/</link><guid isPermaLink="true">https://dimhold.by/blog/retry-that-made-it-worse/</guid><description>I set out to measure how retries knock over a service under load. They do triple the traffic, 2.88 times in my rig, but they did not cause the collapse. The collapse was already there at 1.2 times capacity, because the queue got deeper than the client timeout and the server spent its whole day finishing requests nobody was waiting for.</description><pubDate>Wed, 10 Apr 2013 00:00:00 GMT</pubDate></item><item><title>93 адсоткі працы пайшлі кліентам, якія ўжо сышлі</title><link>https://dimhold.by/be/blog/retry-that-made-it-worse/</link><guid isPermaLink="true">https://dimhold.by/be/blog/retry-that-made-it-worse/</guid><description>Я збіраўся памераць, як паўторы валяць сэрвіс пад нагрузкай. Трафік яны сапраўды патройваюць, у маім стэндзе ў 2.88 раза, але абвал зрабілі не яны. Абвал быў ужо на 1.2 столі, бо чарга стала глыбейшай за кліенцкі таймаўт і сервер увесь дзень дарабляў запыты, якіх ужо ніхто не чакаў.</description><pubDate>Wed, 10 Apr 2013 00:00:00 GMT</pubDate></item><item><title>93 процента работы ушло клиентам, которые уже ушли</title><link>https://dimhold.by/ru/blog/retry-that-made-it-worse/</link><guid isPermaLink="true">https://dimhold.by/ru/blog/retry-that-made-it-worse/</guid><description>Я собирался померить, как повторы валят сервис под нагрузкой. Трафик они действительно утраивают, в моём стенде в 2.88 раза, но обвал устроили не они. Обвал был уже на 1.2 потолка, потому что очередь стала глубже клиентского таймаута и сервер весь день доделывал запросы, которых уже никто не ждал.</description><pubDate>Wed, 10 Apr 2013 00:00:00 GMT</pubDate></item><item><title>Таймаўт, які ты не паставіў, роўны 135 секундам</title><link>https://dimhold.by/be/blog/timeout-you-did-not-set/</link><guid isPermaLink="true">https://dimhold.by/be/blog/timeout-you-did-not-set/</guid><description>Я казаў, што запыт без таймаўта чакае вечна. Палова гэтага няслушная. Таймаўт на ўсталяванне злучэння ядро выдае незалежна ад таго, прасілі яго ці не, і на гэтай машыне ён спрацоўвае праз 135.3 секунды. Другая палова горшая за вечнасць: як толькі злучэнне паднялося, не лічыць увогуле ніхто.</description><pubDate>Wed, 13 Mar 2013 00:00:00 GMT</pubDate></item><item><title>The timeout you did not set is 135 seconds</title><link>https://dimhold.by/blog/timeout-you-did-not-set/</link><guid isPermaLink="true">https://dimhold.by/blog/timeout-you-did-not-set/</guid><description>I used to say that a request without a timeout waits forever. Half of that is wrong. The kernel hands you a connect timeout whether you ask for it or not, and on this machine it fires after 135.3 seconds. The other half is worse than forever: once the connection is up, nobody is counting at all.</description><pubDate>Wed, 13 Mar 2013 00:00:00 GMT</pubDate></item><item><title>Таймаут, который ты не поставил, равен 135 секундам</title><link>https://dimhold.by/ru/blog/timeout-you-did-not-set/</link><guid isPermaLink="true">https://dimhold.by/ru/blog/timeout-you-did-not-set/</guid><description>Я говорил, что запрос без таймаута ждёт вечно. Половина этого неверна. Таймаут на установку соединения ядро выдаёт независимо от того, просили его или нет. На этой машине он срабатывает через 135.3 секунды. Вторая половина хуже, чем вечность: как только соединение поднялось, не считает вообще никто.</description><pubDate>Wed, 13 Mar 2013 00:00:00 GMT</pubDate></item><item><title>199 запытаў пры ліміце 100, і ніхто не атакаваў</title><link>https://dimhold.by/be/blog/window-that-leaks-double/</link><guid isPermaLink="true">https://dimhold.by/be/blog/window-that-leaks-double/</guid><description>Лічыльнік у фіксаваным акне прапускае падвойную норму на мяжы, і гэта вядомы загана, якой патрэбны той, хто ведае, дзе мяжа. Токен-бакет, на які я з-за гэтага перайшоў, прапусціў 199 за адно акно на звычайным роўным патоку. Адзіны, хто ўтрымаў ліміт ва ўсіх 4 формах трафіку, гэта журнал адзнак, і ён каштуе ў 50 разоў больш памяці.</description><pubDate>Wed, 14 Nov 2012 00:00:00 GMT</pubDate></item><item><title>199 requests through a limit of 100, with nobody attacking</title><link>https://dimhold.by/blog/window-that-leaks-double/</link><guid isPermaLink="true">https://dimhold.by/blog/window-that-leaks-double/</guid><description>The fixed window counter leaks double at the boundary, which is the famous flaw. It also needs somebody who knows where the boundary is. The token bucket I switched to instead leaked 199 in a single window against ordinary steady traffic. Only the sliding log held the limit in all 4 traffic shapes, at 50 times the memory.</description><pubDate>Wed, 14 Nov 2012 00:00:00 GMT</pubDate></item><item><title>199 запросов при лимите 100, и никто не атаковал</title><link>https://dimhold.by/ru/blog/window-that-leaks-double/</link><guid isPermaLink="true">https://dimhold.by/ru/blog/window-that-leaks-double/</guid><description>Счётчик в фиксированном окне пропускает двойную норму на границе. Это известный изъян, которому нужен тот, кто знает, где граница. Токен-бакет, на который я из-за этого перешёл, пропустил 199 за одно окно на обычном ровном потоке. Единственный, кто удержал лимит во всех 4 формах трафика, это журнал отметок, а стоит он в 50 раз больше памяти.</description><pubDate>Wed, 14 Nov 2012 00:00:00 GMT</pubDate></item><item><title>Другая старонка паўтарыла радок з першай, і нічога пры гэтым не зламалася</title><link>https://dimhold.by/be/blog/offset-pagination-lies/</link><guid isPermaLink="true">https://dimhold.by/be/blog/offset-pagination-lies/</guid><description>Адна ўстаўка ў пачатак парадку прывяла да таго, што другая старонка пачалася з апошняга радка першай. Абодва запыты слушныя. Яшчэ гартанне праз OFFSET на глыбіні чытае 900020 радкоў, каб вярнуць 20, і траціць 69.5 мілісекунды супраць 1.5 у той жа старонкі па ключы. План запыту кажа пра гэта простым тэкстам.</description><pubDate>Wed, 10 Oct 2012 00:00:00 GMT</pubDate></item><item><title>Page 2 repeated a row from page 1 and nothing was broken</title><link>https://dimhold.by/blog/offset-pagination-lies/</link><guid isPermaLink="true">https://dimhold.by/blog/offset-pagination-lies/</guid><description>A single insert at the front of the order made the second page start with the last row of the first one. Both queries are correct. Paging by offset also reads 900020 rows to return 20 at the deep end, taking 69.5 ms against 1.5 for the same page fetched by key, and the plan says so out loud.</description><pubDate>Wed, 10 Oct 2012 00:00:00 GMT</pubDate></item><item><title>Вторая страница повторила строку с первой, и ничего при этом не сломалось</title><link>https://dimhold.by/ru/blog/offset-pagination-lies/</link><guid isPermaLink="true">https://dimhold.by/ru/blog/offset-pagination-lies/</guid><description>Одна вставка в начало порядка привела к тому, что вторая страница началась с последней строки первой. Оба запроса верные. Ещё листание через OFFSET на глубине читает 900020 строк, чтобы вернуть 20, и тратит 69.5 миллисекунды против 1.5 у той же страницы по ключу. План запроса говорит об этом прямым текстом.</description><pubDate>Wed, 10 Oct 2012 00:00:00 GMT</pubDate></item><item><title>Load average 8 двойчы, і гэта былі розныя рэчы</title><link>https://dimhold.by/be/blog/load-average-is-not-cpu/</link><guid isPermaLink="true">https://dimhold.by/be/blog/load-average-is-not-cpu/</guid><description>На серверы з 4 ядрамі я атрымаў load average 8.19 пры працэсары на 99 адсоткаў і load average 8.10 пры працэсары, які працуе 36 адсоткаў часу, і 7 працэсах, якія захраслі на дыску. Адна і тая ж трывога, супрацьлеглае лячэнне. А пасля цэлай хвіліны чатырох забітых ядраў хвілінны лік усё яшчэ паказваў 2.67.</description><pubDate>Wed, 15 Aug 2012 00:00:00 GMT</pubDate></item><item><title>Load average 8 twice, and it meant 2 different things</title><link>https://dimhold.by/blog/load-average-is-not-cpu/</link><guid isPermaLink="true">https://dimhold.by/blog/load-average-is-not-cpu/</guid><description>On a 4 core server I produced a load average of 8.19 with the processor at 99 percent and a load average of 8.10 with the processor doing real work 36 percent of the time and 7 processes stuck on the disk. Same alarm, opposite fix. And after a full minute of 4 pegged cores the 1 minute figure still read 2.67.</description><pubDate>Wed, 15 Aug 2012 00:00:00 GMT</pubDate></item><item><title>Load average 8 дважды, и это были разные вещи</title><link>https://dimhold.by/ru/blog/load-average-is-not-cpu/</link><guid isPermaLink="true">https://dimhold.by/ru/blog/load-average-is-not-cpu/</guid><description>На сервере с 4 ядрами я получил load average 8.19 при процессоре на 99 процентов и load average 8.10 при процессоре, который работает 36 процентов времени, и 7 процессах, застрявших на диске. Одна и та же тревога, противоположное лечение. А после целой минуты четырёх забитых ядер минутное число всё ещё показывало 2.67.</description><pubDate>Wed, 15 Aug 2012 00:00:00 GMT</pubDate></item><item><title>Усталёўка grunt кладзе мне на дыск код 32 чалавек</title><link>https://dimhold.by/be/blog/npm-small-blocks/</link><guid isPermaLink="true">https://dimhold.by/be/blog/npm-small-blocks/</guid><description>Я абышоў граф залежнасцей 6 пакетаў такімі, якімі іх запісаў рэестр на сёння. Grunt прыносіць 51 пакет, напісаны 32 людзьмі. Абяцанне пра дробныя кубікі літаральна слушнае, бо 40 пакетаў з 67 не залежаць увогуле ні ад чаго, але ў 56 з тых жа 67 роўна адзін суправаджальнік, а 3 імені трымаюць 26 пакетаў.</description><pubDate>Wed, 16 May 2012 00:00:00 GMT</pubDate></item><item><title>Installing grunt puts code from 32 people on my disk</title><link>https://dimhold.by/blog/npm-small-blocks/</link><guid isPermaLink="true">https://dimhold.by/blog/npm-small-blocks/</guid><description>I walked the dependency graph of 6 packages as the registry recorded them today. Grunt brings 51 packages written by 32 people. The small blocks pitch is literally true, since 40 of the 67 packages have no dependencies at all, but 56 of those 67 have exactly 1 maintainer and 3 names account for 26 of them.</description><pubDate>Wed, 16 May 2012 00:00:00 GMT</pubDate></item><item><title>Установка grunt кладёт мне на диск код 32 человек</title><link>https://dimhold.by/ru/blog/npm-small-blocks/</link><guid isPermaLink="true">https://dimhold.by/ru/blog/npm-small-blocks/</guid><description>Я обошёл граф зависимостей 6 пакетов такими, какими их записал реестр на сегодня. Grunt приносит 51 пакет, написанный 32 людьми. Обещание про мелкие кубики буквально верно, потому что 40 пакетов из 67 не зависят вообще ни от чего, но у 56 из тех же 67 ровно один сопровождающий, а 3 имени держат 26 пакетов.</description><pubDate>Wed, 16 May 2012 00:00:00 GMT</pubDate></item><item><title>344 скачкі гадзінніка за гэты год, два з іх на цэлыя суткі</title><link>https://dimhold.by/be/blog/timezones-that-skip/</link><guid isPermaLink="true">https://dimhold.by/be/blog/timezones-that-skip/</guid><description>Я прачытаў усе зоны базы за 2011 год і ўдакладніў кожны скачок да хвіліны. 336 скачкоў з 344 гэта звыклая гадзіна. Астатнія 8 гэта 30 хвілін, 2 гадзіны, 3 гадзіны і двойчы па 1440 хвілін: 30 снежня, праз 9 дзён, дзве зоны губляюць цэлыя суткі. А 26 зон скончаць год на гадзіну далей ад таго месца, з якога пачалі.</description><pubDate>Wed, 21 Dec 2011 00:00:00 GMT</pubDate></item><item><title>344 clock jumps this year, 2 of them a whole day</title><link>https://dimhold.by/blog/timezones-that-skip/</link><guid isPermaLink="true">https://dimhold.by/blog/timezones-that-skip/</guid><description>I read every zone in the database for 2011 and refined each jump to the minute. 336 of the 344 jumps are the familiar hour. The other 8 are 30 minutes, 2 hours, 3 hours and twice 1440 minutes: on 30 December, 9 days from now, 2 zones lose the whole day. And 26 zones will finish the year an hour away from where they started it.</description><pubDate>Wed, 21 Dec 2011 00:00:00 GMT</pubDate></item><item><title>344 скачка часов за этот год, два из них на целые сутки</title><link>https://dimhold.by/ru/blog/timezones-that-skip/</link><guid isPermaLink="true">https://dimhold.by/ru/blog/timezones-that-skip/</guid><description>Я прочитал все зоны базы за 2011 год и уточнил каждый скачок до минуты. 336 скачков из 344 это привычный час. Остальные 8 это 30 минут, 2 часа, 3 часа и дважды по 1440 минут: 30 декабря, через 9 дней, две зоны теряют целые сутки. А 26 зон закончат год на час дальше от того места, с которого начали.</description><pubDate>Wed, 21 Dec 2011 00:00:00 GMT</pubDate></item><item><title>The imul that never runs</title><link>https://dimhold.by/blog/imul-that-never-runs/</link><guid isPermaLink="true">https://dimhold.by/blog/imul-that-never-runs/</guid><description>javac keeps the difference between x * 2 and x &lt;&lt; 1. Nothing below javac keeps it in a form you can measure. The only multiply left in the compiled loop is one the compiler put there itself.</description><pubDate>Wed, 14 Dec 2011 00:00:00 GMT</pubDate></item><item><title>imul, які ніколі не выконваецца</title><link>https://dimhold.by/be/blog/imul-that-never-runs/</link><guid isPermaLink="true">https://dimhold.by/be/blog/imul-that-never-runs/</guid><description>javac захоўвае розніцу паміж x * 2 і x &lt;&lt; 1. Ніжэй за javac яе ўжо не змерыць. Адзінае множанне, якое засталося ў скампіляваным цыкле, кампілятар паставіў туды сам.</description><pubDate>Wed, 14 Dec 2011 00:00:00 GMT</pubDate></item><item><title>imul, который никогда не исполняется</title><link>https://dimhold.by/ru/blog/imul-that-never-runs/</link><guid isPermaLink="true">https://dimhold.by/ru/blog/imul-that-never-runs/</guid><description>javac сохраняет разницу между x * 2 и x &lt;&lt; 1. Ниже javac её уже не измерить. Единственное умножение, оставшееся в скомпилированном цикле, компилятор поставил туда сам.</description><pubDate>Wed, 14 Dec 2011 00:00:00 GMT</pubDate></item><item><title>Коміт, сабраны рукамі: 187 байтаў</title><link>https://dimhold.by/be/blog/git-object-model/</link><guid isPermaLink="true">https://dimhold.by/be/blog/git-object-model/</guid><description>Пяць выклікаў пламбінга даюць коміт, і git log яго чытае. Адзінаццаць рэвізій файла на 1703 радкі каштуюць 187576 байтаў свабоднымі аб’ектамі супраць 16490 у пакеце. Базай дэльты выяўляецца самая новая версія файла.</description><pubDate>Wed, 07 Dec 2011 00:00:00 GMT</pubDate></item><item><title>Коммит, собранный руками: 187 байт</title><link>https://dimhold.by/ru/blog/git-object-model/</link><guid isPermaLink="true">https://dimhold.by/ru/blog/git-object-model/</guid><description>Пять вызовов пламбинга дают коммит, который читает git log. Одиннадцать ревизий файла в 1703 строки стоят 187576 байт свободными объектами против 16490 в пакете. Базой дельты оказывается самая новая версия файла.</description><pubDate>Wed, 07 Dec 2011 00:00:00 GMT</pubDate></item><item><title>A commit built by hand: 187 bytes</title><link>https://dimhold.by/blog/git-object-model/</link><guid isPermaLink="true">https://dimhold.by/blog/git-object-model/</guid><description>5 plumbing calls make a commit that git log reads. 11 revisions of one 1703 line file cost 187576 bytes loose against 16490 packed. The delta base turns out to be the newest version of the file.</description><pubDate>Wed, 07 Dec 2011 00:00:00 GMT</pubDate></item><item><title>Option замест null: 16 байтаў, якіх я не знайшоў</title><link>https://dimhold.by/be/blog/option-vs-null/</link><guid isPermaLink="true">https://dimhold.by/be/blog/option-vs-null/</guid><description>Тры розныя абрывы аднаго ланцужка даюць адзін і той жа NullPointerException з пустым паведамленнем. Option ператварае ўсе тры ў None. А потым лічыльнік алакацый кажа, што Some не каштуе нічога. Знайсці сам Some атрымліваецца толькі праз -XX:-DoEscapeAnalysis.</description><pubDate>Wed, 30 Nov 2011 00:00:00 GMT</pubDate></item><item><title>Option instead of null: the 16 bytes I could not find</title><link>https://dimhold.by/blog/option-vs-null/</link><guid isPermaLink="true">https://dimhold.by/blog/option-vs-null/</guid><description>3 broken links in one chain give the same NullPointerException with an empty message. Option turns all 3 into None. Then the allocation counter says the Some costs nothing and it takes -XX:-DoEscapeAnalysis to find it.</description><pubDate>Wed, 30 Nov 2011 00:00:00 GMT</pubDate></item><item><title>Option вместо null: 16 байт, которых я не нашёл</title><link>https://dimhold.by/ru/blog/option-vs-null/</link><guid isPermaLink="true">https://dimhold.by/ru/blog/option-vs-null/</guid><description>Три разных обрыва одной цепочки дают один и тот же NullPointerException с пустым сообщением. Option превращает все три в None. А потом счётчик аллокаций говорит, что Some не стоит ничего. Найти сам Some получается только через -XX:-DoEscapeAnalysis.</description><pubDate>Wed, 30 Nov 2011 00:00:00 GMT</pubDate></item><item><title>A uuid primary key: 172 seconds against 59</title><link>https://dimhold.by/blog/uuid-against-bigint/</link><guid isPermaLink="true">https://dimhold.by/blog/uuid-against-bigint/</guid><description>16 bytes against 8 is 40 percent more index. Arrival order adds another 23 percent on top of that, plus 3 times the insert time once the index outgrows shared_buffers.</description><pubDate>Wed, 23 Nov 2011 00:00:00 GMT</pubDate></item><item><title>Першасны ключ uuid: 172 секунды супраць 59</title><link>https://dimhold.by/be/blog/uuid-against-bigint/</link><guid isPermaLink="true">https://dimhold.by/be/blog/uuid-against-bigint/</guid><description>Шаснаццаць байтаў супраць васьмі гэта плюс 40 працэнтаў да індэкса. Парадак паступлення дадае зверху яшчэ 23 працэнты і робіць час устаўкі ў тры разы большым, калі індэкс перастае змяшчацца ў shared_buffers.</description><pubDate>Wed, 23 Nov 2011 00:00:00 GMT</pubDate></item><item><title>Первичный ключ uuid: 172 секунды против 59</title><link>https://dimhold.by/ru/blog/uuid-against-bigint/</link><guid isPermaLink="true">https://dimhold.by/ru/blog/uuid-against-bigint/</guid><description>Шестнадцать байт против восьми это плюс 40 процентов к индексу. Порядок поступления добавляет сверху ещё 23 процента и трёхкратное время вставки, когда индекс перестаёт помещаться в shared_buffers.</description><pubDate>Wed, 23 Nov 2011 00:00:00 GMT</pubDate></item><item><title>Грошы ў double: 4.35 * 100 выходзіць 434</title><link>https://dimhold.by/be/blog/money-in-a-double/</link><guid isPermaLink="true">https://dimhold.by/be/blog/money-in-a-double/</guid><description>Чатыры цаны са ста дакладныя ў double. На мільёне сум капейка гублялася толькі на дакладнай палове: 3656 такіх пры стаўцы 18 працэнтаў, нуль пры 20.</description><pubDate>Wed, 16 Nov 2011 00:00:00 GMT</pubDate></item><item><title>Деньги в double: 4.35 * 100 выходит 434</title><link>https://dimhold.by/ru/blog/money-in-a-double/</link><guid isPermaLink="true">https://dimhold.by/ru/blog/money-in-a-double/</guid><description>Четыре цены из ста точны в double. На миллионе сумм копейка терялась только на точной половине: 3656 таких при ставке 18 процентов, ноль при 20.</description><pubDate>Wed, 16 Nov 2011 00:00:00 GMT</pubDate></item><item><title>Money in a double: 4.35 * 100 comes out 434</title><link>https://dimhold.by/blog/money-in-a-double/</link><guid isPermaLink="true">https://dimhold.by/blog/money-in-a-double/</guid><description>4 prices in every 100 are exact doubles. Across a million amounts the wrong kopeck only ever turned up on an exact half: 3656 of them at 18 percent, none at 20.</description><pubDate>Wed, 16 Nov 2011 00:00:00 GMT</pubDate></item><item><title>Reading UTF-8 as 1251: &quot;РџСЂРёРІРµС‚&quot;</title><link>https://dimhold.by/blog/mojibake-byte-by-byte/</link><guid isPermaLink="true">https://dimhold.by/blog/mojibake-byte-by-byte/</guid><description>Mojibake is deterministic. 6 letters, 12 bytes and 5 code pages, plus a byte table that tells you which pair of encodings collided.</description><pubDate>Wed, 09 Nov 2011 00:00:00 GMT</pubDate></item><item><title>Читаем UTF-8 как 1251: &quot;РџСЂРёРІРµС‚&quot;</title><link>https://dimhold.by/ru/blog/mojibake-byte-by-byte/</link><guid isPermaLink="true">https://dimhold.by/ru/blog/mojibake-byte-by-byte/</guid><description>Кракозябры детерминированы. Шесть букв, двенадцать байт, пять кодовых страниц и таблица, по которой видно, какая пара кодировок столкнулась.</description><pubDate>Wed, 09 Nov 2011 00:00:00 GMT</pubDate></item><item><title>Чытаем UTF-8 як 1251: &quot;РџСЂРёРІРµС‚&quot;</title><link>https://dimhold.by/be/blog/mojibake-byte-by-byte/</link><guid isPermaLink="true">https://dimhold.by/be/blog/mojibake-byte-by-byte/</guid><description>Краказябры дэтэрмінаваныя. Шэсць літар, дванаццаць байтаў, пяць кодавых старонак і табліца, паводле якой відаць, якая пара кадовак сутыкнулася.</description><pubDate>Wed, 09 Nov 2011 00:00:00 GMT</pubDate></item></channel></rss>