Journal de Chaource
The following are the titles of recent articles syndicated from Journal de Chaource
Add this feed to your friends list for news aggregation, or view this feed's syndication information.

LJ.Rossia.org makes no claim to the content supplied through this journal account. Articles are retrieved via a public feed supplied by the site for this purpose.

[ << Previous 20 ]
Tuesday, November 12th, 2019
LJ.Rossia.org makes no claim to the content supplied through this journal account. Articles are retrieved via a public feed supplied by the site for this purpose.
6:54 pm
Hände weg vom Grundgesetz – 'Kinderrechte' sind gefährlich!
https://www.citizengo.org/de/fm/174970-haende-weg-vom-grundgesetz-kinderrechte-sind-gefaehrlich

Конституцiя Германiи это тотъ еще циркъ, но всемогущее государство намъ не нужно.
Saturday, November 9th, 2019
LJ.Rossia.org makes no claim to the content supplied through this journal account. Articles are retrieved via a public feed supplied by the site for this purpose.
10:48 pm
Max Reger. Orgelsonaten
Erste Sonate op. 33

https://www.youtube.com/watch?v=swPdVADGHmg (First part only) - Iveta Apkalna

https://www.youtube.com/watch?v=v-JN8OfxdPc (Complete sonata)

The first part is the most interesting one. The last part, Passacaglia, is quite similar to Reger's most well known Introduktion und Passacaglia.

https://youtu.be/ZWNo-F7Jyms?t=135


Zweite Sonate op. 60

https://www.youtube.com/watch?v=vMzUOyQllWU - Martin Sander. Very good performance.


Never heard of Iveta Apkalna, but her interpretation was good.
What else I could find by Apkalna:

https://www.youtube.com/watch?v=AOkrLX-i5bE Kalējs - Allein Gott in der Hoh sei Ehr (Iveta Apkalna, organ)
Thursday, October 31st, 2019
LJ.Rossia.org makes no claim to the content supplied through this journal account. Articles are retrieved via a public feed supplied by the site for this purpose.
5:32 pm
Памяти Владимiра Буковскаго. Видеозаписи
https://www.youtube.com/playlist?list=PLemK5RNuQfApfsZmhcFC2smSeNTH0x2Iv

via https://alex-moma.livejournal.com/
Tuesday, October 29th, 2019
LJ.Rossia.org makes no claim to the content supplied through this journal account. Articles are retrieved via a public feed supplied by the site for this purpose.
1:21 am
Почему и когда теорiя категорiй полезна для программированiя
(Развернутая версiя комментарiевъ здѣсь https://www.dreamwidth.org/go?redir_type=threadroot&journal=epimorphisms_split&talkid=15546 . Предполагается, что читатель - математикъ.)

1. Разсмотримъ какой-либо языкъ программированiя, гдѣ есть "типы данныхъ" (Int, Float, String, Boolean, Array of String, ...) и они провѣряются при компиляцiи, чтобы функцiи никогда не могли быть вызваны съ аргументомъ неправильнаго типа.

2. Каждому такому языку программированiя сопоставимъ категорiю, опредѣляемую слѣдующимъ образом.

Объекты - это всѣ типы данныхъ, поддерживаемыхъ языкомъ программированiя. Т.е. въ этой категорiи будетъ объект Int, объектъ String, объектъ Boolean, объектъ "Array of String", и т.д.

Морфизмы - это всѣ функцiи однаго аргумента, которыя можно запрограммировать на данномъ языкѣ программированiя. Морфизмъ между объектами A и B это какая-либо функцiя съ аргументомъ типа A и возвращающая значенiе типа B.

Напримѣръ, какiе есть морфизмы между объектами Boolean и Int? Это функцiи съ булевымъ аргументомъ и цѣлымъ числомъ въ качествѣ результата. Такихъ функцiй столько же, сколько паръ цѣлыхъ чиселъ. Вотъ, значитъ, получаемъ довольно много всякихъ морфизмовъ.

Аксiомы категорiи выполнены, потому что (1) всегда существуетъ тождественный морфизмъ A -> A, т.е. функцiя, берущая аргументъ типа А и возвращающая это же значенiе. На любомъ языкѣ легко написать кодъ для тождественной функцiи: function(x) { return x } или что-то въ этомъ родѣ. (2) Функцiи подходящихъ типовъ можно примѣнять одну за другой къ аргументу, и получится композицiя морфизмовъ. Сначала примѣнить функцiю A -> B къ аргументу типа А, получить значенiе типа В. Потомъ примѣнить функцiю B -> C, получится значенiе типа С. Значитъ, получилась функцiя A -> C. Кодъ для этой функцiи можно легко написать, значитъ этотъ морфизмъ существуетъ. (3) Композицiя функцiй ассоцiативна и тождественная функцiя работаетъ правильно въ композицiи.

Вотъ и все, категорiю мы опредѣлили. Теперь будемъ съ ней работать, намъ почти никогда не понадобятся какiя-либо другiя категорiи. Можемъ на основѣ этой категорiи опредѣлить другiя вспомогательныя категорiи, напримѣръ обратную къ данной, или категорное произведенiе двухъ копiй данной категорiи. Или категорiю эндофункторовъ этой категорiи. Но всегда главной явлется именно категорiя "типы / функцiи", которую мы опредѣлили.

3. Что такое эндофункторъ въ такой категорiи? Это отображенiе типовъ и одновременно отображенiе морфизмовъ.

Хорошiй примѣръ эндофунктора - это типъ данныхъ "Array". Въ нѣкоторыхъ языкахъ программированiя можно обобщить такой типъ на "Array of Х", гдѣ Х - произвольный типъ данныхъ. Тогда "Array" можно понимать какъ отображенiе изъ типовъ въ типы. Изъ Boolean -> въ Array of Boolean, изъ Array of String -> въ Array of Array of String, и т.д.

Для эндофунктора, кромѣ отображенiя объектовъ, еще нужно отображенiе морфизмовъ. По опредѣленiю, нужно для любого морфизма f: A -> B какъ-то получить морфизмъ g: Array of A -> Array of B. Какъ мы можемъ написать программный кодъ для морфизма g? Надо написать циклъ по массиву "Array of A", примѣнить функцiю f къ каждому элементу массива, получить результаты (значенiя типа B) и положить всѣ эти результаты въ томъ-же порядкѣ въ новый массивъ. Получится значенiе типа Array of B, т.е. мы написали кодъ для морфизма g: Array of A -> Array of B. Дальше, можно провѣрить, что необходимыя свойства эндофунктора будутъ тогда выполнены.

Преобразованiе изъ f въ g называется "fmap" на Haskell и "map" на языкѣ Scala. То есть, программисту достаточно написать функцiю "fmap" съ аргументомъ типа (A -> B) и возвращаемымъ значенiемъ типа "функцiя изъ Array of A въ Array of B". Тогда g = fmap(f). Это реализуетъ кодъ для эндофунктора "Array".

Въ практической работѣ это оказалось жутко полезной вещью. Оказалось, что очень много типовъ данныхъ можно обобщить и сдѣлать изъ нихъ эндофункторы. И потомъ писать очень короткiй кодъ, въ которомъ вездѣ только map(), map(), map(). И ни одного цикла руками не надо больше писать!

А свойства эндофунктора, оказывается, это то же самое, что математическая формулировка интуитивнаго пониманiя программиста о томъ, что значитъ "примѣнить функцiю f къ каждому элементу набора данныхъ, оставивъ порядокъ элементовъ такимъ-же". Поскольку математическiя свойства эндофунктора Array (и другихъ эндофункторовъ) гарантируются, программистъ можетъ смѣло полагаться на свою интуицiю и кодъ становится легко писать, читать и понимать. Гораздо легче, чѣмъ кодъ съ циклами.

4. Что такое естественное преобразованiе? Это отображенiе между эндофункторами, которое реализуется программнымъ кодомъ, не зависящимъ отъ типа данныхъ подъ эндофункторомъ. Напримѣръ, "переставить задомъ напередъ порядокъ элементовъ массива" это естественное преобразованiе Array -> Array. Компонента этого естественнаго преобразованiя для объекта А есть морфизмъ Array of A -> Array of A. Поскольку морфизмы нашей категорiи - это функцiи, значитъ, программистъ долженъ для каждаго типа А написать кодъ функцiи съ аргументомъ типа "Array of A" и результатомъ того же типа. Во многихъ языкахъ программированiя можно легко написать одинъ разъ кодъ этой функцiи, который будетъ переставлять задомъ напередъ порядокъ элементовъ массива и будетъ работать одинаковымъ образомъ для любого типа А (т.е. это будетъ кодъ, "параметризованный" типомъ А). Свойства естественнаго преобразованiя тогда будутъ выполняться автоматически для такого кода. (Это называется "parametricity theorem".)

Вотъ поэтому оказалось, что въ языкахъ съ поддержкой параметровъ типа (т.е. можно писать кодъ сразу для всѣхъ типовъ А), теорiя категорiй полезна. Свойства естественнаго преобразованiя оказались математической формулировкой интуицiи программиста о томъ, что это значитъ, когда "кодъ написанъ одинъ разъ и работаетъ одинаковымъ образомъ съ любыми типами данныхъ".

5. Мы опредѣлили морфизмы между объектами А и В какъ функцiи одного аргумента (типа А). Но в языкахъ программированiя бываютъ и функцiи многихъ аргументовъ. Что дѣлать съ ними? Запрѣтить ихъ, оставить только функцiи одного аргумента. А вмѣсто функцiй многихъ аргументовъ, есть 2 варiанта, чѣмъ ихъ замѣнить. Первый варiантъ - въ языкѣ должны быть "records" или "tuples" (по-русски "кортежи"), т.е. наборы изъ нѣсколькихъ значенiй разныхъ типовъ. Напримѣръ, кортежъ (Int, Int, String) состоитъ изъ 3 частей - два цѣлыхъ числа и одна строка. Пусть у насъ есть функцiя f(x, y, z), которая возвращаетъ Boolean, а аргументы x: Int, y: Int, z: String. Надо помѣстить всѣ аргументы въ одинъ кортежъ (Int, Int, String). Получится функцiя формально одного аргумента.

(Int, Int, String) -> Boolean

Второй варiантъ - сдѣлать функцiю отъ перваго аргумента, которая въ качествѣ значенiя возвращаетъ функцiю отъ второго аргумента, которая въ качествѣ значенiя возвращаетъ функцiю третьяго аргумента, которая уже возвращаетъ Boolean.

Int -> (Int -> (String -> Boolean))

Это работаетъ, если въ категорiи существуютъ экспоненты (т.е. String -> Boolean является въ языкѣ программированiя допустимымъ типомъ, и значенiе такого типа можно возвратить изъ функцiи или взять въ качествѣ аргумента функцiи). Гдѣ-то между 2010 и 2015 годами, экспоненты (т.е. возможность возвратить функцiю или взять функцiю въ качествѣ аргумента) были добавлены практически во всѣ языки программированiя, потому что люди наконецъ поняли, гдѣ счастье.

6. Каждый языкъ программированiя будетъ давать свою какую-то категорiю. Чѣмъ эта категорiя богаче свойствами, тѣмъ для программированiя лучше. Напримѣръ, очень полезно, чтобы были терминальный объект и иницiальный объектъ (initial object, terminal object - не знаю, какъ по-русски). Очень полезно, чтобы были произведенiя (это кортежи) и ко-произведенiя (это дизъюнктивные типы, называемые также "варiанты" или "помѣченныя суммы"). И чтобы объекты-экспоненты тоже были. Поэтому, создатели новыхъ языковъ программированiя это учитываютъ и создаютъ соотвѣтствующiе языки. Въ языкахъ С++, Java, Python, ... нету ни initial object / terminal object, ни ко-произведенiй, и это дѣлаетъ кодъ уродливымъ для цѣлаго ряда задачъ.

Новые языки (Swift, Rust) учитываютъ это. А вотъ Гуглъ сдѣлалъ языки Dart и Go, которые ничего этого не учитываютъ. Потому что тупыыыыые. И у этого есть цѣна - они теперь будутъ писать миллiоны строкъ кода съ ошибками, вмѣсто десятковъ тысячъ строкъ кода безъ ошибокъ.

7. Теперь важный вопрос - а что даетъ теорiя категорiй программисту, который не хочетъ создавать новый языкъ, а хочетъ написать конкретную программу? Программистъ можетъ легко научиться работать съ Array of X, и съ функцiей map, ничего не зная объ эндофункторахъ. И это правильно - не нужно усложнять работу безъ надобности.

Теорiя категорiй нужна лишь въ очень ограниченномъ объемѣ и лишь для опредѣленнаго круга задачъ программированiя. А именно, знанiе нѣкоторыхъ понятiй теорiи категорiй (и лемма Йонеды) помогаютъ въ созданiи библiотекъ опредѣленнаго вида, гдѣ важна абстракцiя на уровнѣ типовъ и эндофункторовъ. Напримѣръ, можно написать общую библiотеку для работы съ эндофункторами. Тамъ будутъ функцiи для произведенiя и ко-произведенiя эндофункторовъ, или, скажемъ, функцiи для того, чтобы создать эндофункторъ-монаду, свободно порожденную любымъ даннымъ эндофункторомъ, и потомъ работать съ этой свободной монадой (скажемъ, автоматически находить естественное преобразованiе въ другую монаду). Кодъ, получающiйся изъ этого, сегодня широко используется въ узкихъ кругахъ для написанiя Индустрiальныхъ Программъ Для Большого Бизнеса (тм). У такого кода есть важныя преимущества, - онъ практически гарантируетъ отсутствiе глупыхъ баговъ типа "вездѣ мы сдѣлали записи о найденныхъ ошибкахъ, а вотъ здѣсь забыли вписать этотъ кодъ". Если свободная монада дѣлаетъ записи о найденныхъ ошибкахъ, то она всегда ихъ дѣлаетъ правильно, потому что кодъ для этого написанъ одинъ разъ и онъ очень общiй.

Есть библiотеки, которыя сегодня широко используются опять-таки въ узкихъ кругахъ, гдѣ есть функцiя для автоматическаго разложенiя полиномiальнаго эндофунктора на произведенiя и ко-произведенiя, и исходя изъ этого, производится автоматическое написанiе правильнаго программнаго кода (функцiи map) для любого полиномiальнаго эндофунктора, заданнаго лишь своимъ типомъ. Знанiе такихъ библiотекъ позволяетъ сократить кодъ программъ и уменьшить вѣроятность ошибокъ въ кодѣ. А знанiе необходимыхъ математическихъ свойствъ (мотивированныхъ теорiей категорiй) направляетъ программиста въ правильную сторону при написанiи кода этихъ библiотекъ.

Однако, если программисту не нужны функцiи, работающiя сразу съ любыми эндофункторами, если онъ не пишетъ такiя библiотеки и не пользуется ими, то теорiя категорiй ему тоже не нужна.

8. Для практическаго программированiя еще оказалось необходимымъ разработать рядъ конструкцiй, которыя обычно мало освѣщаются въ математической литературѣ по теорiи категорiй. Напримѣръ, кромѣ эндофункторовъ (операцiя "map"), въ функцiональномъ программированiи на практикѣ много используются эндофункторы съ операцiями "filter", "zip", "traverse", "fold", а также эндофункторы-монады, одновременно иногда имѣющiя и "filter", "traverse", "fold". Математическая формулировка этихъ свойствъ и написанiе кода, который правильно отражаетъ эти свойства, необходимы для написанiя правильно работающихъ библiотекъ. Эти свойства можно сформулировать въ общемъ видѣ для произвольной категорiи съ какими-то дополнительными структурами, однако, онѣ малоинтересны для математиковъ, поэтому вы не найдете опредѣленiй "filterable functor", "traversable functor", "foldable functor" въ математической литературѣ.

Но эндофункторы съ такими операцiями какъ разъ очень важны для программированiя. Теорiя категорiй даетъ, во-первыхъ, удобный языкъ для описанiя этихъ конструкцiй (эндофункторы, естественныя преобразованiя, коммутативныя дiаграммы), и во-вторыхъ, даетъ интуицiю о томъ, какiе предположенiя разумно дѣлать о математическихъ свойствахъ всѣхъ этихъ штукъ (и слѣдовательно, какъ правильно написать кодъ для соотвѣтствующихъ морфизмовъ).

Напримѣръ, если нѣчто является функторомъ, то у него два свойства - тождественный морфизмъ переходитъ въ тождественный, а композицiя морфизмовъ переходитъ въ композицiю. Если нѣчто является моноидомъ, то у него три свойства - лѣвое тождественное, правое тождественное, и ассоцiативность. Если нѣчто является естественнымъ преобразованiемъ, то такая-то извѣстная дiаграмма должна быть коммутативна.

Теперь, если мы (программисты) нашли конструкцiю, о которой математики не упоминаютъ (скажемъ, эндофункторъ съ операцiей filter), и намъ удалось показать, что она эквивалентна какому-то функтору, - то значитъ, мы ожидаемъ имѣть два извѣстныхъ свойства, не больше и не меньше. Это даетъ намъ увѣренность, что мы правильно угадали свойства этой конструкцiи и, стало быть, правильно написали кодъ для тѣхъ или иныхъ функцiй-морфизмовъ.

9. Въ чемъ польза именно отъ языка категорiй, а не просто отъ изслѣдованiя "на колѣнкѣ" разныхъ свойствъ функцiи map, функцiи filter, и т.д.? Въ общемъ, какъ я сказалъ въ пунктѣ 7, пользы нѣтъ до тѣхъ поръ, пока мы не начнемъ использовать функцiи, которыя должны одинаково работать съ любыми эндофункторами или болѣе общо съ любыми функторами между данными двумя категорiями (какъ-то нами построенными изъ исходной категорiи объектовъ-типовъ и морфизмовъ-функцiй). Примѣръ такой функцiи - построенiе свободной монады, порожденной заданнымъ эндофункторомъ. Это одинаково работаетъ для любого эндофунктора. Гдѣ-то между 2012 и 2016 годами, такая штука стала использоваться программистами довольно существенно. Объяснить, почему это такъ и въ чемъ польза для программиста отъ свободной монады, - это длинная исторiя.

10. Въ чемъ разница между "дѣлай одно и то же со всѣми элементами массива" и "повторяй до тѣхъ поръ, пока..."? Это какъ разъ хорошiй примѣръ, почему при изслѣдованiи программированiя возникаетъ категорный языкъ.

Только надо сначала сформулировать "до тѣхъ поръ, пока" въ видѣ функцiи, такъ же, какъ мы раньше сформулировали "дѣлай для всѣхъ элементовъ" въ видѣ функцiи.

Разъ нужна функцiя, то надо возвращать значенiе какого-то опредѣленнаго типа. Пусть это будетъ Array of X. Мы скопируемъ элементы массива одинъ за другимъ въ новый массивъ, пока выполняется какое-то условiе. Новый массивъ можетъ оказаться короче исходнаго. (Эта операцiя равносильна "до тѣхъ поръ, пока".)

"примѣни функцiю f: X -> Y ко всѣмъ элементамъ массива" это функцiя fmap(f): Array[X] -> Array[Y] взятая отъ эндофунктора Array. Въ математикѣ это обозначается Array(f), т.е. "поднятiе" морфизма f функторомъ Array.

"копируй каждый элементъ x, пока p(x) = true" это функцiя Array[X] -> Array[X], которая обозначается takeWhile(p). Здѣсь p должна быть функцiя X -> Boolean, т.е. "предикатъ".

Примѣры использованiя:

Haskell:

fmap ( \ x -> x + 1 ) [100, 200, 300] даетъ массивъ [101, 201, 301]

takeWhile ( \x -> x < 250 ) [100, 200, 300] даетъ массивъ [100, 200]

Scala:

Array(100, 200, 300).map(x => x + 1) даетъ массивъ Array(101, 201, 301)

Array(100, 200, 300).takeWhile(x => x < 250) даетъ массивъ Array(100, 200)


Теперь мы начинаемъ спрашивать, а какiя свойства желательно имѣть для этихъ функцiй. Для fmap это стандартныя свойства эндофунктора, fmap(id)=id, fmap(f o g) = fmap(f) o fmap(g). А для takeWhile математическiя книги почему-то умалчиваютъ. Поэтому программисты, стиснувъ зубы, сами доказываютъ про это теоремы.

Напримѣръ, у takeWhile есть такое важное свойство - если примѣнить два takeWhile подрядъ съ разными предикатами p1, p2, то должно быть то же самое, какъ если мы примѣнимъ takeWhile съ предикатомъ булевой конъюнкцiи p1 и p2, т.е. \x -> p1(x) && p2(x). Это называется "законъ композицiи" (composition law). Если примѣнить takeWhile съ предикатомъ, который тождественно true, то это не должно вообще мѣнять массивъ. Это "законъ тождественности" (identity law). Напрягшись (и задавъ вопросъ - что будетъ, если примѣнить сначала fmap, потомъ takeWhile или наоборотъ), можно еще найти два закона "естественности".

Потомъ дальше напрягшись, можно построить нѣкую аналогiю между fmap и takeWhile: и тамъ, и тамъ есть identity law и composition law, и ихъ можно свести къ стандартнымъ законамъ для нѣкоего вспомогательнаго функтора, о которомъ я сейчасъ не буду пытаться объяснять.

Но можно и не сводить, а такъ и оставить, но тогда непонятно, откуда эти законы взялись.

Пройдя еще черезъ пять-шесть примѣровъ такого сорта (программная задача - переходъ къ функцiямъ - переходъ къ произвольнымъ типамъ X, Y - написанiе законовъ или свойствъ, желательныхъ для программиста), убѣждаемся, что почему-то всегда получаются законы функтора или законы моноида или законы естественныхъ преобразованiй. Программисту надо какъ-то эти законы запоминать и про нихъ какъ-то думать. Либо въ каждомъ случаѣ будутъ какiе-то свои, свалившiеся съ неба законы, которые будетъ трудно запомнить. Либо программистъ выучитъ опредѣленiя моноида, категорiи, функтора, естественнаго преобразованiя и выучитъ, какiя для нихъ есть аксiомы, и тогда больше уже ничего запоминать наизусть не потребуется.

Простой циклъ замѣняется на функцiю map. Это законы нѣкоего эндофунктора.

"до тѣхъ поръ, пока" это takeWhile, разновидность фильтра (filter). У filter и takeWhile одинаковые законы, это законы нѣкоего функтора. Т.е. фильтры это обобщенiе цикловъ съ условiями.

Вложенный циклъ замѣняется на функцiю bind (въ языкѣ Scala, эта функцiя называется flatMap). Это "монады", у нихъ законы моноида. Т.е. монады это обобщенiе вложенныхъ цикловъ. Операцiя монады - замѣна композицiи эндофункторовъ на одинъ эндофункторъ, это для цикловъ то же самое, что замѣна вложенныхъ цикловъ на одинъ, никуда не вложенный циклъ.

Параллельныя вычисленiя замѣняются на функцiю zip, это тоже законы моноида. (Моноидальный функторъ.)

Всевозможныя суммированiя по массиву и свертки заменяются на fold и traverse. (Законы функтора.)

Установивъ это, можно сдѣлать общую библiотеку для такихъ функцiй. Становится понятно, какъ обобщать дальше, а куда идти нельзя. (Напримѣръ, не получится сдѣлать монаду изъ контраварiантнаго функтора.) Теорiя категорiй даетъ хорошiе орiентиры для такой работы.

11. Двѣ большiя разницы - программировать въ стилѣ "дѣлай разъ, дѣлай два, повтори", или въ стилѣ "функцiя f примѣняется къ аргументу x". Важно, что мы не "повторяемъ то-то и то-то для каждаго элемента массива", а "примѣняемъ функцiю f къ каждому элементу массива и собираемъ результаты въ новый массивъ". Получается опять функцiя изъ массива въ массивъ, а не просто наборъ "дѣйствiй". Это позволяетъ думать о программѣ какъ о математической функцiи или формулѣ.

Оказалось очень полезно перейти къ математическому стилю программированiя. Въ математикѣ нѣтъ "дѣйствiй", а есть значенiя функцiй, примѣняемыхъ къ аргументу. Въ математическихъ книгахъ никогда не пишутъ "а теперь замѣните x на x + 1, установите z = 0, если раньше z былъ больше 10, и повторяйте чтенiе данной главы начиная съ формулы (3.12), пока x не станетъ равнымъ 100." То-есть, не используются циклы и не переопрѣделяется все время перемѣнная x на x + 1 въ циклѣ. Однако, почему-то, это въ математикѣ никому не мѣшаетъ, а только помогаетъ. Вотъ и въ программированiи оказалось, что помогаетъ. Но надо разрабатывать новые прiемы программированiя, напримѣръ, map, filter, zip, fold. И вотъ когда стали ихъ разрабатывать, выяснилось, что языкъ категорiй естественно возникаетъ.
Sunday, September 22nd, 2019
LJ.Rossia.org makes no claim to the content supplied through this journal account. Articles are retrieved via a public feed supplied by the site for this purpose.
11:21 pm
Where on Earth is Adolfo Hitler
Looking on linkedin, one can find people whose first names are Lenin, Stalin, and Hitler.

Just to make sure that it's not a coincidence, I looked for people whose names were not just "Lenin" but "Vladimir Lenin" and not just "Hitler" but "Adolf Hitler".

Lenin Vladimir is a first name popular among professionals in Latin America.

Lenin Vladimir Urbina Urbina (Honduras) https://www.linkedin.com/in/lenin-vladimir-urbina-urbina-82501ba8/
Lenin Vladimir Escobar Almendárez (Nicaragua) https://www.linkedin.com/in/leninescobaralmendarez/
Lenin Vladimir Ramirez Diaz (Mexico) https://www.linkedin.com/in/lenin-vladimir-ramirez-diaz-2a63674b/
Lenín Vladimir Solórzano (Salvador) https://www.linkedin.com/in/len%C3%ADn-vladimir-sol%C3%B3rzano-a00a8467/

Occasionally, young professionals called Vladimir Lenin show up in other countries, for example:
Vladimir Lenin Legaspi (born in Philippines) https://www.linkedin.com/in/vladimir-lenin-legaspi-25154519/

There are a total of 15 people on linkedin with this first name. I did not count a "Vladimir Lenin Putin De Loayza Dias" from Peru, https://www.linkedin.com/in/lenin-vladimir-putin-de-loayza-dias-a9061456/ and I also did not count people whose first name is just "Lenin" or who set up phony linkedin accounts such as "Vladimir Lenin, supreme leader, KPSS" and so on.

There are many more named "Vladimir Ilyich":

Vladimir Ilyich Mendoza Lopez (Colombia) https://www.linkedin.com/in/vladimir-ilyich-mendoza-l%C3%B3pez-9539ba18a/
Vladimir Ilich Arredondo Cazeneuve (Peru) https://www.linkedin.com/in/vladimir-ilich-arredondo-cazeneuve-157a8123/
and about 35 others with this first name, coming from Peru, Honduras, etc.


Joseph Stalin:

Joseph Stalin Alucious Selvaraj https://www.linkedin.com/in/joseph-stalin-alucious-selvaraj-95335724/
Joseph Stalin Sagayanathan https://www.linkedin.com/in/joseph-stalin-sagayanathan-342081193/
Joseph Stalin Pitchai Pillai https://www.linkedin.com/in/joseph-stalin-pitchai-pillai-25b30388/
Joseph Stalin Erni https://www.linkedin.com/in/joseph-stalin-erni-6b83b95a/
Stalin Joseph Tallara https://www.linkedin.com/in/stalin-joseph-tallara-87b7b362/
There are 19 people whose first name is Joseph Stalin.
Additionally, there are dozens of people all over the world with the full name "Joseph Stalin". Not sure what to make of that.


Mao Tse Tung:

Mao Tse Tung Tsoyi Ambassa (Cameroun) https://www.linkedin.com/in/mao-tse-tung-tsoyi-ambassa-69851a155/
Mao Tse Tung Brito Silva (Brazil) https://www.linkedin.com/in/mao-tse-tung-brito-silva-0a7752108/
Three more people have "Mao Tse Tung" as various parts of their name, not clear that it is their first name.


Stalin Mau-Mau: A name popular in Zimbabwe and some other countries.

https://www.linkedin.com/in/stalin-mau-mau-a7011390/
https://www.linkedin.com/in/stalin-mau-mau-912744a3/
https://www.linkedin.com/in/stalin-tawanda-mau-mau-776b31133/
https://www.linkedin.com/in/stalin-tawanda-mau-mau-358b2945/
https://www.linkedin.com/in/stalin-mau-mau-7b5a1934/
https://www.linkedin.com/in/stalin-mau-mau-7627179b/
https://www.linkedin.com/in/stalin-tawanda-mau-mau-49b60272/


Turning now from international to national socialism, I looked for Hitler and Mussolini. Linkedin has lots of people whose first name is Hitler, - many of them in India. Again, to exclude any possibility of coincidence, I looked for "Adolfo Hitler" (the Latin American version). There are several of them, but significantly fewer than the Lenins and the Stalins.

Adolfo Hitler:

Adolfo Hitler Gil Vasquez (Peru) https://www.linkedin.com/in/adolfo-hitler-gil-vasquez-0397ba8b/
Adolfo Hitler Huaman Diaz (Peru) https://www.linkedin.com/in/adolfo-hitler-huaman-diaz-05351b47/
Adolfo Hitler Arevalo Vergara (Colombia) https://www.linkedin.com/in/adolfo-hitler-arevalo-vergara-99110744/

In total, there are 5 people with this name, all coming from Latin America, and 8 more are just "Adolfo Hitler", which makes it unclear whether it is a first name. Nobody has "Adolf Hitler" as their name.


Benito Mussolini:

Mussolini Benito Cabello Chavez (Peru) https://www.linkedin.com/in/mussolini-benito-cabello-chavez-66ab66b5/

12 more people have the full name "Benito Mussolini", but it's most likely not their first name.
Wednesday, September 18th, 2019
LJ.Rossia.org makes no claim to the content supplied through this journal account. Articles are retrieved via a public feed supplied by the site for this purpose.
6:39 pm
Журнализмъ какъ онъ есть
Richard Stallman resigns from MIT and from FSF over "insensitive" comments.

https://www.vice.com/en_us/article/9ke3ke/famed-computer-scientist-richard-stallman-described-epstein-victims-as-entirely-willing

The article says:

Stallman insists that the “most plausible scenario” is that Epstein’s underage victims were “entirely willing” while being trafficked

Stallman goes on to argue about the definition of “sexual assault,” “rape,” and whether they apply to Minsky and Giuffre’s deposition statement that she was forced to have sex with him

However, below they quote the entire email exchange, which shows that:

- Stallman did not "insist" (or even imply!) that "all" victims were "entirely willing". Stallman actually wrote,

All I know she said about Minsky is that Epstein directed her to have sex with Minsky. That does not say whether Minsky knew that she was coerced. It does not report what each said and did during their sexual encounter. We can imagine various scenarios.

... the most probable scenario is that [Guiffre] presented herself to [Minsky] as entirely willing. Assuming she was being coerced by Epstein, he would have had every reason to tell her to conceal that from most of his associates.

We know that Giuffre was being coerced into sex -- by Epstein. She was being harmed. But the details do affect whether, and to what extent, Minsky was responsible for that.


- Stallman does not argue that sexual assault or rape is somehow not a crime. He argues that these notions are defined and used too vaguely. He argues that, according to the deposition, Minsky most likely did not sexually assault Guiffre, and that it may be doubted that Minsky actually had sex with Guiffre at all:

I think the existence of a dispute about that supports my point that the term "sexuai assault" is slippery, so we ought to use more concrete terms when accusing anyone.

I think it is moraily absurd to define "rape" in a way that depends on minor details such as which country it was in or whether the victim was 18 years old or 17.


The word "assaulting" presumes that he applied force or violence, in some unspecified way, but the article itself says no such thing. It says they had sex.

Let's presume that was true (I see no reason to disbelieve it).

...A witness denies this, saying that Minsky turned her down.

... She does not explicitly state that Minsky was one of the people she had sex with.


So, Stallman believes that Minsky most likely had sex with Guiffre - even though he is aware that there is no direct evidence for that, and that a witness claims that it is not true. Stallman also believes that Guiffre was coerced into having sex. The only thing Stallman argues is that Minsky may not have been aware of the coercion.

Stallman's words were taken out of context, exaggerated, and presented in a way that portrays Stallman as a staunch defender of rape and sexual assault.
Wednesday, September 4th, 2019
LJ.Rossia.org makes no claim to the content supplied through this journal account. Articles are retrieved via a public feed supplied by the site for this purpose.
10:05 pm
Adaptation to hypercomfort
Most societies today are either in the state of hypercomfort (https://chaource.dreamwidth.org/tag/hypercomfort) or on the move towards hypercomfort (HC).

Examples of empirically observable HC conditions are printed warnings that knives or tape-cutters "have sharp edges"; paved and marked roads in natural parks, with signage that warns people about going into "dangerous" areas; fences around all elevated areas on bridges and towers to prevent people from falling; and ubiquitous hygienic toilets with hot water and antiseptic hand sanitizers.

People have different attitudes with respect to hypercomfort (HC). The first HC generation (HC-1) views the achievements of hypercomfort as a veritable paradise. These people endured dire circumstances and hardship (famine, war, etc.) and finally reached unprecedented prosperity and safety. Their worldview is "life is a constant calamity, but we are lucky to be here and to live like this (i.e. in hypercomfort)".

The second generation (HC-2) experienced HC since childhood but are constantly reminded by their first-generation parents that hardship exists and that one must make efforts in life. So, HC-2 people still make significant efforts and view the HC conditions as their earned reward. Their worldview is "life is great here, and we will work hard to keep it that way".

The third generation (HC-3) is not aware of a possibility of any non-HC conditions, either presently or in the past. News about any violation of HC (e.g. hunger in under-developed countries) are perceived as a natural disaster whose consequences somebody needs to eliminate from the world. HC-3 people are also unaware about how HC was achieved in the first place; they perceive HC as a self-evident condition of life that somebody somehow maintains (or that is maintained by itself with no effort from anyone). The typical attitude of HC-3 people is "entitledness", i.e. unwillingness to put out a sustained work effort or to sacrifice short-term convenience for long-term gains, and yet willingness to demand that somebody should fulfill their wishes. Their worldview is "why am I not get what I want sooner".

The three generations are not necessarily literally parents of each other, because everyone's personal history is different. People cannot be easily classified by age. Everyone will have a mixture of attitudes typified by these categories of people. I will refer to HC-1, HC-2, and HC-3 in this sense.

I think hypercomfort will lead, in the long term, to disintegration of the social and technological world we live in. The political and economic structure of most of our societies will break down if HC-3 people are in the majority, because not enough people will put out the needed efforts to keep HC going. However, even assuming this is true, the disintegration will take several decades because, at any time, there will be still a lot of people from HC-1 and HC-2 generations that are willing to work for others.

So, the question is - how can people adapt to this condition? Given that HC is not going away any time soon, adaptation will happen; people are not idiots and they will adapt to changing conditions to maximize their perceived well-being. What are the necessary adaptations of the society, and what are the necessary adaptations of people who live in those societies? This is what seems to be the likely adaptations:

1. Permit a massive immigration, giving preference to immigrants from non-HC countries. These immigrants are most likely to provide HC-1 and HC-2 sub-populations willing to work (e.g. clean toilets, fix computers, etc.) to sustain the status quo for a while longer.

2. Keep the HC-3 people happy by protecting them even more from any knowledge of non-HC reality. Prohibit all speech with cultural references to non-HC conditions and to traditional human behavior that was adapted to non-HC conditions. (For example, rewrite "Hamlet" so that nobody kills anyone but instead all participants engage in flippant and nonchalant dialogue about the diversity of culinary traditions and sexual behavior in Holland as opposed to the Middle East, while Hamlet is a transgender lesbian from Marocco who is a vegan activist.)

3. Introduce universal unconditional income, health care, housing, and state-sponsored digital entertainment targeted to HC-3 people. The entertainment should emphasize that good things in life are "privileges" rather than results of effort, and that everyone is entitled to "privileges" because of equality. At the same time, this will make the government much more powerful, which is again in accordance to the HC-3 view that "the system" must somehow automatically do all the work needed to maintain HC.

It seems that's where we are all going. This adaptation is useful in the short term because it will make HC-3 people even more comfortable. However, it seems that it will make things even harder when HC finally collapses.
Friday, August 2nd, 2019
LJ.Rossia.org makes no claim to the content supplied through this journal account. Articles are retrieved via a public feed supplied by the site for this purpose.
6:07 pm
Наука умѣетъ много гитикъ
https://amazon.com/Carbon-Dioxide-Theory-Climate-Change/dp/3030168794/

This book provides a complete review of the role of CO2 in the Earth’s atmosphere and reveals detailed information about the subject of climate change. Many different science disciplines are visited and discussed and each area is introduced with a brief summary written to appeal to a broader audience. The logic of CO2 involvement in changing the climate is investigated from every perspective: reviewing the historical data record of Ice Ages with vast ice sheets, noting the interglacial periods of little or no ice, examining in further detail the 20th century data record and evaluating the radiation role of CO2 in the atmosphere. The radiation calculations, using the appropriate equations and data are reviewed in great detail. The results of this review and examination reveal no role of CO2 in any change of the Earth’s climate.

Можно-ли надѣяться, что этого приспѣшника мiровой закулисы, проплаченнаго нефтегазовыми лоббистами, этого такъ называемаго ученаго, будутъ слушать?

Я увѣренъ, что въ этой книгѣ - неправильная наука. Ну не можетъ быть, что испускаемый промышленный СО2 (около 1% отъ всего CO2: около 30*10^9 изъ 3*10^12 тоннъ) не играетъ никакой роли въ климатѣ. Даже движенiе Луны играетъ роль.
Monday, July 15th, 2019
LJ.Rossia.org makes no claim to the content supplied through this journal account. Articles are retrieved via a public feed supplied by the site for this purpose.
6:15 pm
Этюды о равноправiи половъ. Часть 2. Симметричный отвѣтъ
Часть 0-я: http://chaource.livejournal.com/93345.html
Часть 1-я: https://chaource.livejournal.com/115590.html

Въ традицiонной схемѣ взаимоотношенiй половъ, мужчина предоставляетъ ресурсы, а женщина вынашиваетъ дѣтей. Чтобы быть привлекательнымъ для женщинъ, мужчина поэтому долженъ демонстрировать качества, свидѣтельствующiя о его способности добывать и удерживать ресурсы: воля и решительность, готовность стойко переносить трудности и неудачи (т.е. "мужественность"), физическая сила и здоровье, богатство, интеллектъ. А женщина, чтобы быть привлекательной для мужчинъ, демонстрируетъ качества, свидѣтельствующiя о ея способности родить и воспитать много здоровыхъ дѣтей - молодость, здоровье, симметрiя лица и тѣла, доброжелательность, нѣжность (т.е. "женственность").

Мужчины и женщины долго эволюцiонировали въ этомъ направленiи и подсознательно выбираютъ партнера такъ, чтобы максимизировать шансы для потомства. Женщины въ западныхъ странахъ сегодня могутъ зарабатывать больше мужчинъ, - достаточно помѣнять профессiю, - но онѣ не очень-то этого хотятъ. И даже тѣ женщины, которыя много зарабатываютъ, все равно стремятся найти мужчину, который зарабатываетъ еще больше. Мужчины могли бы поголовно жить въ одиночествѣ или въ гомосексуальномъ бракѣ и брать прiемныхъ дѣтей, но не очень-то этого хотятъ - хотятъ "отношенiй". Нельзя надѣяться, что полвѣка техногеннаго суперкомфорта въ небольшомъ количествѣ странъ какъ-то существенно измѣнятъ подсознательное поведенiе людей.

Однако произошло важное техногенное измѣненiе - неограниченная контрацепцiя и свобода для женщины не имѣть дѣтей, а также свобода нарушенiя брачныхъ обѣтовъ безъ послѣдствiй. Такимъ образомъ, рушится та важнѣйшая транзакцiя "ресурсы/дѣти", на которую была нацѣлена эволюцiя homo sapiens (т.е. мужчина добываетъ ресурсы, женщина рожаетъ дѣтей). Сегодня мужчина по-прежнему добываетъ ресурсы и долженъ обезпечивать женщину матерiальнымъ комфортомъ (иначе - преслѣдованiе по суду), а вотъ женщина или рожаетъ очень мало (одинъ, максимумъ два ребенка, несмотря на ея молодость) и/или уходитъ отъ мужчины вмѣстѣ съ дѣтьми (продолжая потреблять добываемые имъ ресурсы), или вовсѣ не рожаетъ - и никакихъ юридическихъ послѣдствiй нѣтъ.

Каковъ долженъ быть симметричный отвѣтъ мужчины? Надо учитывать, что половая близость никуда не исчезла и по-прежнему является существеннымъ мотиваторомъ поведенiя. Отмѣнили лишь конечный этапъ - рожденiе и воспитанiе дѣтей въ семьѣ.


Въ отсутствiе контрацепцiи, половая близость являлась раньше практическимъ эквивалентомъ согласiя женщины на дѣторожденiе. Поэтому, въ рамкахъ традицiонной транзакцiи "ресурсы/дѣти", было необходимо со стороны мужчины предоставлять женщинѣ ресурсы въ обмѣнъ на половую близость.

Сейчасъ сексъ сталъ "безопаснымъ", т.е. больше не является согласiемъ женщины на дѣторожденiе, - женщина сама рѣшаетъ, какъ и когда произойдетъ зачатiе, и не обязана даже увѣдомлять объ этомъ мужчину.

Слѣдовательно, мужчина болѣе не долженъ предоставлять женщинѣ ресурсы въ обмѣнъ на близость. Интимная близость можетъ происходить по желанiю участниковъ, но мужчина не долженъ предоставлять и оплачивать расходы на дорогiе подарки, предметы роскоши, драгоцѣнности, украшенiя, рестораны, поѣздки на курорты и т.д. Все это должно оплачиваться пополамъ или съ раздѣльнымъ счетомъ, т.е. точно такъ же, какъ совмѣстный походъ въ ресторанъ двухъ прiятелей. Оплата совмѣстныхъ расходовъ мужчиной начинается только, если женщина начинаетъ позволять мужчинѣ регулярную интимную близость безъ противозачаточныхъ средствъ, и при этомъ ведетъ себя достаточно отвѣтственно, чтобы родить здоровыхъ дѣтей (напримѣръ, не пьетъ много алкоголя, не куритъ, не принимаетъ наркотики).

Если ребенокъ уже есть, и женщина начинаетъ опять регулярно примѣнять противозачаточныя средства или отказывать мужчинѣ въ близости, находясь еще въ возрастѣ, вполнѣ подходящемъ для дѣторожденiя, то мужчина оплачиваетъ только расходы на уже родившихся дѣтей. Все остальное женщина оплачиваетъ сама.

Въ этомъ заключается симметричный отвѣтъ. Ясно, что такое положенiе вещей приведетъ къ взаимной фрустрацiи. Мужчина будетъ хотѣть интимной близости, женщина - подарковъ, - поскольку подсознательная мотивацiя никуда не исчезнетъ. Но ни одинъ изъ партнеровъ не будетъ получать желаемаго. Бракъ распадется, и оба бывшихъ партнера найдутъ себѣ "прiятельскiя" интимныя связи безъ обязательствъ дѣторожденiя, - но счастья это не принесетъ, потому что природу не переборешь.
Monday, April 1st, 2019
LJ.Rossia.org makes no claim to the content supplied through this journal account. Articles are retrieved via a public feed supplied by the site for this purpose.
4:13 am
Дореформенная орѳографiя живетъ и побѣждаетъ!
Очень радъ, что Русская Википедiя переходитъ на дореформенное правописанiе.

https://ru.wikipedia.org/

Вниманіе! Дабы сдѣлать Википедію доступной читателямъ, не перешедшимъ на орѳографію, введённую декретомъ 1918 года, а также въ связи съ ​тѣмъ​, что Википедія — не бумажная энциклопедія, и нѣтъ смысла экономить на буквѣ еръ, Русская Википедія приняла рѣшеніе перейти на дореволюціонную орѳографію.

Нашелъ одну ошибку - "​Свѣденія о страницѣ", а должно быть "свѣдѣнiя".

Слѣдующимъ шагомъ, я думаю, надо бы учредить "Комиссiю имени Шишкова по разслѣдованiю преступленiй противъ русскаго языка".


P.S. Ошибка въ словѣ "свѣдѣнiя" исправлена послѣ моего сообщенiя (въ группѣ izhitsa_ru ЖЖ https://ijitsa-ru.livejournal.com/146427.html )!
Sunday, March 24th, 2019
LJ.Rossia.org makes no claim to the content supplied through this journal account. Articles are retrieved via a public feed supplied by the site for this purpose.
8:22 pm
Matt Taibbi is writing a new book
Matt Taibbi's new nascent book-in-writing is going to out-Chomsky the "Manufacturing Consent". I read a few installments... Whoa. An eye-opening experience!

Taibbi is wholly on the left of the political spectrum, but not on the extreme, "delusional" left side. He's had decades of experience as a mainstream journalist, https://taibbi.substack.com/p/introduction-the-fairway and he unpacks it all.

Some quotations:

https://taibbi.substack.com/p/chapter-1-part-ii-the-ten-rules-of

The easiest media product to make is called, This Bad Thing That Just Happened Is Someone Else’s Fault. It has a virtually limitless market.
...
To make money, we’ve had to train audiences to consume news in a certain way. We need you anxious, pre-pissed, addicted to conflict. Moreover we need you to bring a series of assumptions every time you open a paper or turn on your phone, TV, or car radio. Without them, most of what we produce will seem illogical and offensive.

The trick is to constantly narrow your mental horizons and keep you geeked up on impotent anger.


Resist! Stop reading them.
Wednesday, March 6th, 2019
LJ.Rossia.org makes no claim to the content supplied through this journal account. Articles are retrieved via a public feed supplied by the site for this purpose.
10:48 pm
Skin in the argument
A comical argument between King Arthur and the Black Knight goes like this:

https://www.youtube.com/watch?v=ZmInkxbvlCs?t=82

https://genius.com/Monty-python-monty-python-and-the-holy-grail-black-knight-annotated

K.A. and B.K. fight; K.A. cuts off the left arm of B.K.

K.A.: Now stand beside, worthy adversary!

B.K.: 'Tis but a scratch!

K.A.: A scratch? Your arm’s off!

B.K.: No it isn’t.

K.A.: (points out the cut-off arm lying on the ground) Well what’s that then?

B.K.: I’ve had worse.

...

---

The comic effect is in Black Knight denying what is plainly to be seen: that eventually both his arms and legs are cut off and he is powerless to fight any more. However, suppose we could not look at them but only hear what they say. It would then appear that King Arthur is groveling before an invincible opponent. King Arthur calls the opponent a "worthy adversary" and a "brave knight", and graciously declares the fight a "draw" (even though he obviously won and destroyed his opponent). But, according to the Black Knight's words, King Arthur is a weakling and a liar who claims to have won the battle just as he cowardly runs away from an invincible opponent.

The exchange is hilarious because, as everyone knows, no real Black Knight would ever behave in this way. But why not argue like the Black Knight, isn't it at least advantageous to win the verbal side of the fight? My explanation is that a real Black Knight would have his skin in the argument. The purpose of the verbal fight with "skin in the argument" is to assess the opponent's true non-verbal strength (that is, to ascertain the real facts). Once it is clear that the opponent is overwhelmingly strong, the verbal fight is usually over.

In fact, the Black Knight would have likely kept his other arm and both legs had he conceded the fight after the King Arthur's first devastating blow. However, the point of the episode is that the Black Knight apparently inhabits a delusional world of "alternative facts", a world where even cutting off both his arms and legs either is not real or doesn't really matter; what matters to him is who appears to be more self-assured and whose words are last. In other words, the Black Knight argues in words as if he has no "skin in the argument".

Examples from recent politics are some French communist party spokespeople who proposed either a 100% tax https://money.cnn.com/2017/04/18/news/economy/france-tax-rich-election-melenchon/index.html or a 80% tax on upper middle class (from a recent interview on French TV with a 40-year-old communist politician whose name I forgot). These proposals are maintained even though real data shows that these high taxes do not work as intended https://www.theguardian.com/world/2014/dec/31/france-drops-75percent-supertax - that is, the actually gathered tax revenue becomes smaller at such high tax rates.

Another example of fact-free politics unfolded in 2015-2016 in San Francisco, where politicians keep imposing an ever-higher minimum wage, intended to help small-wage earners, but the results are that there are fewer jobs for precisely those earners.

https://abc7news.com/business/sf-bookstore-becomes-casualty-of-minimum-wage-hike-/502008/
https://www.forbes.com/sites/edrensi/2017/04/03/thanks-to-the-fight-for-15-minimum-wage-small-businesses-close-and-employees-are-laid-off/

With minimum wage hikes, the businesses most affected are cheap restaurants, cheap book stores, and other shops serving mostly the lower classes. Politicians are not affected by the closures of these businesses and so have no "skin in the argument". Minimum wage hikes are planned to continue unabated, even though they demonstrably make the job market worse for the poor.

https://sfmayor.org/minimum-wage
https://www.bna.com/san-francisco-contractors-n73014482819/

Why do these politicians ignore reality? Because, I'd say, they are arguing without any skin in the argument, just like the Black Knight who claimed that his arms and legs were still with him. If, as the result of the politicians' proposed measures, the tax revenue is diminished and the unemployment rises - the politicians will not suffer in any way. It's the ordinary people who will then suffer - although people would usually not understand why.

Having "skin in the argument" means to be affected by the real facts underlying the argument. If I have skin in the argument, my real purpose in arguing is not to show that my opinion is correct, but to discover the relevant facts that affect my decision-making. Perhaps, it would be good to stop arguing with people, except in that case.
Thursday, February 14th, 2019
LJ.Rossia.org makes no claim to the content supplied through this journal account. Articles are retrieved via a public feed supplied by the site for this purpose.
11:42 pm
Some monads do not have a corresponding monad transformer?
So far there seem to exist two classes of monads that have no monad transformers:

1.

P a = Either (m a) a

Here `m` must be another monad, for example `m = Reader` or `m = State` or whatever.

This construction produces a monad `P` for any monad `m`. The monad `P` is mostly the same as `m` except its "pure value" is explicitly represented as `Right x`. However, the resulting monad `P` does not seem to have a monad transformer. I tried all kinds of type expressions involving `Either` and `m`, but couldn't make it work, even with the simplest example `m = Reader`.

2.

S a = (a -> Bool) -> Maybe a

This is the so-called "search monad". It takes a predicate `a -> Bool` and possibly produces a value of `a` that satisfies the predicate.

A generalization of the search monad is the so-called "selector" monad,

S a = (a -> p ()) -> p a

where `p` is another monad. The "search" monad is obtained with `p = Maybe`, since `Maybe ()` is equivalent to `Bool`. Even more generally, we can replace the unit type `()` with any constant type `c`. The result will be

S a = (a -> p c) -> p a

This is a monad for any fixed monad `p` and for any fixed type `c`. But this monad does not seem to have a monad transformer. For example `(m a -> p c) -> p (m a)` is not a monad for arbitrary monads `m`. I tried other type expressions involving `m` at different places, but nothing seems to work.

So this for me seems to close the long-standing question of whether all monads have a monad transformer, and if so, how to construct one. The answer seems to be that some monads don't have a monad transformer, and for other monads there are ad hoc ways of constructing transformers.

However, I still don't know how to prove rigorously that no transformer exists for a given monad.
Saturday, February 9th, 2019
LJ.Rossia.org makes no claim to the content supplied through this journal account. Articles are retrieved via a public feed supplied by the site for this purpose.
2:05 am
Good stuff, with some caveats
https://www.youtube.com/watch?v=MuBHJbEEVUA

Mostly, I'd agree with him. There are some minor points where I would differ: This guy calls the "left" what I prefer to call the "delusional extremist left". This guy argues that there are no shared goals between the "left" and the rest of the political scene, but he fails to explain what the goals of the "left" really are and why there is such an insurmountable gap between the new "left" politics and the American politics in the previous generations.

In my view, the gap is between ideologues and pragmatics. An ideologue would not agree with a policy that can have pragmatic success if the policy contradicts a chosen ideology. An ideologue has a set of "correct" facts that is fixed in advance, and anything else contradicting these facts is declared to be incorrect and ignored. (For example, a currently "correct" fact is that women are under-represented in certain occupations, such as mathematics or engineering, because men don't want to hire women due to sexist prejudice. If you openly dispute that "fact", you are likely to lose your job.) A pragmatic politician will treat a chosen ideology as only a rough guide to action, and would be ready to compromise and to argue on specific policies based on the available facts. A pragmatic politician is usually open to new factual knowledge.

Another gap seems to be between the "new left" politician who, on the surface, follows some ideology but actually just wants unlimited and unchecked power, and wants it at any cost, - and the more traditional left and right politicians who do want to be in power, of course, but will play by the rules to get there, and will not want to dismantle the separation of powers.
Thursday, January 17th, 2019
LJ.Rossia.org makes no claim to the content supplied through this journal account. Articles are retrieved via a public feed supplied by the site for this purpose.
1:46 am
Quantified types are undecidably powerful
Consider the functor M(p) = ∀a. (p → 1 + a) → 1 + a where p is a type parameter. I've been trying to simplify and analyze this deceptively simple expression, with not much success so far.

[ Notation: I am working in a subcategory of sets where objects are types in a functional programming language, and 0 is the initial object, 1 is the terminal object, a × b is the product and a + b is the co-product (or disjunction) of types a and b, whereas a → b is the function from type a to type b, understood as a function type (exponential object). The symbol → binds less tightly than +, which binds less tightly than ×. So, p → 1 + a means p → (1 + a). Finally, types 1 + 1 + 1 + ... + 1 are "natural number types" and are denoted simply as 2, 3, ... ]

The motivation for studying the functor M comes from the so-called "codensity monad" (see e.g. http://comonad.com/reader/2011/free-monads-for-less/). It is known that the "codensity" construction,

M(p) = ∀a. (p → F(a)) → F(a),

gives a monad M for any functor F. However, it is hard to reason about such a type construction, so I wanted to simplify it. As simplest examples of a functor F, I took the sum (or disjunction), F(a) = 1 + a, the product F(a) = w × a, and the exponential F(a) = e → a, and then I tried to simplify the type expression M(p). I was not able to simplify M(p) for the disjunction example F(a) = 1 + a, although I could do that for the product and the exponential,

∀a. (p → w × a) → w × a = ((p → w) → w) × ((p → w) → p)

∀a. (p → e → a) → e → a = e → e × p

So the question is, why the (seemingly) simpler type constructor, F(a) = 1 + a, does not get simplified nearly as easily as the other elementary types. Am I missing any techniques for simplifying types?

So I first considered a couple of simpler types,

∀a. (p → a) → 1 + a = 1 + p using the Yoneda lemma, ∀a. (p → a) → F(a) = F(p)

∀a. (p → 1 + a) → a = 0 (i.e. a void type) because there is no way of implementing a value of type `a` given an arbitrary function of type p → 1 + a; that function may happen to return always 1 and never any values of type `a`.

∀a. (p → 1 + a) → q (which is a bifunctor in p and q) is a much more interesting story. How can we implement values of this type? We are given a function of type p → 1 + a, where `a` is an arbitrary type, and we are supposed to return a value of a fixed type q. Clearly, values of type `a` are useless for us; we need to choose in advance some values of type q among which we are going to choose a return value of type q. So, a value of type ∀a. (p → 1 + a) → q necessarily needs to contain at least one value of type q. The simplest such value is a function that always returns the same fixed value of type q. This function does not use its argument (which is a function of type p → 1 + a). Can we build a function of type ∀a. (p → 1 + a) → q that does use its argument? We can, if we have a value of type p and apply the function of type p → 1 + a to that p. The result will be either 1 or a value of type `a`. If it is a value of type`a`, we won't be able to use that value to produce a `q` because we don't know what `a` is; so we need to return a fixed value of type `q` that we would need to have already selected beforehand. However, we could return different values of type `q` based on the information we find by applying the given function f of type `p → 1 + a` to some stored values of type p, since that does give us some information - namely, whether the result f(p) is `1` or an `a`, for each stored value of `p`. This is just one bit of information per stored value of `p`; exactly the same information would be obtained from a function of type `p → 1 + 1`. Therefore, we can replace a function of type`p → 1 + a` by a function of type `p → 1 + 1` without loss of information. This observation finally enables us to simplify the type expression as follows:

∀a. (p → 1 + a) → q = ∀a. (p → 1 + 1) → q = (p → 2) → q.

Now we try to apply a similar consideration to M(p) = ∀a. (p → 1 + a) → 1 + a. In order to implement a value of this type, we need to write code that returns either `1` or a value of type `a`. The only thing this code may do is apply a given function `f` of type `p → 1 + a` to some values of `p`, which have to be chosen in advance and stored in the program. Suppose we had three stored values of type `p`, chosen in advance. Applying the function `f` to these, we obtain three values of type `1 + a`; that is, potentially up to 3 different values of type `a`, but maybe fewer. Possibly using this data, we now need to return a value of type `1 + a`. We could return a `1`, or we could return one of the obtained 3 values of type `a`; but we need to make this choice based only on the information we have, that is, on the 3 bits of information obtained by applying `f` to our 3 stored values of type `p`.

However, now we can't simply replace `f : p → 1 + a` by a function of type `p → 1 + 1` because we may need to use one of the values of type `a` returned by `f`. For instance, we could (arbitrarily) decide that we store 3 values of type `p`, apply `f` to each of them, observe 3 bits of information (the bit is equal to 0 if f(p) = 1 and otherwise 1), and compute the integer k in the range [0, 7] represented by these 3 bits. If this integer is zero, we have no choice but to return 1. If this integer is nonzero, we could (arbitrarily) decide that we select the highest nonzero bit of this integer, and if it exists, we return the value returned by f(p) for the corresponding p. This implementation gives a possible value of type ∀a. (p → 1 + a) → 1 + a. How to parameterize all these implementations? The information obtained from the function f is first translated into a string of bits (i.e. we are using a function of type `p → 2`), and we also obtain zero or more values of type `a`. We cannot directly manipulate these values of type `a`; we may only select one of them to be returned (or we may choose to return 1 instead). This decision must be made purely as a function of the string of bits, i.e. from `p → 2`. It appears that the required information is encoded in a value of type (p → 2) → 1 + p.

Is it true that ∀a. (p → 1 + a) → 1 + a = (p → 2) → 1 + p?

I don't think so. The type 1 + p does not express the constraint that we need to select a value of p such that f(p) gives a value of `a`, rather than 1.

However, I haven't figured out how to encode this condition in a type expression. It seems that the quantified type is richer and more complicated than ordinary (non-quantified) type expressions.

While trying to resolve this question, I found that, for any G(a), one can simplify

∀a. G(a) → 1 + a = ∀a. a × G(a) → a,
∀a. G(a) → e + a = ∀a. (e → a) × G(a) → a,

but this did not help me directly to simplify the type M(p).

It would be better to prove equivalence of these types formally, rather than use heuristic considerations based on code that stores some values of `p`. Perhaps another time.

There doesn't seem to be a general way of simplifying ∀a. (p → F(a)) → F(a) for an arbitrary F(a). Nothing suggests that this is possible at all. The argument for F(a) = 1 + a or F(a) = e + a depends on the details of these functors and cannot be easily generalized to, say, `F(a) = p → a + q` or something more complicated. Perhaps this has to do with the undecidability of quantified types (or of logic with quantifiers)?
Sunday, January 13th, 2019
LJ.Rossia.org makes no claim to the content supplied through this journal account. Articles are retrieved via a public feed supplied by the site for this purpose.
9:27 pm
Most racist countries in the world
India is consistently number 1 or number 2 in most surveys of racial attitudes.
European countries, USA, UK etc. are consistently among the least racist.
This is according to surveys asking questions such as "would you want to live next to people of different ethnicity" and "have you experienced racism".

It's also interesting to note that some of the most racist countries (e.g. India, Lebanon) are also countries with a long history of being multi-cultural and multi-ethnic. So clearly being multi-cultural and multi-ethnic, even for a historically long time, does not help in any way to alleviate racist attitudes.

Data - e.g.
https://businesstech.co.za/news/lifestyle/116644/the-most-racist-countries-in-the-world/
https://www.dailymail.co.uk/news/article-2325502/Map-shows-worlds-racist-countries-answers-surprise-you.html
Monday, January 7th, 2019
LJ.Rossia.org makes no claim to the content supplied through this journal account. Articles are retrieved via a public feed supplied by the site for this purpose.
5:37 pm
Вече горъ
Съ веча горъ ѣла насъ, то лѣсъ веча горъ ѣла.

Древнiе тексты намъ бываетъ трудно понять. Нѣкая чудовищная особь то ѣла лѣсъ, то ѣла насъ. Находилась при этомъ на вечѣ горъ, то ли пришла съ веча горъ. Возможно, полный текстъ возстанавливается такъ,

<Пришедшая> съ веча горъ ѣла насъ, то лѣсъ веча горъ ѣла <когда насъ уже съѣла>.

Что такое "вече горъ", пока остается въ тайнѣ.
Sunday, December 30th, 2018
LJ.Rossia.org makes no claim to the content supplied through this journal account. Articles are retrieved via a public feed supplied by the site for this purpose.
9:45 pm
The profit motive
https://avc.com/2018/12/the-profit-motive/

Yet another reminder that most IT / tech startups are not profitable and are not trying to be. They are just trying to generate "momentum" and exit.

So maybe this is why many IT / tech startup CEOs are politically on the delusional far left, although one would expect them to be more realistic. They are not actually running any businesses! These CEOs are operating in a permanent "startup mode", i.e. running scam schemes to pump money away from rich venture capitalists, hoping somehow for a big win in the end -- or for being purchased by a Microsoft or an IBM.

These CEOs can be politically on the far left because they are not thinking like business owners; they do not feel responsibility to deliver value to any customers, or to grow or shrink the business according to the demands of the market. (What products did you purchase from Facebook or Twitter in the last 5 years?) They are not driven by the profit motive, and they are largely free from the constraints of a real-life business.

The internet startup culture is not a culture of business; it is a culture of non-profit government-sponsored work and wishful-thinking-driven PR. Virtue signaling, pursuits of phony "social responsibility", and morally righteous Twitter hashtags -- all fit perfectly within that modus operandi.
Wednesday, December 26th, 2018
LJ.Rossia.org makes no claim to the content supplied through this journal account. Articles are retrieved via a public feed supplied by the site for this purpose.
1:49 am
Sorabji - Sonata no.1 with score
https://www.youtube.com/watch?v=Q_U7tKoPt0o

Somebody re-uploaded the fantastic performance by the incomparable M.-A. Hamelin, this time with score. This is completely breathtaking.
LJ.Rossia.org makes no claim to the content supplied through this journal account. Articles are retrieved via a public feed supplied by the site for this purpose.
1:57 am
Thuille - Piano Concerto in D Major
A romantic piano concerto, by a virtually forgotten composer Ludwig Thuille. Quite enjoyable and not too presumptuous.

https://www.youtube.com/watch?v=Po1ei8rb2x8
[ << Previous 20 ]

LJ.Rossia.org makes no claim to the content supplied through this journal account. Articles are retrieved via a public feed supplied by the site for this purpose.