RSS
# Си должен умереть?
std.hugeping
hugeping(ping,1) — All
2021-11-09 17:14:26


Интересное совпадение. На днях из двух независимых источников вышел на статьи, описывающие проблемы Си.

https://www.yodaiken.com/2018/12/31/undefined-behavior-and-the-purpose-of-c/

http://cmustdie.com/

Скажу сразу, читается интересно. С некоторыми вещами сталкивался на практике. Правда, в статьях я не увидел "выхлопа", какого-нибудь позитивного вывода. Проблемы озвучены, но что предлагается в качестве решения?

Да, неопределённое поведение -- это угроза. И угроза вдвойне, когда по мере развития компиляторов, это поведение воспринимается как территория, на которой можно "срезать углы". При этом мы получаем мину замедленного действия. Старый софт, собранный новым компилятором может "бахнуть" когда и где угодно... Так что с точки зрения индустрии, нужен простой (не надо много платить за кадры), дубовый и предсказуемый язык. Правда, при этом, он должен быть ещё и системным. Совместить эти противоречивые требования нелегко...

Как программист на Си, я понимаю, что по современным меркам этот язык нарушает все мыслимые правила приличия. Но при этом я действительно НЕ ВИЖУ адекватной замены в той сфере где он применяется. Это как с самолётами. Неустойчивый самолёт -- маневренный и опасный. Устойчивый -- безопасный и неманевренный. Что выбрать? Что-то среднее? Чем мы готовы пожертвовать?

Представим себе, что нам нужно написать ядро ОС. Какой язык выбрать? C, C++... Rust?

Мои знания о Rust ограничены чтением книги, поэтому я недостаточно подкован для того, чтобы адекватно оценить его кандидатуру как замену Си. Субъективно, мне кажется, что Rust не сможет стать таким же массовым языком. В нём нет простоты Си. Его синтаксис многословен, а в некоторых задачах он выкручивает программисту руки. Я надеюсь, что идеи заложенные в Rust найдут реализацию в каком-то другом ЯП. Но это моё личное, субъективное мнение. Конечно, если индустрия перейдёт на Rust, я буду его использовать в любом случае. А пока, можно посмотреть на пример реализации драйвера на Си и Rust: https://lwn.net/Articles/863459/ который меня совсем не впечатляет.

Си был моим любимым языком с самого начала профессиональной деятельности. Но с годами я стал замечать, что программирование на Си всё чаще воспринимается как рутина. Я перестал чувствовать удовольствие от программирования и изучения чужого кода. Работал скорее как "ремесленник". К счастью, были и другие ЯП, которые мне было интересно изучить, так что выгорания я избежал.

Но не так давно я открыл для себя Си заново. Помогло мне в этом осознание:

> Код на Си прекрасен, когда он прост!

Но что значит простой код? Программисты всегда пытаются писать просто. Или нет? И можно ли писать современное ПО просто?

Посмотрите. Это реализация cat в Plan9: https://github.com/0intro/plan9/blob/master/sys/src/cmd/cat.c

А это, для сравнения, cat из coreutils: https://github.com/coreutils/coreutils/blob/master/src/cat.c

Я отдаю себе отчёт в том, что современное ПО так не пишется. Поддержка локалей и gettext. Учёт особенностей системных вызовов на разных ОС. Поддержка множества параметров. И вот, объём и сложность кода растут как снежный ком. А если вспомнить про полную поддержку Unicode (со всеми этими проклятыми эмодзи и сменой направления вывода), то становится совсем уж плохо. Мы так привыкли к универсальности "правильного" подхода, что когда ты видишь "наивный" код Plan9, то испытываешь шок. Что, так можно было?

Но если по чесноку, разве cat не должен быть именно таким, каким он остался в Plan9? :) Думаю, каждый программист чувствует здесь какую-то правду.

Си -- это портативный ассемблер. В этом его основная миссия, сила и слабость. И сегодня, когда разрыв между низким и высоким уровнем многократно увеличился, я не могу не признать, что он мало пригоден для написания сложного прикладного ПО. Но что с системным?

Системное ПО тоже стало сложнее. Как системный программист, я начинал с ядра Linux 2.2. Читать и понимать код современного ядра стало намного сложнее.

В качестве примера, посмотрите реализацию системного вызова open в ядре 2.2.
https://elixir.bootlin.com/linux/2.2.26/source/fs/open.c#L757
asmlinkage int sys_open(const char * filename, int flags, int mode)
{
	char * tmp;
	int fd, error;

	tmp = getname(filename);
	fd = PTR_ERR(tmp);
	if (!IS_ERR(tmp)) {
		lock_kernel();
		fd = get_unused_fd();
		if (fd >= 0) {
			struct file * f = filp_open(tmp, flags, mode);
			error = PTR_ERR(f);
			if (IS_ERR(f))
				goto out_error;
			fd_install(fd, f);
		}
out:
		unlock_kernel();
		putname(tmp);
	}
	return fd;

out_error:
	put_unused_fd(fd);
	fd = error;
	goto out;
}
Довольно наглядно и просто, не правда ли?

А теперь начните своё путешествие по ядру 5.10.

https://elixir.bootlin.com/linux/v5.10.78/source/fs/open.c#L1200

Вам придётся пройтись по цепочке: do_sys_open -> do_sys_openat2

https://elixir.bootlin.com/linux/v5.10.78/source/fs/open.c#L1193
https://elixir.bootlin.com/linux/v5.10.78/source/fs/open.c#L1164

SYSCALL_DEFINE3(open, const char __user *, filename, int, flags, umode_t, mode)
{
	if (force_o_largefile())
		flags |= O_LARGEFILE;
	return do_sys_open(AT_FDCWD, filename, flags, mode);
}

long do_sys_open(int dfd, const char __user *filename, int flags, umode_t mode)
{
	struct open_how how = build_open_how(flags, mode);
	return do_sys_openat2(dfd, filename, &how);
}

static long do_sys_openat2(int dfd, const char __user *filename,
			   struct open_how *how)
{
	struct open_flags op;
	int fd = build_open_flags(how, &op);
	struct filename *tmp;

	if (fd)
		return fd;

	tmp = getname(filename);
	if (IS_ERR(tmp))
		return PTR_ERR(tmp);

	fd = get_unused_fd_flags(how->flags);
	if (fd >= 0) {
		struct file *f = do_filp_open(dfd, tmp, &op);
		if (IS_ERR(f)) {
			put_unused_fd(fd);
			fd = PTR_ERR(f);
		} else {
			fsnotify_open(f);
			fd_install(fd, f);
		}
	}
	putname(tmp);
	return fd;
}

Необходимость изменений очевидна. Появилась подсистема fsnotify. Добавили новые системные вызовы -- пришлось нарезать функции и сводить open к openat...

Код выглядит аккуратно, но разобраться в нём стало сложнее. А значит, проще ошибиться.

Да, работая на индустрию не удастся вернуться в прошлое. Однако, Plan9 научил меня тому, что во многих случаях у меня, как у программиста, всё-таки есть свобода избежать сложного кода, в том числе ценой выбора более подходящей архитектуры. Например, написав небольшое ядро приложения на Си и функциональную часть на Lua. Если я вижу, что код на Си становится сложным, это повод остановиться. Стоп! Что-то не так!

Что касается судьбы Си... Я тоже хотел бы увидеть современного приемника, но в Rust я не смог его узнать. Возможно, это моя ошибка. Поживём -- увидим.

Интересно, сколько лет ещё продержится старичок Си? А то ведь и 70-летие не за горами. :)

P.S. Ещё одна "эмоциональная" статья на тему C и C++: Почему я всё ещё люблю C, но при этом терпеть не могу C++?

https://habr.com/ru/company/ruvds/blog/562530/

# Притча о неверном, но мудром управляющем
std.hugeping
hugeping(ping,1) — All
2021-11-09 10:57:46


В Евангелии от Луки есть притча, которую я я никогда не понимал.

Лк16:1-9

> Сказал же и к ученикам Своим: один человек был богат и имел управителя, на которого донесено было ему, что расточает имение его;
> и, призвав его, сказал ему: что это я слышу о тебе? дай отчет в управлении твоем, ибо ты не можешь более управлять.
> Тогда управитель сказал сам в себе: что мне делать? господин мой отнимает у меня управление домом; копать не могу, просить стыжусь;
> знаю, что сделать, чтобы приняли меня в домы свои, когда отставлен буду от управления домом.
> И, призвав должников господина своего, каждого порознь, сказал первому: сколько ты должен господину моему?
> Он сказал: сто мер масла. И сказал ему: возьми твою расписку и садись скорее, напиши: пятьдесят.
> Потом другому сказал: а ты сколько должен? Он отвечал: сто мер пшеницы. И сказал ему: возьми твою расписку и напиши: восемьдесят.
> И похвалил господин управителя неверного, что догадливо поступил; ибо сыны века сего догадливее сынов света в своем роде.
> И Я говорю вам: приобретайте себе друзей богатством неправедным, чтобы они, когда обнищаете, приняли вас в вечные обители.

Я знаю, что эта притча вызывает много вопросов и недоумений не только у меня. Я помню, что в эпоху неофитства я читал толкования, в которых, скорее всего, получал нужные разъяснения. Но в памяти и в сердце это не отложилось, а объяснения казались натянутыми. Я просто не видел никакой связи притчи со своим жизненным опытом. Так что просто читал её без особого внимания. Пропускал.

И вот, по прошествии многих лет, я вдруг заметил, что знаю как "применить" эту притчу в своей жизни. Я ничего специально для этого не делал! Кажется, что долгое время притча скрывалась в уголках моего подсознания и просто ждала момента, чтобы "выстрелить".

Пропустив своё наблюдение через "рассудочный" аппарат, я понял, что даже не могу сформулировать "объяснение" словами. Получалось что-то неуклюжее вроде: "Да, я осознаю свою повреждённость. Я часто поступаю недостойно замыслу Бога. Тогда я хотя бы попытаюсь не требовать 'своего' с других людей. Попробую поступать по милости, а не по формальной справедливости. Даже если со мной поступили несправедливо. Разве я часто не поступаю хуже? Я хотя бы могу не затаить обиду, не 'встать в позу'. Не сказать ещё одно язвительное слово... Это малость, но я чувствую в этом правду. Как я смею уповать на милость Бога, если даже такой малости не делаю?".

В общем, полностью формализовать я своё "толкование" так и не смог. Но то, что притча обрела для меня реальный смысл -- действительность. Теперь в "жизненных драмах" она вспоминается и подталкивает меня в нужном направлении. Почему я думаю, что это нужное направление? Там тишина.

# Бегство от тишины
std.hugeping
hugeping(ping,1) — All
2021-11-09 08:35:36


Смотрю интервью с Андреем Столяровым: https://www.youtube.com/watch?v=o111yYPqLHU

Увлекательно слушается.

Пока смотрел, в очередной раз заметил, что интерес к поднятым темам у меня несколько иной.
Вопросы безопасности, анонимности и личной свободы -- важно. Но меня больше беспокоит другой аспект.

Например, возьмём телеграм. Плохо, что это проприетарное решение. Плохо, что оно привязано к телефону и так далее. Но реальный ущерб, который я ощущаю на себе, носит скорее психологический характер. Это зависимость. Зависимость от получения потока информации в режиме 24/7 (зачастую, бесполезной и низкокачественной), от поиска социального одобрения, от эндорфинов полученных в битвах "кто-то не прав"...

Допустим, мы сделали федеративный Telegram и (невероятно!) он стал популярным. Пусть он будет работать на телефоне со свободной прошивкой. Что-то изменится в плане воздействия на психику? Безусловно, централизованный сервис -- хуже. Особенно, если говорить о соцсетях, где выдача определяется алгоритмом таким образом, чтобы повысить время удержания. Но кроме силы формируемой зависимости, будет ли какая-то принципиальная разница? Не думаю.

Попробуйте уговорить вашего корреспондента перейти на электронную почту и, скорее всего, вы услышите, что почтой пользоваться неудобно или неоперативно. Неудобно, да. Для чего неудобно? Неоперативно. Но только плотность полезной информации от оперативности точно не возрастёт. Правда, оперативность доставки мемов действительно пострадает.

К сожалению, мы уже подсели на иглу мусорного общения, и нужно прикладывать очень много сил, чтобы плыть против течения. Конечно, если вы всё ещё чувствуете, что "что-то не так".

Сегодня утром я вышел на улицу, забыв свой смартфон дома. Несколько минут я с удивлением ощущал что-то вроде страха. Но потом поймал "то самое" ощущение аналогового мира, которого мне так не хватает. Первые снежинки падали в холодном прозрачном воздухе, создавая ощущение глубины и спокойствия. Я знал, что никто у меня не заберёт этого сейчас. Что этот момент принадлежит мне одному.

Дома я не стал включать телеграм на компьютере, а телефон оставил лежать на кухне, где я его оставил. Если честно, я просто забыл о нём. Я спокойно просмотрел интервью с которого начал эту заметку и думал обо всём сразу. Вместо пустоты пришла тишина.

К сожалению, рабочий день начинается, и я беру телефон с непрочитанными сообщениями. Сколько их...

Я снова бегу от тишины...

# Аскетика в отладке
std.hugeping
hugeping(ping,1) — All
2021-10-18 16:29:58


Последние несколько дней находился в отладке, искал хитрый баг. Вообще, процесс отладки вызывает во мне смешанные чувства. С одной стороны, это заноза, которая не даёт спокойно жить (есть, спать, отдыхать). С другой стороны -- чувство эйфории или катарсис, когда все фрагменты головоломки вдруг складываются и лишних частей не остаётся... Что я имею в виду?

Когда-то, разрабатывая драйверы ещё в Windows, я пользовался SoftIce. Это был такой легендарный отладчик уровня ядра. Когда я перешёл на Linux, отладчиков такого уровня я не нашёл. Это был удар. Я не мог понять как вообще можно отлаживать код без отладчика? Но шло время и постепенно я стал замечать, что основное затруднение вызывают баги такого рода, когда отладчик никак не поможет... Обычно это проблемы синхронизации, гонок, или фундаментальные проблемы (когда архитектурные решения основывались на ложных предпосылках). И вот для такого рода ошибок, как оказалось, отладчик бесполезен. Нужно только проводить эксперименты и думать, пытаться сложить все наблюдения в одну картину.

В особенно сложных случаях факты рассыпаются и, кажется, что нет никакой системы. Кажется, что ситуация просто невозможна. Невозможна даже теоретически, так как ты не можешь придумать гипотезу (хотя бы и фантастически маловероятную), которая бы разрешила все логические конфликты.

Учась в институте, когда мы-студенты уже считали себя крутыми программистами, сталкиваясь с необъяснимыми ситуациями, мы часто ссылались на "ошибки компилятора". Как же хочется и сегодня иногда свалить всё на "ошибку компилятора".

- Такого не может быть!
- Это проблема в тесте!
- Может быть, виноваты битые провода?

Ну, и тому подобное... Да, когда ситуация не подчиняется логике есть соблазн войти в отрицание, самоутвердиться таким образом. Свою логику возвести в абсолют. Поставить себя в центре. Но это не работает. Никогда не работает. Напротив, когда программист закрывается от проблемы таким образом, он отсекает шансы на самостоятельное решение проблемы.

Работает прямо противоположный подход. Я бы назвал его аскетическим. Есть факт, и этот факт прост -- в твоей программе баг. Она несовершенна. Ты не понимаешь сути происходящего, но реальность подчиняется логике. Ты просто не видишь всей картины. Нужно смириться, собирать факты (улики) и думать, думать, думать. Не можешь связать все улики воедино? Не стоит отчаиваться! Все баги, которые ты встречал до сих пор в своей в жизни, ты решил. Каждый раз объяснение находилось, и каждый раз оно было и очевидным, и неожиданным одновременно. Так будет и в этот раз, хотя сейчас в это сложно поверить. Просто думай.

Объяснение нашлось. Как именно это происходит, я не знаю. В какой-то момент просыпается интуиция и говорит в чём дело. Поэтому отладка для меня это всегда источник страха. Потому что я не понимаю до конца, как именно решаю проблему. Есть здесь что-то иррациональное. Я просто собираю факты, обсуждаю их с кем-нибудь, думаю и потом что-то происходит. Но я, как буд-то, не контролирую этот процесс. А вдруг, в этот раз не сработает?

Ещё интересное наблюдение. Сейчас проблема была архитектурной. То, что я считал аксиомой -- оказалось ложным предположением. Именно поэтому я так долго находился в состоянии "отрицания". А ещё, проблема оказалась каскадной. То-есть, пофиксив один баг, я не решил проблему в целом. Интересное ощущение, когда логика отказывает второй раз подряд и ты вдруг понимаешь, что реакции "чёрного ящика" снова стали непредсказуемыми. Ощущение, что реальность рассыпается на кусочки.

В общем, я так и не понял, люблю я отладку или нет. Иногда мне кажется, что я люблю её больше, чем само программирование и что именно она влияет на моё мышление. Иногда, мне хочется чтобы это состояние стресса никогда не наступало. Но только оно обязательно наступит... Надеюсь, к этому времени я успею собраться. :)

# Редактор acme: пишем почтовый клиент
std.hugeping
hugeping(ping,1) — All
2021-10-13 17:46:59


Медленно, но верно, редактор acme становится моим основным редактором-средой в Linux. Почему это происходит, вопрос отдельный и он не сводится к утилитарности. Проще, удобнее, быстрее -- это всё категории, которые в большей степени определяются нашими привычками. А мной в IT движет любопытство и тяга к простоте.

Идея acme очень простая, но при этом мощная. Это не редактор, это прослойка между Unix средой и человеком. Когда вы работаете с acme, "редактором" становится вся ОС. В начале это очень непривычно, но потом -- затягивает.

До последнего момента в качестве основного редактора я пользовался emacs и пользовался им как средой. То-есть, кроме собственно редактирования файлов я читал в нём почту (mu4e), общался в телеграм (telega.el), читал pdf ну и так далее...

Отвыкнуть от emacs очень сложно, а мне было интересно проводить в acme больше времени, поэтому я решил попробовать перенести в него работу с почтой.

Вероятно, можно было бы завести upas, который есть в составе plan9port, но мне этот вариант не очень подходит. Потому что я параноик. Так как почтовые серверы мне не принадлежат у меня есть непреодолимое желание хранить копию своих почтовых ящиков локально на диске. Кроме того, это даёт возможность быстро искать нужное письмо. Поэтому я пошёл другим путём.

# Синхронизация почты mbsync

Для синхронизации почты между Maildir на диске и imap на сервере нашлась отличная штука: isync (или mbsync). Замечательна она тем, что синхронизация работает в обе стороны. То-есть, удаляя письмо в Maildir вы тем самым удаляете его в imap mailbox. Ну и так далее. Таким образом, вы получаете единый срез почты на многих машинах и всё это прекрасным образом синхронизируется через imap.

Конфигурация выглядит примерно так:

IMAPAccount gmail
Host imap.gmail.com
User user@gmail.com
Pass password
SSLType IMAPS
CertificateFile /etc/ssl/certs/ca-certificates.crt

IMAPStore gmail-remote
UseUTF8Mailboxes yes
Account gmail

MaildirStore gmail-local
SubFolders Verbatim
Path ~/Mail/gmail/
Inbox ~/Mail/gmail/Inbox

Channel gmail
Far :gmail-remote:
Near :gmail-local:
Patterns * ![Gmail]* "[Gmail]/Sent Mail" "[Gmail]/9front"
Create Both
Expunge Both
SyncState *

Правда, mbsync из апстрима создаёт каталоги на диске в кодировке UTF-7. Но в aur есть пакет с поддержкой UTF-8. Обратите внимание на UseUTF8Mailboxes в конфиге. Для других Linux можно собрать версию отсюда: https://sourceforge.net/u/shashurup/isync/ci/utf8-mailboxes/tree/

После того, как всё настроили, можно поставить задачу на таймер в systemd или cron и всё.

# Индексация

Не так давно я открыл для себя mu. Mu позволяет индексировать почту в Maildir и дальше делать выборку, показ писем, распаковку аттачей и так далее. И всё это очень быстро. Вместе с mu идёт почтовый клиент для emacs -- mu4e.

Для создания базы просто делаем что-то вроде:

$ mu init --my-address='ваш емейл'

И потом периодически делаем индексацию:

$ mu index

# Идея почтового клиента на acme

Mu -- это почти полноценный клиент, по крайней мере, для чтения почты. Практически всё можно сделать из командной строки. Например, вывести последние сообщения:

$ mu find --sortfield d --reverse "" | head -n10

Чтобы просмотреть сообщение, вы должны указать путь к конкретному файлу в Maildir. Например:

mu view `mu find "" --sortfield d --reverse -f l | head -n1`

Конечно, пользоваться в таком виде почтой малореально, но возможностей для скриптования -- масса. И когда я это понял, то решил написать свой фронтенд к mu для acme.

# Приложение на acme

Acme с помощью файловой системы предоставляет доступ к некоторым функциям по работе с своими окнами, которых оказывается достаточно для написания "приложений". Если вы работаете в Plan9, то файловая система доступна всегда. Если же вы запускаете acme в рамках plan9port, то для доступа к ней можно:

1. Использовать утилиту 9p
2. Подмонтировать ФС через fuse: 9pfuse

Допустим, у нас есть скрипт hello, который доступен по PATH. Если запустить acme и вписать hello в заголовок главного окна (там где Newcol Kill Putall Dump..), а потом нажать на hello 2-й кнопкой мыши, то скрипт запустится.

Когда скрипт запускается в рамках acme, то переменная окружения winid содержит номер текущего окна или 0, если нет никаких открытых окон, кроме главного.

Для работы с файловой системы acme пока будем пользоваться 9p.

#!/bin/sh
9p ls acme
9p read acme acme/$winid/tag

Запустите этот вариант скрипта и увидите в отдельном окне корень ФС acme и список пунктов меню вашего текущего активного окна (если такое есть).

То же самое можно сделать с fuse:

#!/bin/sh
mnt=`mktemp -d /tmp/acmeXXXX`
9pfuse `namespace`/acme $mnt

ls $mnt
cat $mnt/$winid/tag

fusermount -u "$mnt" && rmdir "$mnt"

На самом деле, в теории, fuse вариант удобнее и быстрее, но я столкнулся с проблемой. Мой ноутбук с ArchLinux не хотел уходить в сон, пока есть хоть одна подмонтированная точка fuse. Так что приходится всё время монтировать и размонтировать, что не очень удобно.

В man 4 acme (из plan9port) описана файловая система acme. Я не буду здесь пересказывать эту информацию, но отмечу только некоторые моменты с которыми столкнулся.

1. По идее, мы можем считать позицию селектора (курсор + выделение) с помощью записи в ctl строки addr=dot и и последующего чтения из addr. Однако, при открытии addr он каждый раз ресетится. Таким образом, с помощью 9p вы не сможете получить текущую позицию курсора, так как это две операции: запись addr=dot и чтение addr. А нужно, открыть (и не закрывать addr), потом записать addr=dot, потом прочитать addr. Это можно проделать при использовании 9pfuse. Например:

pos=`{ echo 'addr=dot' >> $mnt/$winid/ctl; cat; }<$mnt/$winid/addr`

2. Если добавлять в окно текст (в data), содержащий в себе переводы строк, то просто так читать из event построчно не получится. Потому что первая строка будет содержать событие, а следующая -- уже просто кусок текста и так далее. Да, число символов текстового блока тоже при этом приходит, но писать обработку такого протокола на shell неудобно. Поэтому я добавлял текст только построчно.

# Версия на shell

Первую черновую версию я написал на shell. Всё, что она делала -- показывала последние 100 писем и реагировала на нажатие средней кнопки мыши на путь к письму (при этом, нужно было сначала этот путь выделить). Она была неудобна, неполна. Но очень проста. Поэтому, в качестве иллюстраций я привожу этот вариант целиком:

#!/bin/sh
mail_view()
{
	mu view "$MAILDIR/$2" --nocolor | 9p write acme/$1/data
	echo -n 'clean' | 9p write acme/$1/ctl
	toline $1 0
}

mail_ls()
{
	mu find --nocolor -s d --reverse -f "l|d|f|s" "" | \
		/usr/bin/sed -e 's|'$MAILDIR'/\([^ ]\+\)|\1|g' | \
		head -n 100 | 9p write acme/$1/data
	echo -n 'clean' | 9p write acme/$1/ctl
	toline $1 0
}

toline()
{
	echo -n "$2" | 9p write acme/$1/addr
	echo -n 'dot=addr' | 9p write acme/$1/ctl
	echo -n 'show' | 9p write acme/$1/ctl
}

if [ -z "$winid" ]; then
	exit 1
fi

# создаём новое окно
winid=`9p read acme/new/ctl | awk '{ print $1 }'`
# показываем 100 сообщений
mail_ls $winid
# добавляем "кнопку" Get
echo -n "Get" | 9p write acme/$winid/tag

# цикл обработки событий
9p read acme/$winid/event | while read a b c d e; do
	if echo "$a" | grep -q -e '^Mx' 2>/dev/null; then # mx
		if [ "$e" = "Get" ]; then
			mail_ls $winid
			continue
		fi
	elif echo "$a" | grep -q -e '^ML' 2>/dev/null; then
		if [ -f "$MAILDIR/$e" ]; then
			msgid=`9p read acme/new/ctl | awk '{ print $1 }'`
			mail_view $msgid $e
			continue
		fi
	fi
	echo "$a $b" | 9p write acme/$winid/event 2>/dev/null
done

Кстати, этот текст был вставлен в статью так:

- ввел в tagline <cat email;
- выделил этот текст;
- нажал 2ю кнопку мыши.

Обратите внимание на цикл обработки событий. Мы просто ждём их, читая из event и реагируем нужным образом. Или снова перечитываем сообщения, или открываем текст нужного сообщения в новом окне.

Не смотря на некоторые проблемы, о которых я узнал позже, скрипт как-то работал. Однако я быстро понял, что сложную логику писать на shell не очень весело, поэтому я перешёл на Lua. Вероятно, на go было бы ещё проще, но мне хотелось сделать всё "здесь и сейчас"...

# Версия на Lua

То, что в итоге получилось, можно посмотреть тут: https://github.com/gl00my/plan9hacks/blob/master/linux/mu-query

Скрипт довольно грязный, но он работает и делает именно то, что мне нужно. Я не буду подробно описывать что именно в нём происходит, отмечу только некоторые моменты.

1. Для отправки почты используется msmtp.

defaults
auth on
tls on
logfile ~/.msmtp.log

account gmail
host smtp.gmail.com
port 587
tls_certcheck off
from user@gmail.com
user user@gmail.com
password password

account default : gmail

2. mu-query умеет показывать запросы mu. Например, вводим в tagline: mu-query from:ivanov, выделяем, нажимаем 2-ю кнопку мыши и видим нужный результат. Если не указывать запрос, показываются последние 100 сообщений. Можно листать по 100 сообщений командой Page.

3. При просмотре сообщения все аттачи распаковываются во временную директорию. Например, если я вижу, что это html письмо, я могу дописать firefox file:/// перед путём к файлу прямо в теле сообщения и нажать.

4. На данный момент поддерживается только Reply, составление нового сообщения, удаление и пометка сообщений как Seen. Forward и добавлений аттачей нет. Это несложно добавить, но пока я не стал этого делать. Может быть, будет третья итерация уже на go. :)

5. Чтобы удалить пачку сообщений или пометить их как прочитанные нужно выделить все нужные сообщения и нажать на соответствующую "кнопку".

На данный момент я пользуюсь mu-query на постоянной основе и очень доволен. Мне действительно это удобно. И главное, я понял что относительно просто могу писать под себя интерфейсы. Например, я уже задумываюсь о команде git-log.

# Опыт acme

Если говорить о практической пользе, то кроме "персонализации" инструментария я получаю с acme тот же эффект, что получаю от Plan9. У меня разгружается сознание. Когда я работаю в emacs, мой мозг перегружен информацией о множестве клавиатурных комбинаций и конкретных рецептах. Если брать другие редакторы, то в целом, ситуация повторяется. Acme в этом плане не похож ни на один из них. Его "базис" очень простой, единообразный и при этом всё ещё мощный. Настоящий Unix инструмент!

Когда я первый раз увидел acme, я не мог даже себе представить, что в _этом_ можно работать. Что же, ещё один повод напомнить себе, что встречать по одёжке не стоит.

Кстати, об одёжке. Уверен, у 99% людей пропадает интерес к acme как только они узнают, что в нём нет подстветки синтаксиса. Или, что в этом редакторе нельзя перемещаться по строкам вверх-вниз с помощью клавиатуры... Я зря это сейчас сказал, да? :)

# 0 или 1
std.hugeping
hugeping(ping,1) — All
2021-09-21 15:32:40


Когда долго программируешь, привыкаешь проверять все причинно-следственные связи от начала и до конца, разворачивать их. Отладка учит быть подозрительным. Не верь тому, что написано и вроде-бы "работало раньше". Ошибка могла не проявляться. Ошибка может скрывать проявление другой ошибки. Ошибка может быть следствием гонки. Несколько ошибок могут входить в суперпозицию и выглядеть как одна ошибка или наоборот. Чтобы действительно разобраться в проблеме, ты должен понять что именно происходит максимально педантично и досконально. Никаких домыслов! Никаких непроверенных предположений! Каждый раз ты должен учиться смотреть на код, как будто он написан только что.

Не удивительно, что с годами это начинает отражаться и на психике. Один из таких "синдромов" я замечаю у себя и у некоторых знакомых программистов. Я назвал его синдром "0 или 1". Проявляется он в различных формах, но стоит за всем одно и то же.

Если высказано какое-либо суждение, ты начинаешь его раскручивать и доводить до логического конца. Интерпретация событий всегда чёрно-белая. 0 или 1? Ведь нужен конкретный и простой факт в основе. То, что хорошо помогает искать ошибки может навредить в общении. Например?

> - Смотри, я тут игру написал Color Lines.
> - Неплохо. Только цвета шариков мне не нравятся.
> - А мне, кажется, красиво.
> - Нет, слишком яркие.

(сценарий 0) Я подобрал плохие цвета. -> Они мне нравятся, значит, у меня нет вкуса. -> Зря я написал игру.

(сценарий 1) Цвета мне нравятся, а оппоненту -- нет. -> У оппонента нет вкуса, не надо учитывать его мнение. -> Зря я его спросил.

Следствие синдрома. "Если что-то может случиться, то это обязательно случится." Перекликается с законами Мерфи, да? Не случайно, ой не случайно... :)

> - Где мой паспорт?
> - Зачем тебе?
> - Я всегда беру паспорт, когда выхожу на улицу... И, кстати, где зонт?

Усиление следствия. "Если что-то случится в будущем, то это уже случилось."

> Мы смертны -> мы уже мертвы -> нас не существует и никогда не существовало.

Ещё одно следствие -- если назревает конфликт, нет смысла тянуть, ведь "он уже случился".

> - Не могу тебя видеть!
> - Если мы враги, то давай расстанемся. Если нет, то зачем эта ссора?

Наконец, невозможность делать простейшие вещи без детального понимания задачи.

> - Отрежь кусочек скотча.
> - Какой длины?
> - Просто кусочек скотча.
> - Для какой задачи нужен скотч? (попытка узнать точную длину отрезка под задачу)
> - Блин, да ты издеваешься!

// Все диалоги являются вымышленными, любое сходство -- случайно.

Годами выработанная привычка сводить всё к "да" или "нет", "всё" или "ничего", 0 или 1 -- рано или поздно находит выход, нередко приводя к раздражению, непониманию, ссорам.

Программа -- мир, который создал программист и полностью его контролирует. Выполнение программы в глубине своей -- детерминированная шарманка. Возможно, именно отсутствие противоречий и привлекает программистов в профессию. Но жизнь -- нередуцируема и противоречива по своей сути. Попытка действовать в реальном мире так же, как ты привык работать в виртуальном, неизбежно приводит к конфликту. Попытка решения его в виде ответа 0 или 1 приводит к парадоксальным и опасным состояниям. В лучшем случае -- просто неадекватным.

Когда я слышу очередную "печальную" новость про программиста, я всегда с сожалением думаю, что не последнюю роль здесь сыграл синдром 0 или 1.

Мне кажется, любой программист в качестве противоядия должен иметь "аналоговое" хобби. Велосипед, гитара, рыбалка... Что угодно, что позволяет не терять связь с реальным миром и напоминать себе, что не всё решается через 0 или 1.

Берегите себя!

# Надвигается беда
std.hugeping
hugeping(ping,1) — All
2021-09-04 08:54:33


Случайностей в жизни не бывает. Думал ли я, посещая с семьёй воронежский цирк, что это приведёт меня к книге, в которой я прочитаю нужные мне строчки? А ведь так всё и произошло!

> Он мигом распознает подростков, неспособных стать мужчинами, ноющих, как огромный больной зуб мудрости. Он чувствует, как вдруг начинает мельчать мужчина средних лет (вроде меня). Его августовский полдень давно прошел, а он все тараторит без пользы.

## Рей Бредбери. Надвигается беда

В детстве и в институте я не очень любил Бредбери. Тогда я читал фантастику запоем, но другую -- понятную мне. А Бредбери вызывал скорее недоумение. О чём это всё? И только в зрелом возрасте я обнаружил, что он стал мне ближе и понятней. По восприятию, где-то рядом с Гофманом, которого я тоже начал открывать.

Книга отличная. Читал и не мог остановиться. Близко было всё. И главные герои -- подростки. И религиозные мотивы в фундаменте. И переплетение реального и идеального.

> - Папа.. а я хороший человек?
> - Думаю, да. Точно знаю - да, - был ответ.
> - Это... поможет, когда придется действительно туго?
> - Обязательно.
> - И спасет, когда придется спасаться? Ну, если вокруг, например, все плохие и на много миль - ни одного хорошего? Тогда как?
> - И тогда пригодится.
> - Хотя ведь пользы от этого не очень-то много, верно?
> - Знаешь, это ведь не для тела, это все-таки больше для души.

В начале, как мне показалось, я услышал в книге присутствие христианства, что сразу расположило к себе.

> Мы разжигаем в своих помыслах страсть, зависть, похоть, окисляем их в наших душах, и все это срывается с наших глаз, с наших губ, с наших рук, как с антенн, работающих, уж не знаю, на длинных или на коротких волнах. Но хозяева балаганных уродов знают, они давно научились принимать эти сигналы и не преминут урвать здесь свое. Карнавал не спешит, он знает, что на любом перекрестке найдет желающих подкормить его пинтой похотливой страсти или квартой лютой ненависти. Вот чем жив Карнавал: ядом грехов, творимых нами по отношению друг к другу, ферментами наших ужасных помыслов!

Аллюзия была настолько сильная, что ошибиться невозможно.

> ... Одного только не говорят они людям, катающимся под их музыку...
> - Чего? - не утерпел Джим.
> - А того, что если ты в одном обличье стал несчастным грешником, то и в любом другом им останешься.

Книга полна образов, которые, кажется, действуют на подсознательном, каком-то фундаментальном уровне человеческой архитектуры. Образ продавца громоотводами. Человек-в-Картинках. Подросток, стреляющий из лука в ведьму. А на сцене, где раненый Чарльз Хэллуэй ставит на плечо своего сына ружьё, заряженное восковой пулей я уже почти плакал... Вся книга наполнена поэтическими образами и лирикой октября. Но сюжет не такой прямолинейный, как мне показалось на первый взгляд, и мои ожидания не раз разбивались в дребезги.

> - Эй, что вы там прижимаете? - М-р Дарк прищурился. А, Библия! Очаровательно! Как это по-детски наивно и свежо.
> - Вы читали ее, мистер Дарк?
> - Представьте, читал. Скажу даже больше. Каждую главу этой книги, каждый стих вы можете прочесть на мне, сэр...

Но всё-таки, как мне кажется, назвать повесть христианской будет не вполне правдой. Ближе к концу события развиваются в таком ключе, что в какой-то момент я даже почувствовал недоумение. Так что же такое карнавал? И кто такой Дарк? Почему борьба с ним возможна именно тем способом, который обнаружил Чарьльз Хэллуэй?

> - Ну что? Удивлены? Могу даже почитать вам. - Дым от сигареты м-ра Дарка завихрялся над шелестящими страницами.
> - А вы, конечно, ожидали, что я рассыплюсь прямо перед вами? К вашему несчастью, это все - легенды. Жизнь, это очаровательное скопище самых разных понятий, продолжается, как видите. Она движет сама себя и сама себя оберегает, а смысл ей придает неистовость. А я - не последний в легионе необузданных.

Можно ли верить Дарку, отцу лжи? Но и Чарльз Хэллуэй, порой, сообщает нам со страниц книги нечто не всегда понятное.

К концу книги эти вопросы, на мой взгляд, не разрешаются и в полной мере не преодолеваются. Это, в свою очередь, оставляет колкое послевкусие вопроса. Так о чём же повесть? О жизни, детстве, взрослении, о человеческих страстях. Но действует ли в этом мире Бог? Доверившись книге, я чувствовал что болтаюсь между двумя состояниями: ощущением присутствия Бога и ужасом богооставленности. В повести, не смотря на всю её "сказочность", присутствует парадоксальность реального мира. В ней нет прямого рецепта, хотя сначала кажется, что есть. И это переплетение фантастики и реализма делает повесть пронзительно острой.

> "У Зла есть только одна сила, та, которой наделяем его мы. От меня ты ничего не получишь. Наоборот, я заберу у тебя все. И тогда тебе останется только погибнуть".

И вот мы уже почти добрались до конца. Счастливого конца?

> - Да, сынок. Теперь уж всю жизнь придется быть начеку. Все только начинается. Они неторопливо обогнули карусель.
> - А как же мы их узнаем? - допытывался Вилли. - На кого они будут похожи?
> - Может быть, они уже здесь, - тихо ответил отец.
> Оба друга быстро огляделись. Но поблизости была только карусель да они сами. Тогда Вилли поднес руки к лицу и внимательно осмотрел их, перевел взгляд на Джима и снова на отца.
> Чарльз Хэллуэй кивнул. Только один раз.

После того, как закончил читать, поискал в интернете и нашёл, что книга изначально была сценарием к фильму, который превратился в повесть. В 1983 году был снят фильм "Именно так зло и приходит", для которого Бредбери снова написал сценарий. Я попытался смотреть фильм и был разочарован. От магии мало что осталось. Я просмотрел ключевые моменты, диалоги и концовку, надеясь узнать что-то новое... Но быстро понял, что в фильме всё упрощено. Рецепт подан прямым текстом. Счастливые люди не нужны карнавалу. Любовь побеждает зло. Слабые места (страсти) персонажей нарисованы без тени загадки. Нет, возможно это всё есть и в повести, и это хорошо и правильно! Только в книге это настоящее, которое врывается со страниц прямо в наш реальный мир. А в фильме... похоже на пластмассу...

P.S. Кстати, такое же разочарование было у меня от просмотра фильма "1984", который на фоне книги показался блеклым и невыразительным.

# Книги, которые на меня повлияли
std.hugeping
hugeping(ping,1) — All
2021-07-25 20:01:11


> Значит, нужные книги ты в детстве читал! (с) Высоцкий

* Книги, которые на меня повлияли. *

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

Сначала под пунктом 1 я хотел поместить Евангелие. Но потом подумал, что как то не очень правильно помещать в один список откровение Божие и другую литературу. Я помню место в Евангелие, которое стало "живым" чудом и мне сложно и неуютно рассматривать это в плоскости "философии", интеллекта и подобного. Поэтому, Евангелие подразумевается, но не под пунктом "номер 1", а как бы в другой плоскости, расположенной выше. Я напишу об этом в gemini, когда-нибудь позже.

Итак, что дальше? "Диалоги" В. Свенцицкого. Книжка, которую посоветовал мне мой друг. Вроде бы простая, но именно она подтолкнула меня к изменению моего отношения к христианству. "Братья Карамазовы". "Диалектика мифа". "Новый ум короля" Пенроуза... (книга, в которой я находил 100% совпадения со своими собственными мыслями и даже мысленными экспериментами).

А до этого была гремучая смесь из произведений Экзюпери, фантастики Филип К. Дика, эзотерики Р. Баха и книг различных философов (среди которых запомнилась "Я и ты" Мартина Бубера). И, возможно, всё это тоже не было лишним. Хотя, большую часть того что я читал в этот период я не стал бы включать в список.

Но, мысленно отбирая книги, я заметил, что что-то не так.

Дело в том, что большинство из этих книг читались уже в состоянии "предожидания". И во время чтения возникало "узнавание" или вербализация того, что я ожидал найти. Да, "Диалектика мифа", например, вывернула моё сознание. Но я, похоже, внутренне был к этому уже подготовлен, когда начинал читать. Я был в восторге от мыслей Бердяева. Но не потому ли, что они совпадали с моими? Ну и дальше можно продолжать в том же духе.

Потом я вспомнил, как давным-давно удивлялся наличию "Одиссеи капитана Блада" в одном из подобных списков (к сожалению, не вспомню сейчас у кого именно я её увидел). И тут я понял, что книги, которые действительно влияли на моё мышление следует искать в детстве!

И тогда, почти сразу я вспомнил два произведения. Интересно, что в памяти они всплыли рядом, хотя между их прочтением прошло время. Дело в том, что обе вещи я воспринял похожим образом, в одном идейном ключе.

Знакомство с первой книгой состоялось так.

Мне лет 13. Мы с отцом гуляем по нашему району и обнаруживаем библиотеку. Заходим внутрь. Отец предлагает чтобы я взял что-нибудь почитать. Что меня интересует? Конечно, фантастика! Желательно, развлекательная. На полке стоит убитая в хлам книжка небольшого формата в тонком переплёте. Так как я поскорее хочу покинуть это место и выйти на свежий воздух, быстро пролистав томик, говорю: "Беру эту!".

Я потом долго искал книжку по описанию в интернете и нашёл! Это: "Опрокинутый мир" К. Приста.

Дальше, будут спойлеры. Чтобы не пересказывать сюжет, я просто помещу ссылку на статью в wiki: https://ru.wikipedia.org/wiki/Опрокинутый_мир

Я помню, что "Опрокинутый мир" подействовал на меня как удар. Привычная почва ушла из под ног и моё восприятие вывернулось наизнанку. Прямо как у героя романа.

Интересно, что воспринял произведение я, как мне сейчас кажется, не вполне традиционно. В неокрепшей психике подростка родилось странное чувство, которое я сейчас назвал бы антропоцентризмом или пониманием мифологичности реальности. Мифологичности не как чего-то "ненастоящего". А напротив -- сверх настоящего. Я вдруг понял, что реальность города, который движется к оптимуму по этим рельсам не менее реальна, чем реальность "нормального" мира. Реальность мифа оказывается более настоящей, трансцендентной, чем материализм. Материализм сам оказывается всего лишь ещё одним мифом. Я действительно думаю, что произведение я понял "не так". Хотя, вероятно, такие утверждения бессмысленно относить к художественным произведениям. Я плохо помню, кажется, в романе герой принимает "настоящую" реальность. Его миф разрушается другим, чужим для него мифом. В моём подростковом восприятии это была трагедия. Поражение, а не победа. Удивительно!

Вторую повесть я тоже долго искал в интернете по описанию. И кажется, нашёл. Но не уверен, потому что мои воспоминания и впечатления от недавнего прочтения немного разнятся. Но, скорее всего, произведение идентифицировано правильно.

В школе по наводке друга я неожиданно увлёкся Стругацкими. Как сейчас понимаю, они стали для меня детоводителем из развлекательной фантастики к более взрослой литературе.

Я прочитал рассказ (как оказалось, повесть), который для меня повторил мотивы, которые я увидел в "Опрокинутом мире". Речь идёт о "Парне из преисподней": https://ru.wikipedia.org/wiki/Парень_из_преисподней

Перечитав повесть недавно, я сравнил впечатления со школьными воспоминаниями и они совпали не везде. В памяти я снова получил закрепление понимания относительности реальности. Или, скорее, реальности как жизни. Субъективность всегда воспринималась как нечто ненастоящее, ложное. Но я начал понимать, что это заблуждение! Что субъективное восприятие и есть настоящая реальность, как и сама жизнь. Нередуцируемая на что-то более примитивное.

Реальность парня из преисподней в моих воспоминаниях не была разрушена. Он жил войной, и война осталась с ним навсегда. Он не смог остаться в "новом мире", и вернулся в старый. Разрушенный, больной, но настоящий дом. Его миф устоял.

> – Я хочу знать, кто победил.
> Корней очень долго молчал, по лицу его ничего нельзя было разобрать. Гаг сел – не держали ноги. Рядом из траншеи торчала голова Драмбы. Гаг бессмысленно уставился на нее.
> – Я ведь уже объяснял тебе, – сказал наконец Корней. – Никто не победил. Вернее, все победили.
> Гаг процедил сквозь зубы:
> – Объясняли... Мало ли что вы мне объясняли. Я этого не понимаю. У кого осталось устье Тары? Это, может быть, вам все равно, у кого оно осталось, а нам не все равно!
> Корней медленно покачал головой.
> – Вам тоже все равно, – устало сказал он. – Армий там больше нет – только гражданское население...
> – Ага! – сказал Гаг. – Значит, крысоедов оттуда выбили?
> – Да нет же... – Корней страдальчески сморщился. – Армий вообще больше не существует, понимаешь? Из устья Тары никто никого не выбивал. Просто и алайцы, и имперцы побросали оружие и разошлись по домам.
> – Это невозможно, – сказал Гаг спокойно. – Я не понимаю, зачем вы мне все это рассказываете, Корней. Я вам не верю. Я вообще не понимаю, чего вам от меня надо. Зачем вы меня здесь держите? Если я вам не нужен – отпустите. А если нужен – говорите прямо...

Но в действительности, перечитав повесть я обнаружил, что миф героя (как и в опрокинутом мире) был разрушен. Удивительно, почему в моих воспоминаниях эта деталь забыта и выброшена как ненужная? Вероятно, для меня было более важным другое открытие и именно оно было взято из обоих произведений и избирательно сохранено памятью.

В общем, список из книг я так и не составил. Но в очередной раз понял, что записывать прочитанное стоит. Чтобы не искать это потом долго и мучительно в интернете. :)

# Работа
std.hugeping
hugeping(ping,1) — All
2021-06-29 14:31:03


Прочитал на днях книгу про работу в метро.

Называется "Не прислоняться". Один из авторов -- Макс Рублёв (я так понял -- это псевдоним), бывший машинист и автор блога в ЖЖ известный под ником Метроэльф https://metroelf.livejournal.com/

Книга очень захватила! Прочитал буквально за вечер. Где-то слышал такую мысль, что читать об особенностях чей-то работы всегда интересно. И это действительно так. Например, есть такая книга "Работа" Стадса Теркела. Там главы оформлены как интервью с обычными людьми, представителями разных профессий. Известная и популярная книга. Я читал её фрагментами. Больше всего запомнилась глава "Телефонистка".

> Один человек попросил: «Что-то мне тоскливо, поговорите со мной, хорошо?» А я ответила: «Простите, пока не могу». Но ведь, правда, же не могу. (Смеется.) Люди общаются благодаря мне, но не со мной.

Вроде всё просто, но остаётся какое-то ламповое послевкусие... Ощущение пространства, глубины за кадром.

Кстати, на "Телефонистку" я набрёл после просмотра фильма "Бескрайняя ночь" 2019 года, где нет ничего, кроме атмосферы летней ночи, тайны и работы на аналоговом телефонном коммутаторе. Но вот, что-то всколыхнулось от этого фильма. Что-то детское, настоящее, аналоговое...

Так вот, возвращаясь к "Не прислоняться". В книге есть романтика. Есть контакт с людьми, с пассажирами, работниками метро, с читателями книги... Есть искра. И книга становится интересной не только (и не столько) потому, что раскрывает некоторые нюансы профессии, но, главным образом, благодаря наличию этой искры. Из-за понимания, что все мы люди, все мы в одной лодке.

> Последний круг. Легкий сквозняк гуляет по кабине. На открытом участке – ливень. Тугие струи смывают со стекла пыль и грязь. Открываю окно. Жадно впитываю наполненный влагой воздух. Хочешь быть счастливым? Будь им! Станция…

Часто замечал, что когда я очень-очень сильно устаю, я перехожу в какое-то созерцательное состояние. Например, ты едешь усталый после работы домой, прислонившись головой к стеклу маршрутки и смотришь на огни вечернего города... И вот эта умиротворённость, созерцательность, как-то связана с настоящими нами. А настоящие мы раскрываемся в том числе и в нашей работе, особенно если она делается с любовью. В "Не прислоняться" я это тоже увидел.

А ещё, читая книгу, я в очередной раз задумался о том, как уродлив капитализм в контексте социальной справедливости. Я посмотрел сколько зарабатывают машинисты метро. Почитал в интернете отзывы от бывших работников, которые описывают привычную картину, когда всё держится на работягах, инженерах и низшем руководстве. Вопреки самодурству и шапкозакидательству высоких начальников. Как далеко от реальных проблем руководство высшего и среднего звена... Это всё очень знаком и типично. Наверное, каждый из нас сталкивался с таким.

Но, "рыночек порешал"...

Мне повезло, с детства я выбрал профессию, которая оказалась востребованной и хорошо оплачиваемой на рынке. Но была ли в этом моя заслуга? Если честно, я не уверен. Я всегда занимался тем, чем мне было интересно заниматься. К чему, вероятно, у меня были природные способности и задатки.

Я часто встречаюсь с восприятием интеллектуального труда, как с чем-то несоизмеримо более почётным, чем физический труд. И мне это кажется странным. Профессионалом/мастером можно быть в любой области. Какая роль в твоём профессиональном росте принадлежит твоей свободе воли, преодолению? А какая -- просто счастливым набором врождённых талантов? Я не берусь ответить для себя на этот вопрос. Как по мне, программисты всю жизнь играют в компьютеры и получают за это неплохие деньги. Разве это справедливо? // Только работодателю не надо такое говорить. :)

А ещё я часто вспоминаю работу в контексте книги Бытия.

> Быт 3:19 в поте лица твоего будешь есть хлеб, доколе не возвратишься в землю, из которой ты взят, ибо прах ты и в прах возвратишься.

Тут труд -- суровая необходимость. Особенность повреждённого мира. И большинство людей живут именно в режиме выживания без какого-либо выбора... Что тут сказать... Всё-таки странная это штука -- работа...

А книжка -- хорошая! Рекомендую.

# Бердяев и Твиттер
std.hugeping
hugeping(ping,1) — All
2021-05-14 18:21:43


Когда я заводил аккаунт в твиттере ( https://twitter.com/peter_ru ), мне казалось это хорошей идеей. Я думал записывать там свои наблюдения, делиться ими. Потом находить их, перечитывать снова. Но со временем я стал замечать, что не делаю этого. Даже тогда, когда я точно помнил о нужной мне записи, мне не удавалось найти её.

Для написания заметки о свей политической ориентации ( только в gemini://hugeping.tk/LIKwmTZZxh8nPJQsKJrm.gmi ) мне понадобились цитаты, которые (я точно помнил!) я записывал в твиттер. Найти нужные записи через обычный поиск я не смог. Не смог я их найти и через google. Только с помощью расширенного поиска удалось найти этот период времени! Но забрать цитаты всё равно было очень нелегко!

Дело в пресловутой js обвязке, которая не позволяет просто скопировать весь нужный период. Руками же прокручивать и копировать очередную порцию записей было крайне утомительно.

Я тогда в очередной раз (как и с инстаграмм) понял, что есть фундаментальное зло в том, чтобы раздавать частички своей личной информации корпорациям, которые используют её как быстро обесценивающийся товар. Твиттеру мои записи нужны лишь для создания потока, а для меня они -- часть моей жизни. Иногда мне хочется вернуться к ним, протереть пыль. Посмотреть старые фотографии. Прочитать мысли, которые меня беспокоили. Почему я так легко расстаюсь со своим личными воспоминаниями?

Я воспользовался функцией twitter, которая позволила мне загрузить свои данные в виде архива. Интересно, что "в целях безопасности" архив готовился сутки. Сообщения в архиве хранятся в формате json, который я теперь могу парсить и извлекать нужные мне записи. Правда, фотографии в архиве были в уменьшенном варианте и мне пришлось скачать их вручную. Фотографии я разместил в фотоленте.

Мне нравится, что теперь я могу просто опубликовать цитаты. В простом тексте. Без подвоха. :) Нет никакого смысла пользоваться твиттером, инстаграмм или другими соц. сетями, если только ты не преследуешь коммерческие цели или тешишь свои амбиции, пытаясь завладеть чужим вниманием. Но зачем разменивать свою жизнь на эту пустоту?

# Цитаты Бердяева

> Тоска может пробуждать богосознание, но она есть также переживание богооставленности. Она между трансцендентным и бездной небытия.

> Я мучительно чувствовал чуждость всякой среды, всякой группировки, всякого направления, всякой партии.

> Прежде всего, я убежден в том, что воображение еcть один из путей прорыва из этого мира в мир иной.

> Стремление к бесконечному и вечному не должно быть пресечено иллюзией конечного совершенства.

> Ничего нельзя любить, кроме вечности, и нельзя любить никакой любовью, кроме вечной любви. Если нет вечности, то ничего нет.

> Обратн. стороной ... моего существа явл. сознание неподлинности, неокончательности, падшести этого эмпирического мира. И это во мне глубже всех теорий, всех философских направлений.

> Социально в коммунизме может быть правда, несомненная правда против лжи капитализма, лжи социальных привилегий.

> Идол коллектива столь же отвратителен, как идол государства, нации, расы, класса, с которым он связан.

> Чел. сознание перерождается, когда им овладевает идолопоклонство. Комм-зм как религия … есть образование идола коллектива.

> Совесть есть глубина личности, где человек соприкасается с Богом. Коллективная совесть есть метафорическое выражение.

> Я антиколлективист, потому что не допускаю экстериоризации личной совести, перенесения ее на коллектив.

> Я согласился бы принять коммунизм социально, как экономическую и политическую организацию, но не согласился его принять духовно.

> Коммунизм … в русской революции, отрицал свободу, … личность, … дух. В этом, а не в … социальной системе, было демоническое зло …

> Политика в значительной степени есть фикция, владеющая людьми, паразитарный нарост, высасывающий кровь из людей.

> …у меня отвращение к «политике», кот. есть самая зловещ. форма объективации человеческого существования… Она всегда основана на лжи.

> Я могу принять Бога только через Сына. Нельзя принять Бога, если Бог сам не принимает на себя страданий мира и людей…

> Идея свободы для меня первичнее идеи совершенства, потому что нельзя принять принудительного, насильственного совершенства.

> Я не согласен принять никакой истины иначе, как от свободы и через свободу. Слово свобода … здесь в более глубоком, метафиз. смысле.

> У меня есть основное убеждение, что Бог присутствует лишь в свободе и действует лишь через свободу.

> Во мне есть сильный метафизически-анархический элемент. Это есть бунт против власти конечного.

> Я чувств. погруженность в бессознательное лоно, в нижн. бездну, но еще более чувствовал притяжение верхней бездны трансцендентного

> Я твердо убежден, что в человеческой жизни есть трансцендентное, есть притяжение трансцендентного и действие трансцендентного.

> Я всегда боялся счастливых, радостных минут. Я всегда в эти минуты с особенной остротой вспоминал о мучительности жизни.

> Я не могу поставить себя вне судьбы своего народа, оставаясь на высоте каких-ниб. отвлеченных либерально-демократических принципов.

> У меня всегда была советская ориентация, несмотря на то, что я всегда критиковал и продолжаю критиковать коммунистическую идеологию

> В русск среде в Париже были элементы германофильские, кот. ждали от Гитлера освобождения России… Это вызывало … глубокое отвращение

> Существует Сущая Правда, она не походит на мир и на все, что в мире, но она должна открываться и вочеловечиваться.

> Бог есть сила освобождающая, просветляющая и преображающая

> Самая напряженная мысль аффективна, проникнута трансцендентным чувством и не подчиняется принципу тождества.

> Мысль, не взятая в целостность духа, имеет тенденцию объективировать и экстериоризировать, и это и порождает противоречие…

> Конец мира … не в будущем, кот. есть часть нашего разорванного времени. Конец мира есть конец времени. Времени больше не будет.

> История должна кончиться, потому что в ее пределах неразрешима проблема личности.

> Если нет Бога т.е. … нет высшей сферы свободы, вечной и подлинной жизни, … то нельзя дорожить миром и тленной жизнью в нем.

> Нет ничего более жалкого, чем утешение, связанное с прогрессом человечества и блаженством грядущих поколений.

> Познание жизни, самое глубокое и … истинное познание, имеет невыразимо эмоциональную природу…

> Реальность мифа о Боге, о Духе, об Истине нельзя доказать и не нужно. Это дело последнего избрания и предполагает свободу.

> Совершенный … строй в царстве Духа… будет царством свободы. Совершенный… строй в царстве Кесаря будет всегда истреблением свободы

> Революция всегда лишь результат взрыва иррациональных сил. И вместе с тем революция всегда стоит под знаком рациональных идей

> Свобода предполагает, что жизнь не окончально… рационализирована, что в ней есть зло, кот. должно быть побеждено своб. усилием духа

> И самый большой, самый предельный трагизм есть трагизм в отношении человека к Богу.

> Весь трагизм жизни происходит от столкновения конечного и бесконечного, временного и вечного…

> Он (марксизм) есть духовная утопия… именно потому, что он претендует победить трагизм человеческой жизни

> … марксизм духовная утопия, утопия совершенной рационализации всей человеческой жизни.

> Христианство есть религия распятой правды. Распятая правда не принуждает, она обращена к свободе.

> Духовное начало в человеке есть истинная свобода, а отрицание духа, додуманное до конца, - неизбежно есть отрицание свободы.

> … При этом творимое свободным духом есть и наиболее реальное.

> Видимый мир не есть навязанная нам и принуждающая нас реальность, он обращен к свободе духа.


P.S. Edited: 2021-05-14 19:53:20

# Оголтелая информатизация
std.hugeping
hugeping(ping,1) — All
2021-04-18 12:08:34


Я не пользуюсь мобильными банками. До сих пор я считал, что это повышает безопасность в случае кражи и потери смартфона. Как же я был наивен!

На днях пришлось взаимодействовать с ВТБ и совершенно случайно я узнал, что для того, чтобы получить доступ к мобильному банку достаточно знать номер карты и... и это всё! То есть, если злоумышленник получает доступ к вашей "симке" и при этом знает номер карточки -- он спокойно ставит приложение и авторизируется! Пароли из банкомата? Зачем, это же так сложно! Прибыли упадут!

Некоторое время не мог прийти в себя. Потом узнал, что точно такая же ситуация и в Сбере.

При этом, я не могу создать счёт, операции с которым были бы не доступны онлайн. Понимаете? Абсолютно все ваши сбережения вы таскаете с собой в кармане! От взлома вас защищает только пароль на Android и надежда на то, что номер карточки злоумышленнику не известен. Что предполагается? "Ну, в случае чего, вы можете позвонить и заблокировать карточку."(c)

Похоже, единственный путь для параноиков, это покупка отдельной "симки" для банкинга. Кстати, тарифы без интернета запрятаны у всех операторов очень глубоко, но всё-таки пока доступны. Правда, надо периодически пользоваться номером, чтобы его не отключили за неактивность.

Интересно, что не смотря на то, что сам я работаю в IT, я не очень доверяю IT-системам, о которых я мало что знаю. Например, я всё ещё сталкиваюсь с проблемами при работе с Госуслугами. Три ситуации за последний месяц со мной и членами моей семьи! Одну из проблем пока так и не удалось решить. И похоже, что это массовое явление. При этом, отсутствие возможности получения услуг без использования IT-систем делает тебя заложником ситуации. Не проходит проверка паспорта? Обращайся в ГУВД! Сайт с услугой проверки паспортов не работает? (И, кстати, не поддерживает https.) Ну, что делать. Никто не знает. :) Хорошо, я хотя бы способен понять, что происходит. А что говорить о людях, для которых IT -- тёмный лес? Так и ходят годами между разными ведомствами.

В общем, везде одно и то же. Тотальная и оголтелая "информатизация" приносит не только пользу, но и вред. Информация -- слишком текучая субстанция. Её тяжело контролировать. Невозможно предотвратить её распространение. Любые базы -- утекают. В любых системах случаются сбои. И если не предусмотрены иные "запасные" механизмы работы, неизбежно возникают "неразрешимые" проблемы.

Я давно не доверяю собственному смартфону. Да и почему я должен ему доверять, если я вижу, что даже фраза произнесённая вслух влияет на выдачу контекстной рекламы? И что история моего браузера уходит куда-то (конечно же, ради моего удобства!) на сервера google? И чтобы это всё отключить, я должен проявить немалое упорство. Почему, зная это, я должен доверять надёжности защиты Android и верить, что мои банковские счета надёжно защищены "кодом доступа"?

Почему я должен решать проблемы неконсистентности баз данных и программных сбоев ведомственных услуг?

Развитие неизбежно. И, возможно, что оголтелая информатизация -- меньшее зло. Особенно, если сравнивать её с традиционной аналоговой бюрократией. Но всё-таки, информация требует более ответственного отношения. Она даёт больше свободы не только нам, но и злоумышленникам! Нельзя, чтобы информатизация развивалась стихийно, по крайней мере в критически важных с точки зрения безопасности сферах.

В ситуации с банками, думаю, победила жадность над здравым смыслом.
В ситуации с Госуслугами скорее всего "сработало" отсутствие нормальных кадров и масштабность задачи.

Причины разные, но во всех случаях прослеживается отсутствие "архитектора". Интересно, я угадал или нет? :)

P.S. Edited: 2021-04-18 12:12:27

# Икона // Джорджия Бриггс
std.hugeping
hugeping(ping,1) — All
2021-04-10 20:50:04


Я -- православный христианин. Пишу эти слова с опаской, понимая, что за ассоциации могут возникнуть у скептически или антиклерикально настроенного читателя. Когда я поверил в Бога, лет 15-16 назад, в медийном пространстве вокруг церкви тоже было много всего такого, к чему я испытывал "праведную" неприязнь и ярость.

Но, в центре Церкви -- Христос.

> Евр13:8 Иисус Христос вчера и сегодня и вовеки Тот же.

А тёмный двойник церкви был всегда, об этом хорошо писал С. Фудель.

Я очень нерадивый православный, это без какого-либо обмана. Так что "постится, молится, слушает Радонеж" не совсем (или совсем не) про меня, но я понимаю, что без Христа меня просто не существует. Не существует всего того, что я люблю и чем дышу.

Это вступление необходимо (хотя я и хотел бы его избежать), потому что я собираюсь писать на тему, которая непосредственно связана с моим мировоззрением.

С момента своего "обращения" я всегда с опаской относился к "православным" или "христианским" художественным произведениям. Я очень подозрительно и недоверчиво отношусь к фальши. Возможно, эта подозрительность вызвана моими собственными тараканами, а также тем фактом, что я в храм пришёл поздно. И для меня "воцерковление" -- далеко не безболезненный процесс. Поэтому, мне больше по душе, когда я нахожу христианство в "нецерковной" литературе. Даже если это Стругацкие, открыто определяющие себя как атеисты.

А ещё есть произведения в которых христианство вписано "между строк". Например, "Нарния" С. Льюиса или "Властелин колец" Р. Толкиена. Правда, Нарнию я так и не дочитал...

А песни В. Цоя? Удивительно, но сколько там звенящих слов? Если есть шаг, должен быть след... На эту тему можно вообще отдельную заметку написать.

Среди художественных книг мне очень запомнилась "Камо грядёши" Г. Сенкевича. Да, ещё "Несвятые святые". Отличная книга!

Среди фильмов: "Остров", "Монах и бес" и "Старец Паисий и я, стоящий вверх ногами". Наверное, было что-то ещё, но это те, которые вспомнил прямо сейчас.

Как мне кажется, все эти произведения доступны как верующим/ищущим, так и неверующим людям. Можно долго спорить о "лубочности", "каноничности" и всём таком прочем, но мне кажется что это хороший пример произведений для "всех".

Однажды, я был в храме и слушал проповедь священника. Честно говоря, мне она не очень понравилась. Она казалось вымученной. Просто речь усталого человека. Понятно, не все священники -- ораторы. Но мне было всё-равно немного грустно. А потом на амвон вышел молодой священник. И своими словами, на пальцах, начал говорить. Возможно, в его речи были "ошибки и неточности", но было главное. Я видел, что он верит в то, что говорит. Что он горит! И это передалось сразу же. Мне. Другим людям вокруг. Я стоял и мне хотелось улыбаться. Я и улыбался этому молодому священнику. Запомнил этот случай, хотя он был уже давно.

Так вот, делиться таким зарядом тоже очень важно! Поэтому, в чисто христианском творчестве есть смысл. Когда ты уже "устал от безжалостных уличных драм", опыт живой веры способен вывести тебя из тупика или кризиса. Так я подумал, когда натолкнулся на книгу "Икона" Джорджии Бриггс на каком-то православном ресурсе.

Меня сразу подкупили несколько фактов:

* Книгу написала американка. Американская православная! Удивительно, правда?
* Автор -- молодая девушка, с глазами в которых горит искренность.
* Книга в жанре антиутопии!

Я решил купить книгу у издательства, чтобы поддержать всё хорошее. Но забыл. Сделал это только вчера. Прочитал книгу за день (она совсем короткая) и теперь мне есть что рассказать и о чём подумать...

Мне понравилось! Но "понравилось", возможно, не то слово. Просто в этой книге чувствуется горение, которое пробивается сквозь строки и оживляет их. Добавляет всему смысл и глубину.

Повествование ведётся от лица девочки, которая живёт в эпоху толерантности, когда христианство вне закона. Уничтожаются книги. Даже такие безобидные как "Нарния". Детям христиан дают новые имена (так, чтобы они не напоминали о святых). Психологи и учителя искореняют остатки вредной веры среди учащихся. Девочка -- сирота. Её семью убили во время стихийных гонений. Сама она выжила благодаря чуду.

Когда я начал читать, текст был довольно жёстким и при этом искренним. В этот момент я был уверен, что "Икона" -- это тот самый пример "универсального творчества". Хорошо передана атмосфера антиутопии. Книгу можно растаскивать на цитаты, но я приведу одну:

> ... Но сейчас мне необходимо самой узнавать некоторые вещи, о них не спросить у взрослых и не найти в интернете, потому что мой школьный компьютер под контролем. Конечно, поиск информации в книгах занимает гораздо больше времени, но я могу это делать осторожно, точно зная, что никто за мной не подглядывает. И я уже здорово научилась разбираться в индексах книг на полках.

Да, нечто подобное происходит и сегодня. Когда я не доверяю собственному смартфону.

Книга написана предельно просто и лаконично. Но при этом в ней с лёгкостью, практически мимоходом, затрагиваются совершенно разные личные наблюдения, которые воспринимаются скорее как разговор по душам, чем философские рассуждения:

> — Да, и мне, — говорю я, — я так и не поняла — это ему приснилось или он действительно спрятался в безопасном месте. Почему бы автору не написать об этом просто и понятно?
> — Наверное, она думала, так будет более правдоподобно, — говорит Мими, — жизнь полна таких моментов, когда кажется, ты висишь над пропастью. И далеко не всё в жизни устраивается просто и красиво.
> — Вот именно поэтому я считаю, что книжка должна заканчиваться то хорошо, — говорю я, — в жизни и так слишком много грусти.
> Мими смеётся.
> — И чем старше ты становишься, тем она грустнее... Какое утешение.

Прочитав больше половины, я поймал себя на мысли, что вспоминаю "Мерзейшую мощь" Льюиса. Но если в "Мерзейшей мощи" христианство читается "между строк", "Икона" с определённого момента начинает напоминать "жития святых" в фантастическом антураже антиутопии. Это воспринимается необычно. Смесь мифа, почти переходящего в "наивную сказку для подростков", с зловещим реализмом антиутопии. И вот в этот момент, когда я уже практически был уверен в том, что книгу можно рекомендовать только православным, наступает развязка...

И тут, снова звенящая искренность. Простота. Спокойствие. Мне не хочется спойлерить концовку. Хотя хотел бы описать место, которое потрясло меня своей простотой и при этом точностью.

Сейчас, когда я пишу эту заметку, я внезапно понимаю, что сама книга напоминает икону. Вроде бы, простая на вид, с примитивной "обратной" перспективой. Но это дверь. Кто-то, пожав плечами, увидит в ней лишь наивную "плоскую" картинку. А кто-то, в душевной простоте, откроет эту дверь и окажется в Нарнии. Зависит от читателя.

> ...а может быть, когда твоя душа становится только душой и уже не связана с телом, возраст больше не имеет значения?

P.S. Кстати, сама Джорджия пишет настоящие иконы. Об этом я узнал уже после прочтения книги, поискав информацию об авторе в интернете. Интересно. :)

# Войнушка
std.hugeping
hugeping(ping,1) — All
2021-03-28 21:59:55


Кажется, есть такая аналогия, что человек за свою жизнь проживает те же этапы, что и человечество. То есть, история жизни отдельного человека как фрактальный фрагмент вложен в общий фрактальный рисунок мировой истории.

Не знаю, лично моё ли это наблюдение, или это характерная черта того периода истории, в котором прошло моё детство, но я отчётливо помню свой первый опыт навязывания относительности морали.

В детстве мы всем двором играли в "войнушку". Кстати, у каждого поколения свои игры. И мне кажется, "войнушка" осталась в прошлом. Можно возразить, что военные игры перешли в компьютерные стрелялки. Но мне думается, это не совсем так. Играя в "войнушку", мы как бы всегда противопоставляли себя - хороших и врага - плохих. Как мне кажется и помнится, это не было просто "игрушечной бойней". Это был способ почувствовать этот "вектор". Хотя, конечно, я могу ошибочно обобщать личный опыт.

Потом был период "перестройки", в который пропаганда попыталась вовлечь и детей. Помню, как в детских передачах, в школе, постепенно пошли разговоры о разоружении. В том числе и "детском разоружении". Кажется, вспоминается кадр (ТВ?), когда дети выбрасывают игрушечное оружие... Не знаю как другим, но мне было не по душе. Я не понимал, что плохого мы делали? Ведь в "войнушке" мы всегда были за хороших и против плохих! К счастью, эта фальшивая движуха как-то быстро сошла на "нет".

Ну, а что было потом -- все знают...

Когда у нас в стране стали массово появляться сначала "бытовые" компьютеры, а затем и "персоналки", конечно, мы все были ошеломлены компьютерными играми! Во многих играх правила не отличались от "войнушки" и было очевидно, что мы играем за "хороших парней". Принц. Вольфенштейн. Another World. Flashback. Ну и так далее... Даже в думе мы мочили "плохих парней", следовательно, были "за наших".

Но потом, я точно помню этот момент, что-то изменилось. Стали появляться игры, о которых было принято говорить в превосходной форме, потому что они предлагали "новые ощущения". Одну из таких игр я купил. По своей наивности, поддавшись общему настроению. Это была Dungeon Keeper, в которой мы играли за злого персонажа, властелина подземелий и который уничтожал, мучил и так далее -- хороших героев. Я не помню, как долго я играл в эту игру. Скорее всего раза два. Но я точно помню что был обескуражен. Что это? Что происходит? Но все в моём окружении, как один, хвалили игру. И я верил им.

Наверное, были и другие игры, но точно я уже не помню. Вспоминается только Warcraft. Одна из частей, в которой можно было играть за орков. Первый раз в серии. Я тоже был сбит с толку. Я видел как мои друзья с восторгом проходят кампанию за силы зла и не мог этого понять. Кажется, под общим внушением я начинал компанию за орков, но потом бросил.

Конечно, фрактал человеческой истории раскручивается. Наивные представления рушатся, как представления ребёнка. Но всё-таки, здесь что-то не так.

Враждующие армии, ведомые генералами и политиками, сталкиваются. И солдаты по обе стороны линии фронта умирают. Шальные снаряды убивают невинных детей. На чьей стороне правда? Не всегда ответ очевиден. Да, наверное, в высшем смысле, война -- всегда зло. Но это понимание приходит тогда, когда появляется более фундаментальный ориентир. Понимание, что все мы в одной лодке и чистенькими остаться -- не получится. Что руками жар загребать (c) всё-таки придётся. Что высшая правда, истина -- существует. И перед ней мы все предстоим равными.

Но всё это отличается от ситуации, когда релятивизм навязывается без этого высшего ориентира. Просто как норма. А в случае игр -- как прикол, поиск новых впечатлений...

Может быть я так и не вырос, но мне до сих пор не нравится, когда у меня хотят отобрать мою "войнушку".

Весь мир идёт на меня войной (c).

# Лунная радуга
std.hugeping
hugeping(ping,1) — All
2021-03-22 09:45:36


Давно не читал. А тут мне посоветовали "Лунную радугу" С.И. Павлова со словами, что "Луна-9" чем-то "неуловимо напоминает". Я давно не читал художественную литературу. Даже уже забыл как это здорово -- прочитать несколько страниц перед сном. Так что не мог пропустить такой повод и взялся за книгу.

Книга понравилась! Поэтому я решил немного написать про свои впечатления.

Я не могу сказать, что читал я Радугу ровно. Нет, в некоторых местах я вяз и буксовал, но в книге были такие моменты, которые я воспринял очень сильно.

Один из таких моментов это разговор Дэвида Нортона с Людмилой Быстровой на Меркурии. Кажется, что разговор относится к конкретным событиям. Но, как всегда это бывает с настоящим произведением искусства, разговор содержит в себе более общие, фундаментальные вещи. "Весь мир идёт на меня войной"(c). Что чувствует человек, который осознаёт себя "лишним"? Драма несоответствия внутреннего мира окружающей реальности? А ведь это уже постановка религиозного вопроса!

Интересно, что зачитываясь фантастикой в институтские годы, я искал в ней подобные крупицы. Очень много таких "крупиц" было в произведениях Стругацских. И это при том, что сами Стругацкие называли себя атеистами.

В случае с Радугой, в тексте встречаются интересные, едва заметные аллюзии на христианство.

> — Нортон, надо отдать ему должное, отлично знал своих людей — но и металл устает. Я тоже устал. Я чувствовал неодолимую усталость от постоянных тревог. Каково же им, отчаянным труженикам Внеземелья?… Но десантники, которым не довелось войти в число «двенадцати апостолов» (как теперь с легкой руки обиженного Яна стали называть группу «Титания»), штурмом брали мой кабинет.

> — Ладно, — шутливым тоном сказал я возбужденным «апостолам», — поберегите энергию для броска на Титанию. Утверждаю всех, и Христос с вами!

И вроде бы тут аналогия обыгрывается в шутливом ключе. Просто случайный оборот? Но взявшись за вторую часть книги, я пришёл к другому выводу. Аналогия, скорее всего, не случайна.

Во второй части Андрей Тобольский попадает в "грум" - пространственно-временную аномалию. Центр аномалии находится рядом с кратером. Номер кратера... 666.

> По нашим расчетам, гипоцентр можно отождествить с кратерком-малюткой, диаметр которого не превышает сотни метров. В Лунном Кадастре – раздел «Япет», подраздел «Эпигены ведущего полушария» – кратерок этот числится под номером шестьсот шестьдесят шесть. Абсолютно банальный ориентир…

Когда первый раз читаешь такое -- недоумеваешь. Что это? Своеобразный авторский юмор? Дешёвый способ нагнетать саспенс? Но после возвращения из "аномалии" в тексте встречается это:

> За пятьдесят минут телесвидания с Мартом Фроловым он принял от ведущего темпоролога чудовищный (иначе не скажешь) груз тяжеленной, как ледяная гора, информации, но, угнетаемый этой тяжестью, все же почувствовал в себе желание думать, действовать, хотя взваленный на его плечи груз был сродни печальной ноше легендарного Мессии, влекомой им по пыльной дороге на хорошо известную всему цивилизованному миру ближневосточную возвышенность.

В этом тексте характерна "стеснительная" форма выражения мысли. Особенно это кивание на "весь цивилизованный мир". Возможно, попытка избежать цензуры? Так или иначе, в этот момент аналогия закрепляется окончательно.

Нет, ребята, я не верю в случайность. Думаю, автор (осознанно или нет) ассоциировал поход в "аномалию" с сошествием в ад Христа. А потом, в конце книги, когда экзоты (часть человечества, которая прошла горнило аномалии) направляются к звёздам, я вижу аналогию с новой землей как обетованием. Ветхий человек остаётся на Земле. Новый -- уходит к звёздам.

> Откр21:1 И увидел я новое небо и новую землю, ибо прежнее небо и прежняя земля миновали, и моря уже нет.

# Прощай syscall.ru, здравствуй hugeping.ru!
std.hugeping
hugeping(ping,1) — All
2021-03-11 10:42:53


Мой домен syscall.ru обслуживался nic.ru. Сразу скажу, что крайне не рекомендую этого регистратора. Есть компании, с которыми не хочется иметь дела, и эта -- из их числа. Последней каплей стал перевод на более дорогой "тариф по умолчанию". В общем, перенёс syscall.ru к reg.ru не особенно вникая в детали. И, как оказалось, зря. Почитал материалы на их стайте и понял, что замашки такие же. Короче, в конце-концов я решил просто обрубить все мосты и отдать syscall.ru...

Зачем я это делаю? Мне кажется, это подсознательная попытка уйти из "ловушки". Я не занимаюсь бизнесом. Я не занимаюсь раскруткой. Но моя "привязка к домену" легко превращается в слабость. Начиная от того, что цена на регистрацию домена начинается с 200 рублей, а на продление -- уже с 900. (Подсадить!) И заканчивая нюансами взаимодействия с регистратором в случае неудобных для него ситуаций. Например, для расторжения договора необходимо оформление бумаг, хотя заключение договора происходит целиком онлайн. А если бы на домене была моя почта? В общем, чувствую неприятный запашок "беспощадного бизнеса". На reg.ru тоже своеобразные материалы в стиле: подумайте 100 раз, прежде чем уходить к другому регистратору! Ну и цена на продление спрятана глубоко-глубоко и даже превышает цену nic.ru (на что я и попался!)

Проект INSTEAD давно уже размещён на github.io: https://instead-hub.github.io и в самом приложении указан именно этот адрес. Так что в целом, я не так уж завязан на домен. Ну и "Перемен! Требуют наши сердца!"(c)

Появился повод поменять привычные вещи. Уже давно хотел разделить "личное" и общественное. На этот раз я сделал так:

* https://hugeping.ru -- мой личный блог + визитка
* gemini://hugeping.ru -- блог в gemini
* https://instead.hugeping.ru -- INSTEAD
* https://parser.hugeping.ru -- парсерный минимализм
* https://club.hugeping.ru -- станция Ping

Домен hugeping.tk пока указывает на станцию Ping, но скоро будет просто копией hugeping.ru

Так что, если вы посещаете какие-то ресурсы из списка -- время сменить закладки. Если вы читаете станцию пинг, в том числе и по RSS, добавьте префикс 'club.' к адресу.

Я всё-ещё думаю над тем, чтобы продлить syscall.ru на год (растянуть переходный период). Но это очередной компромисс. Я не уверен, что пойду на него.

По адресу https://hugeping.ru будут перечислены все мои ресурсы.

P.S. некоторые материалы будут публиковаться только в gemini.

P.S. Edited: 2021-03-11 11:14:58

# 9front на rpi4 как терапия
std.hugeping
hugeping(ping,1) — All
2021-03-01 14:16:23


Специально для 9front (форк Plan9) я заказал себе вторую "малинку". На данный момент система работает и я ей пользуюсь. Но путь был непростым, поэтому я решил составить памятку по основным, скажем так, нюансам.

## Plan9, 9Front и golang

На самом деле, кроме 9front на rpi4 можно поставить "ванильный" Plan9 с патчами от Дэвида Миллера. Скачать образ можно здесь: https://9p.io/wiki/plan9/download/ Забегая вперёд скажу, что ванильный Plan9 есть только для архитектуры arm32, в то время как 9front образ -- это arm64. Забавно, что даже rPI OS до сих пор поставляется в виде 32-битных сборок. И вроде бы хорошо, что 9front такой крутой. Но только на данный момент golang не поддерживает цель plan9/arm64, поэтому установка Plan9 для rpi4 от Миллера -- единственный путь получить golang. Ещё одно отличие -- драйвер wifi, который есть только в сборке Миллера.

Я думал уже поставить "чистый" Plan-9 но... Но потом понял, что если у Plan-9 и есть будущее, то оно за 9front. Так что ставил именно его.

## Заполняем всю карту

Проблемы начинаются с того, что записанный образ на карту имеет фиксированный размер. Поэтому вся карточка будет недоступна. Я пошёл следующим путём:

* Поставил в qemu 9front;
* Собрал в нём версию для arm64 (описано в разделе J руководства. С поправкой "arm32->arm64");
* Заменил скрипт inst/mountcwfs чтобы ставиться без worm http://docs.a-b.xyz/cwfs.html ;
* Ещё я поменял в скрипте inst/copydist строчку с disk/mkfs, заменив allproto на distproto;
* Включил export файловой системы;
* Записал образ на sd карту малинки. Во время загрузки выбрал загрузку не с карты, а по сети с 9front на qemu;
* Провёл процедуру инсталляции.

В итоге, у меня получилось занять всю sd карточку и без WORM раздела!

## Видео

Сначала я явно задал режим для своего монитора, отредактировав config.txt:

9fs pidos
acme /n/pidos/config.txt

Далее, заглянув в исходники ядра, я убедился что включается 16 битный режим. Я задал 24-битный (отредактировав config.txt и cmdline.txt). На мой взгляд, он работал быстрее! Однако каналы R и B были перепутаны. Тогда я просто поменял это в исходном коде и пересобрал ядро. Заработало!

## Шрифты

В этот раз я решил заморочится с шрифтами. Потому что дефолтный вид браузеров на русскоязычных ресурсах был категорически страшен. Оказалось, что для Plan9 есть утилита: ttf2subf, которая может перегонять ttf шрифт в битмап формат Plan9.

Взять её можно из extra 9front:

9fs 9front;
ls /n/extra | grep ttf2subf

Я скачал шрифты Go и перегнал размеры: 13,14,16,18,20 для каждого из начертаний (выбирал режим antialias). С помощью fontsel (тоже есть в extra) посмотрел на шрифты. Мне понравилось. До кучи прогнал ещё для любимой Iosevka. Попатчил: netfront, acme, mothra на шрифты Go и... результатом был очень доволен! Вот такой веб мне по душе!

## Почта

При настройке почты по мануалу 9front снова натолкнулся на грабли о которых забываю уже второй раз. В мануале не написано, что /mail/lib/rewrite нужно заменить файлом /mail/lib/rewrite.gateway. Без этого инструкции бесполезны. При отправке письма вы будете получать 'Invalid address.'. Не благодарите. Тем более, что вы вряд-ли будете заниматься тем же, что сделал я. :) Кроме того попатчил upas, чтобы не требовал проверки подлинности сертификатов. Да, это плохо. Но google меняет их постоянно, а в 9front нет нормальной проверки цепочки сертификатов.

## Русская раскладка

Тут я воспользовался своими патчами с https://github.com/gl00my/plan9hacks -- caps переключает раскладку.

## ruspell

Собрал lua из ports. Только там нужно собрать не только lua библиотеки, но и сам интерпретатор. Для этого там есть специальный mk файл. После этого заработал мой ruspell на lua.

## А что же с go?

Без go тяжело. Я пытался дописать plan9/arm64 цель. Даже написал реализацию системных вызовов. Но на этапе линковки под цель -- падает линкер. Пока я не разобрался в чём тут дело и отложил задачу. Но у меня есть вторая малинка, на которой крутится Linux. И на которой, кстати, сейчас находитесь вы (если читаете эту статью с https://hugeping.tk или gemini://hugeping.tk ). Так что я решил проблему своих утилит для чистого веба просто запуском их по ssh.

## Да, а как с gemini?

Собрал castor9. Но он неправильно работает с UTF-8. Делает узкими русскоязычные ресурсы. Запатчил. Ну и текстовый gemnine тоже есть.

## Зачем весь этот кошмар?

А вот тут начинается самое интересное. Моя тяга к минимализму постепенно прогрессирует и всё это время я пытался найти ей объяснение. Да, как оказалось, в этом я совсем не одинок. Например, Drew DeVault -- автор sway, основатель sourcehut. Недавно сообщил о том, что открывает хостинг в gemini: gemini://drewdevault.com/2021/02/20/Free-gemini-hosting.gm

А Алан Кокс уже довольно давно сделал Fuzix OS -- UNIX-систему для древних процессоров. Знаете какой у неё слоган? "Fuzix: Because Small Is Beautiful".

И таких примеров немало. Что происходит?

Похоже, у этой странной формы луддизма явно не технические, а человеческие причины. Вопрос ставится уже не в форме "а может ли ваша X делать Y?" Нет, выглядит это как "руки прочь от меня! Я не продукт. Здесь нет ничего, что тебя заинтересует!" Это уже напоминает панк-движение или что-то в этом духе.

Когда я собрал себе "машинку" на rpi4, поставил 9front, подключил дешёвый монитор и механическую клавиатуру на синих свитчах в голову неожиданно пришла ассоциация. Да это же просто печатная машинка! Да. Я испытываю умиротворение работая с простой системой. Это, в каком-то смысле, информационная аскетика -- выбросить мусор из головы, ограничить себя. Ограничить потоки информации, поступающие через органы чувств. Разгрузить мозг. На rpi4 в 9front не работает даже звук! Сначала у меня была мысль написать драйвер. Потом я подумал. Нет звука? Что же, это прекрасно! Поработаю в тишине.

Как то раз я отправил письмо из gmail (через веб почту) в рассылку 9front. Через пару минут пришёл ответ от робота. Извини, мы не принимаем письма в html. "Пошёл вон, Вавилон!" (c)

Я давно занимаюсь IT-технологиями. И я зависим от информации, как и многие из нас. Телефон всегда со мной ("моя прелесть!"). Чаты. Новости. Меня сделали зависимым от информации. Не без моего согласия, конечно. Но я всё ещё помню аналоговый мир и мне хочется верить, что изменения во мне обратимы. Надо выбираться из этих сетей! Пытаться. Начинать с малого. Например, не смотреть в свой телефон на прогулке... Не смотреть в свой телефон на прогулке! НЕ СМОТРЕТЬ В СВОЙ ТЕЛЕФОН! НЕ СМОТРИ В СВОЙ ЧЁРТОВ ТЕЛЕФОН!!!

До встречи! :)

# Мысли о Луне
std.hugeping
hugeping(ping,1) — All
2021-02-15 16:21:40


Я собирался написать заметку о процессе создания своей последней игры "Луна-9" после завершения конкурса ЗОК. Но вдруг заметил, что очень быстро стал забывать те интересные нюансы о которых собирался написать. Поэтому не стал тянуть и вот -- вы читаете эту статью. В этот раз я решил написать всё максимально честно. В том числе, затронув религиозные мотивы. Если вы атеист и вам неприятна эта тема -- не стоит читать эту заметку.

> Внимание! Если вы не играли в "Луну-9" я не рекомендую читать статью. Если вы не собираетесь играть, статья вам ничего не даст. А если собираетесь -- возвращайтесь после прохождения!

Игра доступна по адресу https://instead.itch.io/moon9 Дальше будут раскрыты нюансы сюжета, которые могут сильно испортить впечатление об игре.

# Мечты о Луне

Я не помню точно как именно я вышел на лунную тему. Ассоциативный ряд здесь может быть длинным. Название скриптового языка "Lua" (который используется в INSTEAD) переводится с португальского как "луна". Луна связана с ночью, тайной, снами, другой реальностью. Луна одновременно близкая и далёкая. Последний раз человек был на Луне в 1972 году. Прошло уже почти 50 лет -- время целого поколения. Почему так вышло? Неужели человек и здесь продал (и предал) свою мечту? В общем, я смотрел видеосъёмки лунной поверхности с телескопов, записи посадки Апполонов. Читал книги по лунной программе. Смотрел на Луну. Думал о ней. И начал записывать идеи в текстовый файлик, который редактировал в acme в ОС 9Front (форк Plan9).

Когда я читал книги по лунной программе, меня поразило одно из воспоминаний последнего астронавта на Луне. Что испытывает человек попавший в другой мир? Мир, который не видел ни один человек до тебя. А потом вернулся домой, чтобы остаться там навсегда. Как ты будешь существовать, пережив такой опыт? Зная, что самое значительное событие в твоей жизни навсегда осталось в прошлом.

Это наблюдение можно воспринимать в разных смыслах, в том числе и в духовном. Представляя в своём воображении унылый чужой пейзаж изрытый кратерами, видя в чёрном небе голубую Землю, я на яву чувствовал тоску, страх и трепет перед тайной.

# Сюжет

Но сюжет не клеился. С самого начала мне казалось, что игра будет о сне, как о подлинной реальности. Сне как подпространстве, в котором нет ограничения на перемещения с бесконечной скоростью. Некая раса могла бы изучить и населить эту реальность, в которую мы лишь на время попадаем во время сна. Я думал, что главный герой обнаружит одного из космонавтов прошлой вахты в странном состоянии коматоза. Затем, этот космонавт станет "проводником" главного героя в дворец лунной принцессы. (Да, образ лунной принцессы был создан до объявления ЗОК, в котором "девушка в короне" была одним из возможных "зацепок").

Правда, на первый взгляд, лунная принцесса должна была нести благо. Она убедила бы героя в том, что Земля стоит на грани грандиозной войны, что тысячи лет внеземная раса облучает с Луны ночную сторону Земли для подавления агрессии. Влияя на подсознание землян в их снах. В общем, такие повелители снов. Но излучатель вышел из строя и Земля на грани коллапса.

Мир снов и реальность связаны между собой. Для починки излучателя нужны действия как во сне, так и в нашем мире. Главный герой соглашается помочь и начинает действовать сразу в двух мирах. Собирая излучатель во сне, он выполняет реальные действия как "лунатик" и в нашем мире. Он довершает то, что не закончила прошлая вахта -- постепенно разбирает станцию на запчасти...

Но в последний момент герой узнаёт правду. Оказывается, лунная принцесса обманула его! Он своими руками построил излучатель, который впустит в мир человеческих снов демонов. Они ждали, пока человек не впустит их в себя и не привезёт на Землю. Игра должна была закончиться разрушением излучателя.

Пока я писал эти ошмётки старого сюжета по памяти, мне даже что-то понравилось. Но, увы, как только я начинал продумывать детали, сюжет рассыпался на осколки. В нём не было смысла, он был нелеп. Я долго мучился, пока просто не отложил его в ящик и не занялся другим сюжетом...

# ЗОК

Объявили ЗОК. Я не люблю писать игры на конкурсы и обычно не делаю этого. Но меня поразило совпадение: среди тем-якорей была "девушка в короне" и мне показалось это забавным. Вообще, начиная с этого момента игру начали сопровождать интересные совпадения. Например, совершенно случайно я назвал игру "Луна-9". Почему? Я изучал материалы по проекту лунной базы "Луна семь". https://spacelin.ru/luna-sem/prezentatsiya/ Учитывая время событий, я решил называть вахты по номерам: 7, 8, 9. По моим расчётам, экспедиция должна была стать 9-й вахтой. Поэтому "Луна-9". Но в этот период времени я увлёкся ОС Plan9! И в названии игры тоже была девятка! Потом, когда опубликовали игры конкурса, Луна-9 оказалась под номером... 9! После этого я просто решил расслабиться и ни чему не удивляться.

Короче, я решил участвовать. Игру я сразу видел в формате "парсера" что, конечно, неудачный выбор для конкурса. Но в виде игры на ссылках я не мог её представить. Только вот сюжет был не готов. Тот самый бредовый сюжет. Тогда я рискнул и просто начал писать...

Начинал писать игру я на eee PC под управлением ОС Plan9, в консольной версии instead-метапарсера. Но потом перешёл на Linux-ноутбук помощнее. Правда, код игры всё-равно писался в acme из plan9ports. И это был интересный и полезный опыт, потому что я и сейчас пишу текст этой статьи в acme.

Как вы уже знаете, игра начинается с конфликта с Ларисой. В тот момент я не знал, зачем она вообще здесь нужна. Просто, я вспомнил о разводах астронавтов со своими жёнами. Почувствовал что-то, не знаю. Так или иначе, но закодировав конфликт с Ларисой я не представлял себе, что будет дальше. Вернее, дальше было пока всё просто. Полёт. Чисто техническая рутина, которую я планировал сделать короткой.

# Полёт

Для полёта я попытался применить известные факты о реальных аварийных ситуациях в космосе, но в сильно упрощённой (игровой) форме. В технической части много ляпов. Я не буду их сейчас озвучивать. Но, оглядываясь назад, могу сказать, что степень реалистичности достаточна для того, чтобы убедить основную массу игроков-читателей.

В космосе я зачем-то ввёл реальное время. Мало кто заметил, но секунды на компьютере идут по-настоящему. Потом, конечно, я одумался. И сделал несколько хитростей, которые бы отвязали игрока от излишнего реализма. Но ядро времени всё ещё там и если вы будете смотреть на часы через каждые несколько секунд -- вы увидите, что время идёт в настоящем масштабе.

На полёт я потратил гораздо больше времени, чем планировал. Всё шло естественным путём и я не хотел прерывать этот процесс. Но всё это время меня мучал сюжет. Его не было!

# Метаморфозы сюжета

Больше всего мне не давал покоя эпизод с ссорой. К чему он? Как пришло озарение я не помню. Но я вдруг осознал, что если это игра про сны, то герой должен встретиться не только с принцессой, но и с женой. Ситуация с сюжетом напомнила мне ещё одну игру -- "Проводник". "Проводник" начинался просто с ситуации и для меня самого раскрылся только к середине игры. Как это произошло -- я не знаю.

После этого, фрагменты начали складываться. Во-первых, я отказался от сложностей. Отрезал всё лишнее. Я понял, что газ (облако, которое мешало посадке) и есть причина странных явлений с сознанием. (Газ появился раньше, чем я понял зачем он нужен). Во-вторых, я понял, что лунная принцесса должна бить по слабым местам главного героя. Что она -- лишь инструмент действия злых сил, которые, кстати, называют себя в игре "легион". Это из Евангелия.

> Мк.5:8-9: Ибо Иисус сказал ему: выйди, дух нечистый, из сего человека. И спросил его: как тебе имя? И он сказал в ответ: легион имя мне, потому что нас много.

Чтобы показать тот факт, что герой сам создал принцессу и впустил её в своё сердце, появился постер.

Встреча с женой была реальна и важна "им". Это не галюцинация и не просто сон главного героя. Конечно, интерпретация остаётся на усмотрение игрока. Но изменения которые произошли в герое -- реальны не зависимо от интерпреации: мистической или реалистической.

По замыслу именно жена спасла героя. Помогла ему увидеть себя, увидеть "их" в своём сердце и сделать их существование невозможным. После этого, пройдя через метанойю, Лариса и Борис оказываются как бы в "раю". Этот "рай" их общий опыт. Он останется с ними навсегда и поможет им преодолеть кризис отношений. Цветочная поляна -- мой любимый момент в игре. Там описаны многие декорации, которые, вероятно пропускаются игроками. Но для меня эта сцена стала очень личной. Один из символов -- белый голубь. Аллюзия на Святого Духа. Чтобы подчеркнуть реальность сцены на поляне, она сопровождается единственной цветной картинкой из всей игры.

Когда сюжет сложился, начался второй этап работы над игрой. Я знал что именно я делаю и больше не сомневался. Детали сюжета, конечно, менялись. Например, долгое время я не знал куда делся второй китайский космонавт, пока он сам не напал на героя возле лунного модуля...

Очень помогли тестеры. Например, пропавшему болтику нашлось применение благодаря Олегу Бошу, а акцент в концовке был изменён благодаря Александру Никитину.

# Концовка

Было три варианта концовки. В первом варианте (он есть в истории git) после финального пробуждения героя, Александр отвечает на большинство вопросов прямым текстом. Концовка позитивна и не даёт большой свободы интерпретации. Меня эта концовка не удовлетворила.

Второй вариант концовки видели тестеры. Этот вариант -- выдержка из заключения комиссии. Результаты тестирования показали, что большинство тестеров восприняли происшедшее как всего лишь сон.

Третий вариант отличается от второго тем, что из диалога Ларисы и Бориса мы узнаём, что они оба видели одинаковый сон. Именно этот вариант присутствует в релизе.

Кроме того, я планировал показывать разные концовки в зависимости от того, сможет ли игрок "помириться" с Ларисой. Но не стал этого делать. Игру вряд ли будут проходить дважды, концовка должна быть сильной не зависимо от прохождения.

# Музыка

Во всех моих играх есть музыка. Но в этой игре я не смог её представить. И, следовательно, подобрать. Я не знаю почему. Сейчас мне кажется, что так лучше. Есть только один финальный трек.

# Тишина

Возможно, по той же причине по которой я не смог подобрать звук, я не решился рекламировать игру в публичных местах. Я показал её только друзьям в соц-сетях и отправил на ЗОК. Это очень узкая аудитория, по сравнению с той, которую я пытался охватить своими прошлыми играми. Пусть это будет игра о тишине.

# Руководство

Зато в этот раз я сделал к игре настоящее руководство в pdf. С хорошей вёрстко и иллюстрациями. Правда, его всё-равно никто не читает. :)

# Интерпретации

Я выпытывал у тестеров их интерпретации сюжета и получал совершенно разные варианты. Это напомнило мне ситуацию с игрой "Вахта", когда я получал гораздо более интересные интерпретации чем те, которые я вкладывал в игру при написании. Мне кажется, это хорошо. Возможно, получилось сделать нечто лучшее, чем то, что я придумал.

# Выводы

Их нет. Я просто сделал то, что сделал. Надеюсь, "Луна-9" найдёт свою аудиторию. А мне остаётся -- лишь ждать и надеятся, что игра написана не зря.
P.S. Edited: 2021-02-15 17:12:34

# Бороздим интернет без браузера #2
std.hugeping
hugeping(ping,1) — All
2021-02-14 17:30:21


В прошлый раз я погорячился, когда сказал, что раздача контента по RSS -- редкость. Конечно, не редкость. Если посмотреть на исходный код главных страниц многих веб-ресурсов, то очень часто можно найти заветную ссылку с типом application/rss+xml. Я начал с простой утилиты на go, которая бы забирала rss ленту и выводила её в формате gemini разметки. Утилита rss2gmi лежит там же, где и остальные утилиты: https://github.com/gl00my/clearweb/tree/master/rss2gmi

Я испытал её на некоторых ресурсах и понял, что придётся усложнять. Например, некоторые сайты отдают ленту в которой в полях description находится html-разметка. Кроме того, вместо UTF-8 могут использоваться другие кодировки.

После небольших доработок я успешно испытал rss2gmi на:

* linux.org.ru - https://www.linux.org.ru/section-rss.jsp?section=1
* opennt.ru - https://www.opennet.ru/opennews/opennews_all_noadv.rss
* hype.retroscene.org - https://hype.retroscene.org/rss/index/
* форуме ifiction.ru - https://forum.ifiction.ru/extern.php?action=active&type=RSS
* interfax.ru - https://www.interfax.ru/rss.asp
* hugeping.tk - http://hugeping.tk/echo/all/rss


Но была ещё одна проблема. В acme окно всегда прокручивается в конец вывода. Поэтому, после запуска скрипта показывающего ленту, нужно было отматывать текст назад. А это -- неудобно! Решение, конечно, лежало на поверхности. Добавить опцию -r для реверсного показа ленты. После добавления этой опции, просмотр лент стал именно таким, каким я его хотел видеть. Например, для просмотра новостей opennet я просто запускаю скрипт opennet из acme и вижу что-то вроде:

## Выпуск Wine 6.2, Wine staging 6.2 и Proton 5.13-6 [38]

Состоялся экспериментальный выпуск открытой реализации WinAPI - Wine 6.2. С момента выпуска версии 6.1 был закрыт 51 отчёт об ошибках и внесено 329 изменений.

=> https://www.opennet.ru/opennews/art.shtml?num=54570 [38]

Если новость меня интересует, я нажимаю на ссылке и открывается браузер. Удобно! И в большинстве случаев -- никакого браузера! И никакой читалки RSS на qt или gtk. А в Plan9 это вообще единственный возможный способ для меня.

Сегодня многие пользуются для почты веб интерфейсом gmail/mail.ru и другими. Но это, конечно, не наш путь. Несколько последних лет я использую gnus в emacs. Забор почты может осуществляться mpop/imapsync. При этом письма просто помещаются в каталог в формате Maildir. Отправка -- msmtp. Для поиска нужных сообщений я использую mu. Mu позволяет делать выборку нужных сообщений и показывать их прямо из Maildir. И конечно, с помощью mu можно автоматизировать показ нужных писем прямо в acme!

Например, мне нужно следить за рабочим багтрекером. Я нажимаю на "кнопку" bugs в acme и получаю список последних ошибок! В теле писем есть ссылки. Я могу нажать на нужную и перейти к нужному багу. Скрип выглядит просто:

mu find from:Mantis --fields "l" -s "d" | tail -n $num | while read f; do mu view --nocolor "$f";done

Твиттер и mastadon я читаю скриптами, которые вызывают bti и toot -- консольные клиенты твиттера и мастадона.

Поиск, новости, чтение почты и твиттера... И всё это не выходя из acme. Жизнь налаживается! Acme -- действительно мощный интерфейс, легко настраиваемый под собственные задачи. И он очень помогает в борьбе с shit-вебом.

# Залечь на дно
std.hugeping
hugeping(ping,1) — All
2021-02-13 19:13:09


Уже давно заметил, что после выпуска очередной игры, период подъёма и эйфории сменяется чувством полного опустошения. И ситуация с игрой "Луна-9" не стала исключением. Хотя мне и казалось, что на этот раз я работал относительно "спокойно" и вообще стал гораздо более толстокожим... Не сработало.

Многие люди делают игры, пишут книги, рисуют и занимаются другим творчеством. Возможно, некоторые считают, что делают что-то особенное. При этом, очевидно, только немногие получают признание. Когда ты увлечён, когда твоя история живёт в голове днём и ночью -- всё в порядке! В этот момент творчество не требует оправдания. Ты делаешь то, что должен. Окрыляющая сила удерживает тебя от падения. Но этот период заканчивается и снова начинаются вопросы. Основной из которых -- зачем?

Я отдаю себе отчёт, что делаю странные вещи, которые вряд-ли можно назвать "играми" в полном смысле этого слова. Я точно не знаю, есть ли у меня аудитория, а если есть, какая она. Я не знаю, делаю ли я что-то хорошее, или работаю "в стол". Моё творчество не носит коммерческий характер, поэтому у меня нет обратной связи в виде "продаж". Мои попытки "продвигать" игры часто захлёбываются. Нередко, встречаются с грубой и циничной реакцией, что портит нервы. То-есть, в моменты отсутствия той самой окрыляющей силы, мой здравый смысл говорит мне: брось, это никому не нужно! Ты заигрался. Ты тратишь свою жизнь впустую! Спустить на землю. Твои игры унылы, занимайся работой, семьёй, бытом. Читай больше книг. Не трать свои ресурсы впустую!

И мне нечего возразить ему, этому здравому смыслу. Творчество иррационально и убыточно.

В этот момент всё хорошее забывается, и я погружаюсь в суровую реальность. В реальность, а которой я осознаю, что моё графоманство -- всего лишь эскапизм. Который никому не нужен, кроме меня самого. Но, быть может, стоит признать это и выйти из уютного мирка, который создаёт та самая окрыляющая сила? Есть много других способов отдохнуть.

В этот раз я решил ещё раз сбросить с себя ненужные мне сетевые связи. Покинул большинство чатов в Discord, Telegram. Ушёл из ФИДО. Закрыл проект "чат-метапарсер". Это были парсерные игры в виде чат-ботов для VK, Telegram, Discord. Кроме того, я не писал о своей игре на linux.org.ru, gamin.ru и dtf.ru... Но всё-равно, накрыло...

Сейчас мне кажется, что "Луна-9" моя последняя игра. Пора возвращаться в реальность. Убрать лишний мусор. Залечь на дно...

# Бороздим интернет без браузера
std.hugeping
hugeping(ping,1) — All
2021-02-08 08:53:07


После погружения в gemini и создания своей "капсулы" в нём, мне стало интересно сделать какие-то свои сервисы. Сначала, я прикрутил прогноз погоды по данным METAR-станций. Потом -- добавил поиск по Библии. И тут я понял, что формат gemini просто идеален для использования его как простого интерфейса для личных сервисов!

Выдача gemini -- простой текст. При этом, ссылки всегда находятся на отдельной строке. Это очень наглядно и здорово. Имея свой gemini-сервер и наполняя его нужными сервисами, ты получаешь удобный, чистый и наглядный интерфейс из любого уголка сети!

В Plan9 нет (и не может быть) современного браузера. Почему его не может быть, хорошо описано здесь: https://habr.com/ru/post/541196/ Это сильно пересекается с моей заметкой о ненастоящей победе open source: ii://HZhphc84EsazyASVPck3 Поэтому, в Plan 9 я уже сталкивался с ситуациями, когда мне приходилось делать запросы к веб-ресурсам руками, чтобы авторизоваться, получить нужную информацию в удобном виде и т.д. Но каждый раз это была уникальная ситуация.

А что если совместить всё? Формат gemini -- как чистая выдача. Прямые запросы -- для получения той информации сети, которая нужна. Очищенная от тонн мусора. Оформление полученного инструмента как утилит командной строки, для применения их прямо в acme, а также в виде сервисов gemini! Это может быть интересно!

Есть ситуации, когда сайт предоставляет свой контент через rss. Здесь всё понятно. Но таких сайтов немного. Особенно тех, которые предоставляют в ленте статьи целиком. Есть ситуации, когда сайт отдаёт свои данные по общедоступному rest API. Но это тоже не является общей ситуацией и требует детального изучения этого API. Поэтому я начал с утилиты, которая бы делала GET запрос и вытаскивала из HTML только те узлы документа, которые мне нужны.

Написал, конечно же, на go: https://github.com/gl00my/clearweb/tree/master/htmlcut

Утилита крайне простая! Мы просто задаём тип элемента, одно из ключевых свойств и режим поиска: regexp/совпадение/нахождение подстроки. Если какой-то узел попал в выборку, то в неё же попадёт и все вложенные элементы. Не смотря на свою примитивность, оказалось, что таких функций достаточно. Добавив режим отрицания логики и запуская утилиту в UNIX-конвеерах я смог получать дистиллированный текст статей из: живого журнала, хабра, stackoverflow...

У нас есть текст статьи, но читать его с html тегами невозможно. На github я нашёл утилиту html2gmi и оказалось, что она отлично работает!

Я почистил её от лишних мне функций, и немного поменял для нужного мне поведения: https://github.com/gl00my/clearweb/tree/master/htmlgmi

В качестве примера работы утилит в связке, приведу пример чтения статьи на habr:

curl -s "$1" | htmlcut -val '(post\_full|comment\_\_message|user\-info\_inline)' -regexp | htmlgmi -m -n

А вот фрагмент выдачи для статьи, которую я упоминал выше:

Увидев вот эту публикацию [8] про браузерные войны, я хотел было написать альтернативное наблюдение за тем, как мы докатились до такой жизни. Но Дрю ДеВолт уже всё сказал за меня.

Начиная с первых войн между Netscape и IE, главным инструментом в конкурентной борьбе браузеров стала функциональность. Вот только стратегия неограниченного роста и расширения — совершенно безумная. Слишком долго мы позволяли ей продолжаться.

С помощью wget я скачал все 1217 спецификаций W3C [9], опубликованных на текущий момент 1. Существенная часть из них должна быть реализована в браузере, чтобы современный веб работал. Я подсчитал объём этих спецификаций. Как думаете, насколько сложен современный веб?

=> https://habr.com/ru/post/541180/ [8]
=> https://www.w3.org/TR/ [9] спецификаций W3C

Не знаю как у вас, а у меня при просмотре статьи в таком формате радостно щемит сердце.

Результат меня вдохновил! Я понял, что могу читать интернет прямо в acme! Просто запуская нужные скрипты. Или написав прокси-скрипт, который сам анализирует ссылки и обрабатывает выдачу.

Но сначала нужно было решить проблему с поиском. Мне нужно было искать в acme! Ну, или из консоли.

В gemini на капсуле Толстоевского gemini://rawtext.club/~tolstoevsky/ я узнал о таком метапоисковике как searx, который использует в своей работе google, duckduckgo и так далее. При этом, он не собирает телеметрию. SearX показался мне очень удобным и для начала я просто прогнал его выдачу через свои утилиты:

curl -s -X POST -F 'q='"$q" -F 'category_general=1' -F 'pageno='"$page" https://search.fedi.life/search | htmlcut -val '(result.content|external.link|result.header)' -regexp | htmlgmi -l 0 -m -n

Результат понравился:
INSTEAD [1]
http://instead-hub.github.io
Instead | Definition of Instead by Merriam-Webster [2]

=> http://instead-hub.github.io [1].

Просто абзац текста, ссылка. Абзац текста, ссылка. Где то на этом моменте я начал плакать от умиления. Но парсинг HTML вывода это всё-таки грубо. Почитав про API SearX я узнал, что можно получать выдачу прямо в RSS! И написал ещё одну примитивную программу на go, которая делает всю работу:

https://github.com/gl00my/clearweb/tree/master/searx

Итак, мечта сбылась. Я могу искать в интернете откуда угодно. Из консоли. Из acme. На сервере gemini. И мне не нужен браузер!

Теперь не составило труда оформить поисковик в виде gemini сервиса. Что я и сделал. gemini://hugeping.tk/searx

Я немного увлёкся, и проксировал вывод выдачи на stackoverflow.com так, что теперь можно искать статьи и читать их не уходя из gemini.

Скрипт вывода статьи на stackoverflow получился таким:
curl -s "$1" | htmlcut -val '(js\-post\-body|answers\-subheader)' -regexp | htmlcut -val '(js\-filter)' -regexp -not | htmlgmi -l 0 -m -n

Узнавать нужные элементы вёрстки удобно в инспекторе Firefox.

Что дальше?

За бортом осталась OAuth авторизация. Она тоже может быть оформлена в виде небольших утилит, но пока я этим не занимался.

Главное открытие, которым я хотел поделиться в этой статье, состоит в том, что победить интернет можно и это не так сложно, как кажется на первый взгляд! Да, в выдаче большинства ресурсов находится 99% шлака, но вырезать %1 нужного контента -- посильная задача. И вдруг оказывается, что доступ к нужной информации в веб не обязательно предполагает запуск браузера и приём тонн мусора в свою голову. Эта мысль вдохновляет и поощряет на дальнейшие эксперименты.

> Но на вершине самой высокой и неприступной скалы сидят золотой и красный дракон. Кто это? А это банковские сайты и госуслуги. Удастся ли приручить и их? Пока страшно об этом даже думать, правда? :)

P.S. Edited: 2021-02-09 06:27:39

# Потерянный Internet
std.hugeping
hugeping(ping,1) — All
2021-02-01 08:35:34


После молчаливой блокировки моего аккаунта в ЖЖ, на который я транслировал свои статьи из блога, я снова задумался о том, что интернет мы потеряли окончательно.

Начал смотреть другие площадки и понял, наконец, простую истину. Все они ориентированы на коммерцию. Например, трансляция сайта в Zen предполагает монетизацию с самого начала. Кроме того, на свой сайт ты должен поместить js код. Для трансляции RSS в Facebook тоже нужно что-то вроде "бизнес" аккаунта. Для твиттера нужен телефон и перевод аккаунта в новый статус. В общем, везде я натыкался на вот это вот: "продвижение", "бизнес аккаунт", "маркетинг". Потом вспомнил ситуацию с моими парсерными играми в VK, которые не были одобрены с формулировкой "не привлекательны для пользователей"...

Короче, я прозрел окончательно. Я понял, почему я перестал находить статьи, которые были бы мне интересны: честные, личные, умные. Ещё раз вспомню прекрасную "Компьютерру". У этого журнала не было шансов, ведь он не представлял ценность для рекламодателей... Тот контент который мне нужен просто выдавлен слепым, уродливым и жадным современным shit-вебом.

Мой блог присутствует в ZeroNet. Но по техническим причинам, автоматическая трансляция туда моих статей затруднена. ZeroNet это, фактически, раздача сайтов по torrent протоколу. Для автоматического обновления контента, мне нужно постоянно держать сайт ZeroNet поднятым. Да и саму трансляцию надо ещё суметь написать.

Тогда я снова обратил внимание на #fideverse. И лично для себя пришёл к выводу, к которому прихожу каждый раз, когда возвращаюсь к этой теме. А слежу я за ней давно, ещё с появления Diaspora. В общем, главная ошибка fediverse-движения -- это попытка копировать современный Web2.0. Смысл понятен. Смотрите, у нас мастодон как твиттер, только лучше! Беда только в том, что "обычным" и "нормальным" людям уютно находиться в золотой клетке. Технические особенности их не волнуют. А законы распространения и поддержки контента -- одинаковы и в fideverse и в коммерческом вебе! Только в твиттере "всплывает" одно, а в мастодоне -- другое. А так, ну то же самое: мемасики, мат, политические лозунги, прочий флуд... Формат способствует. Ориентироваться надо не на "обывателя".

Мы отвыкли читать, думать. Отвыкли от тишины. Не знаю как вы, а я за собой это отчётливо замечаю. Современный веб разрывает сознание на околки, за каждый из которых ведётся отчаянная борьба маркетоидов.

В общем, в качестве жеста отчаяния я снова спустился в "подполье" и поднял "капсулу" в gemini. Что такое gemini? https://gemini.circumlunar.space/

Кратко, это "исправленный" до необходимого минимума gopher. В частности, UTF-8, разметка в виде упрощённого markdown и поддержка tls (хотя, лично моё мнение, tls -- это уже лишнее). Для просмотра страничек есть свои браузеры и web-прокси. Есть поисковая система.

gemini появился не так давно, но стремительный рост числа клиентов и серверов вдохновляет! Клиенты есть и под Plan9.

В общем, такой экстремальный дауншифтинг в сеть, в которой есть только информация. И честно говоря, мне это нравится. Я бы сказал, что станция ping пытается следовать тем же ориентирам. IDEC и gemini прекрасно дополняют друг-друга! Я предлагаю вам посмотреть на gemeni самим. По крайней мере это любопытно. А любопытство, надеюсь, у нас ещё осталось. :)

До связи!

А ниже я написал немного информации для старта.

# Браузеры

* lagrange -- изумительной красоты браузер с фронтендом на SDL2. Сейчас пользуюсь именно им. https://github.com/skyjake/lagrange
* amfora -- консольный браузер. Неплохо выглядит, но lagrange -- красивее и удобнее.
* deedum -- для Android. https://play.google.com/store/apps/details?id=ca.snoe.deedum&hl=en&gl=US

# Серверы

Смотрел серверы на go. Их много. Я запомнил два.

* brown-molly -- похоже, "стандарт" сервера. https://tildegit.org/solderpunk/molly-brown
* net-gemini -- очень маленький, использую его со своими изменениями https://github.com/jackdoe/net-gemini

# Сертификаты

Сначала боялся, что придётся морочиться с letsencrypt. Но нет, gemini признаёт самоподписанные сертификаты. Поэтому, просто:

openssl req \
            -x509 \
            -out somesite.tk.cer \
            -keyout somesite.tk.key \
            -newkey rsa:2048 \
            -days 3650 \
            -nodes \
            -sha256 \
            -subj '/CN=somesite.tk' \
            -extensions EXT \
            -config <( printf "[dn]\nCN=somesite.tk\n[req]\ndistinguished_name = dn\n[EXT]\nsubjectAltName=DNS:somesite.tk\nkeyUsage=digitalSignature\nextendedKeyUsage=serverAuth" )
somesite.tk заменить на FQDN своего ресурса.

# Разметка

Подмножество маркдауна. Есть секции (#). Есть преформатированный текст (```). Есть список (*). Ссылки оформляются особым образом. По одной на каждой строке. Подробности: https://gemini.circumlunar.space/docs/specification.html

# Поднимаем статический сервер

Создаём каталог с файлами .gmi. Стартовый файл обычно называется index.gmi (может зависеть от сервера, но пока все серверы, что я смотрел, работали именно с index.gmi). Генерим ключ и сертификат и запускаем сервер. И это всё! Теперь свою "капсулу" стоит добавить в gemini://gus.guru

Вы можете раздавать картинки и другие файлы, просто создайте на них относительные ссылки в .gmi файле:

=> /images/cat.png Тут котик!

Картинки отлично смотрятся в браузере lagrange!

# Некоторые ресурсы

* gemini://gus.guru -- поисковик
* gemini://wp.glv.one -- Википедия (прокси?)
* gemini://hugeping.tk -- станция ping

P.S. Пока я писал это сообщение, от техподдержки ЖЖ пришёл ответ. В общем, кросспостинг возможен только с помощью "профессионального" пакета. Прекрасная иллюстрация, правда? :)

P.S. Edited: 2021-02-01 09:16:04

# Трансляция моего блога в ЖЖ и в Telegram
std.hugeping
hugeping(ping,1) — All
2021-01-24 14:15:52


Привет всем, кто на связи!

Теперь, содержимое моего блога транслируется в ЖЖ: https://hugeping.livejournal.com и в телеграм канал: https://t.me/pingblog

Я давно хотел сделать среду, в которой я мог бы писать удобным мне способом и кросспостить на другие площадки автоматически. Теперь, такой средой стала станция ping. Посмотрю, что из этого выйдет.

Stay tuned! :)

# Анонимность и искренность
std.hugeping
hugeping(ping,1) — All
2021-01-20 10:39:36


Вчера в очередной раз вспомнил почему-то живой журнал. Давным-давно, когда он ещё был популярен, мне нравилось писать там заметки и читать других людей. И казалось, интересного материала там было достаточно.

Что значит интересного? Умного и искреннего. Сейчас, или я постарел, или интернет стал другим, или всё вместе, но я не вижу ни на одной из площадок ничего похожего на то, чем был живой журнал.

Потом посмотрел на IDEC, подумал, что давно не писал никаких заметок и тут... вдруг почувствовал один интересный момент.

Я давно публикуюсь в интернете под своим реальным именем. Я всегда считал, что если человек стесняется/прячется, то и цена его словам -- грош. Но в том же ЖЖ я публиковался под ником. Меня никто не знал. Работодатель, друзья, родственники. И я поймал себя на мысли что сам этот факт может работать как триггер!

Сейчас, как только я собираюсь что-то написать включается внутренний фильтр, который настроен на мою роль. Фильтр не пускает на выхлоп какие-то личные мысли. О вере, о любви, о жизненном опыте. Всё это рубится на корню. Но в ЖЖ я писал именно об этом.

Почему это происходит, понятно. Есть роль и она отыгрывается. Как работа. Меня знают и ожидают тех вещей, что я могу "выдать" и подсознание работает на это.

Например, если я собираюсь написать пост о Христе, внутренний цензор говорит мне, что-то вроде: Ну сейчас опять атеисты/агностики придут и будут спорить, а мне придётся быть корректным. Не стоит. А может быть, я напишу что-то неканонично? Тоже не годится! Я же православный! Думаю написать о каких-то переломных мировоззренческих моментах. Например о том, что внутренне "Я" нифига не стареет. И в 42 ты такой-же 10-летний мальчишка. Это могут найти знакомые/родственники/работодатели. Что подумают? Ну и понеслось. Даже сейчас мне захотелось отредактировать последний абзац, но не в этот раз. :)

Можно писать дневник лично, и тогда проблемы такой нет. Но ведь и отклик иногда очень важен. С людьми, которые поймут тебя, окажутся на одной волне.

Современные социальные сети в принципе не анонимны. (Я сейчас не говорю о настоящей анонимности, понятно, что вычислить тебя могут в любом случае, а о регистрации по своим реальным именам.) И тут я задумался. Возможно, в анонимности есть своё благо, которое состоит в том, чтобы дать возможность сбросить "роль". Стать чуть честнее.

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



# Идеализм, материализм, мировоззренческие вопросы [обсуждение]
std.hugeping
hugeping(ping,1) — All
2020-12-03 12:31:39


Вытащил сюда часть диалога:

> Если его некому воспринимать кроме него самого, то существует ли он сам для людей? В каком тогда смысле существуют зеленые гремлины, которых я себе представил и чем это отличается от существования вселенной?

На самом деле, большой простор для рассуждений да.

1) Есть вот фигуры геометрические. Я могу представить любую фигуру. И в каком-то смысле (рассуждая как идеалист), любая фигура существует, даже если не воплощена. Она представима, она может быть построена, нарисована, смоделирована. И мой мозг устроен так, что сродственен этой сущности настолько, что способен осознавать её. Можно, конечно, перефразировать. Сказать, что существует геометрия вообще. Что человек её неизбежно нашёл. Не создал! Нашёл. А что есть геометрия?

2) Вопрос квалиа. Что есть цвет? Длина волны? А почему субъективный опыт отбрасывается? Ведь механизм его существования явно вплетён в архитектуру мироздания? См "трудная проблема сознания".

3) Есть Вселенная и Земля, на ней возможно существование жизни. Можно сказать, что человек существует даже тогда, когда его на Земле ещё не было. Потому что идеалист считает, что есть более фундаментальная реальность, которая не является хаосом. Мир таков, что в нём возможен человек. Для идеалиста, человек существует архитектурно как часть всего "проекта".

4) Существует ли формула? Тоже интересный вопрос. Особенно те, в которых хорошо отражаются наблюдаемые "законы". А что такое законы? :) Снова - взаимодействие.

5) Как воспринимать вероятность единичного события? Есть разные трактовки, интересные.

6) Недавно только узнал про эксперимент Аспекта. Оказывается, Копенгагенская интерпретация, можно сказать, подтверждена экспериментально. Это для меня удивительно, и снова пограничные вопросы о "реальности".

Так что и с гремлинами, не так уж просто, на самом деле. Многогранный вопрос. Понятно, что мировоззренческий вопрос не решит физика/логика/математика. И многие люди, вообще-то говоря, не являются учёными. Но в процессе этого поиска, играет роль весь личный опыт, чувства, знания. Например, для меня одной из триггерных мыслей было осознание наличия "асимметрии" в наблюдаемом мире. И тогда я почувствовал, что моя архитектура - это не "инь и янь", не вечный баланс добра и зла (или отсутствие обоих). А Бог - если Он есть -- не безликий абсолют. Есть вектор. Это меня потрясло, потому что я понял, что эта мысль верная (принимается моей сутью где-то очень глубоко).

Я прекрасно понимаю, что можно возразить мне. И я сам себе постоянно это делаю. Тем самым, как бы проверяя свои границы. Кто я такой? Как я устроен? А есть ли вообще фундамент? А что есть моя firmware? А можно ли доверять вообще чему-то? И тем не менее, у человека есть ещё воля. Которая тоже, суть веры. В том плане, что обосновать рационально её невозможно. Так что это многогранный процесс, в него включено всё. В том числе и свободный выбор направления.

Просто у каждого человека поиск может по-разному протекать, с разными "триггерами". И я не вижу причин иронизировать над чужим путём (все эти примеры с чебурашками и сравнение этих идей с идеей Бога, которые, очевидно, очень разные).

P.S.
Я в детстве тоже говорил бабушке, что в космосе не нашли Бога. А потом, вот как всё получилось.

P.P.S.
Вообще, я за диалог, но только если он не выходит за рамки вежливости.

P.S. Edited: 2020-12-03 12:56:10

# Plan 9: экстремальный KISS #3
std.hugeping
hugeping(ping,1) — All
2020-11-11 13:25:57


Продолжаю использовать Plan9 (9front) на своём нетбуке.

# Кросскомпиляция на go

Я писал, что собрать современный go на eeepc я не смог - не хватило памяти. Сегодня, внезапно осознав, что всё может быть гораздо проще, чем мне кажется, я набрал на ноутбуке с ArchLinux:
$ GOOS=plan9 GOARCH=amd64 go build 
И собрал проект на go, который прекрасно запустился на 9front! Отлично, получается Plan9 не выкинут из современного go и это радует! Можно просто кросс-компилировать нужный софт.

# Доступ по drawterm

Обычно, я заливаю данные на eeepc через exportfs или по sshfs. Но иногда хочется зайти на машинку удалённо. Для этого в ArchLinux я поставил 9front-drawterm, а на 9front запускаю такой скрипт:

#!/bin/rc
auth/factotum -n
echo 'key proto=p9sk1 dom=$sysname user=glenda !password=password' >/mnt/factotum/ctl
aux/listen1 -t tcp!*!17019 /rc/bin/service/tcp17019 &

С ArchLinux:
9front-drawterm -h <ip address> -u glenda 

И получаем внешне что-то похожее на vnc. Чтобы запустить rio, наберите rio -i riostart. Перед этим можно ещё запустить webfs. Вообще, посмотрите на $home/lib/profile. Там есть ветвление между terminal/cpu. Когда вы заходите по drawterm, выполняется ветка cpu. Когда работаете на машинке в обычном режиме -- это terminal.

# Звук HDA Intel

Звук у меня завёлся, но только в наушниках. Долгое время меня это не беспокоило, но потом стало интересно. Я думал, что игра с пинами должна помочь. Но к сожалению, никакой документации я не нашёл. В исходном коде я увидел, что можно делать что-то вроде echo 'pin 26' > /dev/audioctl. Мой /dev/audiostat был таким:

bufsize   1024 buffered      0
codec 0 pin 26 inpin 18
aout 2 1d
aout 3 1d
beep 4 f00000
beep 5 f00000
aout 6 211
beep 7 f00000
ain 8 10011b ← amix 35
ain 9 10011b ← asel 34
beep 10 f00000
amix 11 20010b ← pin 24, pin 25, pin 26, pin 27, pin 29
amix 12 20010b ← aout 2, amix 11
amix 13 20010b ← aout 3, amix 11
beep 14 f00000
amix 15 20010a ← aout 2, amix 11
beep 16 f00000
beep 17 f00000
pin 18 in fix int special micin ?
beep 19 f00000
pin 20 out fix int special speaker ? eapd ← amix 12, amix 13
beep 21 f00000
beep 22 f00000
pin 23 out nothing ext rear speaker black ← amix 15
pin 24 inout nothing ext rear speaker black ← amix 13
pin 25 in nothing ext rear speaker black
pin 26 inout jack ext rear hpout green ← amix 12, amix 13
pin 27 inout nothing ext rear speaker black ← amix 12, amix 13
beep 28 f00000
pin 29 in nothing ext N/A lineout purple
pin 30 out nothing ext rear speaker black ← aout 6
beep 31 f00000
beep 32 f00040
pin 33 out nothing ext rear speaker black ← amix 12, amix 13
asel 34 30010b ← pin 24, pin 25, pin 26, pin 27, pin 29, amix 11, pin 18
amix 35 20010b ← pin 24, pin 25, pin 26, pin 27, pin 29, amix 11
outpath aout 2 → amix 12 → pin 26
outamp aout 2
inpath pin 18 → asel 34 → ain 9
inamp ain 9

Я прошёлся по всем пинам, делая echo 'pin номер' > /dev/audioctl -- звука нет. Ну и я решил, что не судьба. Потом, случайно, натолкнулся на: https://pspodcasting.net/dan/blog/2019/plan9_desktop.html

И там обнаружил, что доступна ещё одна запись: 'pin номер,номер,номер,...'. Больше никаких подробностей не было. Я снова заглянул в код, поэкспериментирвал и понял, что последовательность pin - это путь сигнала в обратном порядке (может быть, это мои фантазии, и я просто понял всё наоборот). Конкретно в моём случае, счастливой комбинацией стало:

echo 'pin 20,15,2' > /dev/audioctl

Вы можете сами сопоставить этот "путь" с содержимым audioctl.

А вернуть вывод звука на наушники проще: echo pin 26 > /dev/audioctl

В общем, наслаждаемся звуком: http://hugeping.tk/lib/uploads/9front-zuke.png

# telegram/discord

Я поднял на своей малинке bitlbee сервер. Собрал telegram-tdlib. В итоге, получилось из irc чатиться по работе в telegram. А также зависать в discord. Конечно, есть нюансы, но главное - работает! Детали описывать не буду, скучная рутина.

Зато интересный нюанс, отсутствие "нормального" браузера заставляет находить решения, которые часто оказываются более эффективными. Например, из irc клиента я хотел закачивать скриншоты и публиковать их в telegram чате. Сначала я использовал sshfs на малинку, а потом написал такой скрипт:

#!/bin/rc
if(~ $#* 0)
        file=/fd/0
if not
        file=$1

hpost -m / -u http://curldu.mp 'File@'^$file

Заливаем файл на http://curldu.mp и просто копируем ссылку в чат. Это даже проще, чем telega в emacs. :)

"Из коробки" в 9front также имеется скрипт webpaste, которая заливает текст на pastebin-подобный сервис. Всё для людей!

За это время, я много пользовался mothra и привык к аскетичному интернету. И вы знаете, я не чувствую себя обделённым. :)

Кстати, в mothra нет закладок. Закладки для меня - обычный текст bookmarks.txt, в которой строка за строкой перечислены url. Я открываю файл в acme, нажимаю 2й кнопкой мыши на url и она открывается (с помощью plumber). KISS как он есть.

Ещё один забавный курьёз: бороздя интернет в mothra натолкнулся на сайт с научными новостями. Сайт мне чем-то понравился, я добавил его в bookmarks.txt. А потом, как-то находясь в Linux, открыл его в FireFox: https://nplus1.ru :) Знаете, лучше я пойду обратно в Plan9.

# Чтение epub

page не читает epub, но на самом деле, читает. :) Вы просто монтируете epub с помощью zipfs. Потом открываете xml с текстом с помощью page. Выглядит вполне прилично - логическое форматирование присутствует. А что ешё нужно?

# INSTEAD для Plan9

SDL1 на Plan9 не готов. Поэтому я просто собрал tiny варианты инстеда и метапарсера. На удивление -- вполне юзабельно и в духе минимализма Plan9.

http://hugeping.tk/lib/uploads/9front-instead-cat.png

Так что если что, добро пожаловать: https://github.com/gl00my/plan9hacks/tree/master/9instead

# Лирическое заключение

Почти каждый день после работы я с большим удовольствием запускаю свой eeepc с Plan9 и смотрю IT-новости, чатюсь с друзьями, читаю и отвечаю на почту, слушаю музыку, программирую, запускаю игры INSTEAD (в тексте) и собираюсь написать свою. Зачем?

Честно говоря, не знаю. Но я чувствую огромный терапевтический эффект. В чём тут дело? Система не напрягает, она успокаивает. Здесь всё сделано без оглядки на костыли прошлого, без оглядки на "фичи" и разбалованных пользователей. Без оглядки на требования маркетологов. Система проста и элегантна. И с точки зрения архитектуры, и с точки зрения использования. Такой вот ретро-пост-панк-юникс. Так что я точно знаю, что "работая" в этой ОС я _отдыхаю_. Замечательно, что современный браузер никогда не будет здесь! "Пошёл вон, Вавилон!"(c).

Возможно, это характерный признак нашего времени -- IT-специалисты-эскаписты, стремящиеся найди убежище от современных переусложнённых чудовищ?

Несклько дней назад мне пришлось разбираться с одной из подсистем ядра Linux. 3 или 4 дня я изучал хитрые приёмы синхронизации, в которых гонки были архитектурно предусмотрены, а равномерность нагрузки достигалась путём хитроумнейших хаков. В этом тоже есть своя "хакерская" красота. Но не могу себя обманывать, этот код у меня вызывает стресс. Код на грани возможного. Может быть, так и надо. (Я писал уже на похожую тему ii://kXDk7c9zuOEmsuY0nFZW/ ) Но облегчение, которое я испытал вечером, запустив acme... Оно было настолько реальным... :)

# Plan 9: экстремальный KISS #2
std.hugeping
hugeping(ping,1) — All
2020-10-21 10:07:36


Постепенно осваиваюсь в 9front. Стало понятно, что кое-где есть неточности в предыдущей статье. Но не ошибается только тот, кто ничего не делает! Так что продолжу свой цикл статей про жизнь в форке Plan 9 -- 9front.

http://hugeping.tk/lib/uploads/acme-mail.png

# Простота кода

Мне не повезло. На eeepc 1000px не работал ни wifi ни ethernet. Поэтому мне пришлось портировать драйверы alc и athn с OpenBSD. В случае athn, для скорости, я перенёс только код для своей карты AR2427. Все наработки по Plan9 я выкладываю сюда: https://github.com/gl00my/plan9hacks

Я понимаю, что этот путь доступен не для всех, но хочу отдельно заострить внимание на простоте кода Plan9. Там, где в Linux/OpenBSD написано 10 строк, в Plan9 будет одна.

OpenBSD:
	/*
	 * Create DMA stuffs for TX ring
	 */
	error = bus_dmamap_create(sc->sc_dmat, ALC_TX_RING_SZ, 1,
	    ALC_TX_RING_SZ, 0, BUS_DMA_NOWAIT, &sc->alc_cdata.alc_tx_ring_map);
	if (error)
		return (ENOBUFS);

	/* Allocate DMA'able memory for TX ring */
	error = bus_dmamem_alloc(sc->sc_dmat, ALC_TX_RING_SZ,
	    ETHER_ALIGN, 0, &sc->alc_rdata.alc_tx_ring_seg, 1,
	    &nsegs, BUS_DMA_NOWAIT | BUS_DMA_ZERO);
	if (error) {
		printf("%s: could not allocate DMA'able memory for Tx ring.\n",
		    sc->sc_dev.dv_xname);
		return error;
	}

	error = bus_dmamem_map(sc->sc_dmat, &sc->alc_rdata.alc_tx_ring_seg,
	    nsegs, ALC_TX_RING_SZ, (caddr_t *)&sc->alc_rdata.alc_tx_ring,
	    BUS_DMA_NOWAIT);
	if (error)
		return (ENOBUFS);

Linux:
	alx->descmem.virt = dma_zalloc_coherent(&alx->hw.pdev->dev,
						alx->descmem.size,
						&alx->descmem.dma,
						GFP_KERNEL);

9front:
        ctlr->tx_ring = mallocalign(sizeof(TxDesc) * DSCN, 8, 0, 0);

А вот ещё один очень наглядный пример из ACPI.

Linux:
	args[0] =
	    acpi_ut_create_integer_object((u64)region_obj->region.space_id);
	if (!args[0]) {
		status = AE_NO_MEMORY;
		goto cleanup1;
	}

	args[1] = acpi_ut_create_integer_object((u64)function);
	if (!args[1]) {
		status = AE_NO_MEMORY;
		goto cleanup2;
	}

	args[2] = NULL;		/* Terminate list */

	/* Execute the method, no return value */

	ACPI_DEBUG_EXEC(acpi_ut_display_init_pathname
			(ACPI_TYPE_METHOD, info->prefix_node, NULL));

	status = acpi_ns_evaluate(info);
	acpi_ut_remove_reference(args[1]);

9front:
	p = amlwalk(dot, "^_REG");
	if (p != nil) {
		amleval(p, "ii", 0x3, 1, nil);
	}
Это не шутка, это эквивалентный код. Код из 9front это мой код, который внесён в 9front, который я писал изучая аналогичный код Linux.

Конечно, с одной стороны можно сказать, что это следствие примитивности, но не только. Весь код системы следует этой идее -- не усложнять!

Немного отвлекаясь, хочу рассказать, что похожие эмоции я испытал, когда смотрел код утилиты cat одной из ранних версий Unix. Исходный код делал именно то, что и должна делать утилита cat. Не больше и не меньше. Сегодня же, можно посмотреть на https://www.gnu.org/software/hello/ чтобы убедиться, насколько технологии переусложнены. Кто-то скажет, что это неизбежно. У нас появились локали, gettext, разные варианты системных вызовов и так далее... Всё это, конечно, так. Но... Как программисту, мне хочется спросить -- адекватна ли цена? В общем, архитектурная простота Plan9 сквозит во всём. Plan9 -- не продукт.

Итак, если вы программист (на C) -- проблем с доработками кода не будет. Кодовая база небольшая, доступна в /sys/src из коробки и очень быстро собирается/обновляется по mercurial даже на eeepc. C компилятор (вернее, даже серия компиляторов для разных архитектур) в Plan9 очень быстрый! Я так понимаю, написан он Кен Томпсоном. Система mk (аналог make) -- тоже очень быстрая и лаконичная. Ну, давайте что-нибудь соберём?

# Выход в сеть

Если у вас qemu установка, то сеть скорее всего просто работает. Попробуйте:

cat /net/ndb
ip/ping ya.ru

Я поднимаю wifi руками, скриптом. Мне так удобнее. Делается это очень просто:

bind -a '#l1' /net # l1 это моя wifi карта, cat /dev/kmesg
aux/wpa -s ACCESS_POINT -p /net/ether1 # ether1 моя wifi карта
ip/ipconfig ether /net/ether1 # dhcp

Как посмотреть доступные точки доступа?

cat /dev/ether1/ifstats

На самом деле bind '#l1' я делаю в lib/profile, до старта rio. Помните? У каждого процесса своё дерево файловой системы. А так, все процессы в rio будут наследовать его и /dev/ether1 станет доступным везде.

Дальше, разберётесь. :)

# git/mercurial

В 9front уже входит mercural. Давайте воспользуемся им, чтобы забрать проект 9front ports, там есть много чего полезного. Открываем окно rio. (Или запускаем win в acme).

cd /sys/
hg clone http://code.9front.org/hg/ports
cd 9ports/dev-vcs/git9
mk install

Теперь у нас есть git! На самом деле, есть второй способ сделать это, подмонтировав к себе один из сетевых ресурсов по 9p, например 9front.

9fs 9front
cd /n/extra
lc

Здесь вы найдёте git9.tgz, который можно распаковать и собрать. Для тренировки (и пользы!) предлагаю собрать irc7.tgz из extra. Скопировать себе в $home, распаковать, собрать (mk install) и зайти на канал #instead сервера irc.freenode.net.

Реализация git своя. Конечно, в виде файловой системы. :) Давайте заберём какой-нибудь проект по git. Я предлагаю попробовать собрать браузер netsutf.

cd
mkdir Devel
cd Devel
git/clone https://github.com/netsurf-plan9/nsport
git/clone -- это не опечатка! lc /bin/git/ да...

Ох, чуть не забыл. Все пароли (от ssh, http, wpa, от _всего_) хранит специальная служба factotum! Вы можете добавлять в неё свои пароли/ключи при запуске, чтобы не вводить пароли руками. Я делаю это через скрипт из lib/profile, который читает файлик и добавляет пароли в factotum. Это небезопасно, т.к. мой файлик -- открытый. Для безопасного способа смотрим man secstore.

Пример добавления пароля github:
echo 'key proto=pass realm=GitHub server=github.com service=http user=gl00my !password=password' > /mnt/factotum/ctl

Для сборки netsurf нужно следовать инструкциям: https://github.com/netsurf-plan9/nsport

Но, не буду разжёвывать и лишать вас радости исследования. :)

В портах вы найдёте golang свежей версии. Полезная в быту вещь.

// На данный момент, кстати, он собирается только если закомментировать строку CLEANCOMMAND в mkfile.

На eeepc мне удалось собрать только go14 (мало памяти), но в qemu установке собрал современную версию. Так что можно собирать софт для eeepc в qemu.

# Браузеры

"Современных" браузеров в 9front нет. Для многих "пользователей" это невыносимая потеря. А для меня это делает 9front настоящей отдушиной. В этой системе нет окна в зашлакованный современный веб! По-моему, это даже здорово.

Если серъёзно, у меня уже был опыт использования урезанных браузеров, так что был подготовлен. Для государственных сайтов и банков придётся использовать другие ОС или запускать в виртуалке (man vmx) OpenBSD. На eeepc я этого не делал. Ну, конечно, можно ещё по vnc ходить куда-то...

Итак, браузеры которые я пробовал.

## abaco

Канонический plan9 браузер. Если честно, чисто эстетически, очень понравился! Но, увы, в 9front он падуч. И, кажется, не поддерживает png. Короче, не рекомендую.

## mothra

Сначала не понравился. Но потом, оказалось, что он удобен. И есть у него кое-какие биндинги на клавиши, что удобно. Например: a ввод - однооконный режим. m ввод - режим скачивания (режим mothra). Выглядел он страшненько в основном из-за русских символов. Но мы уже умеем патчить код:

cd /sys/src/cmd/mothra
acme rdhtml.c
# меняем шрифты, я рекомендую везде dejavusans(it,bd)/unicode.12 и .14
mk install

Мой вариант изменений лежит на https://github.com/gl00my/plan9hacks

Короче, можно пользоваться.

http://hugeping.tk/lib/uploads/opennet-mothra.png

## netsurf

Работает, только для показа картинок нужно раскомментировать jpeg/png библиотеки в mkfile/mkfile.native и добавить флаги -DWITH_PNG -DWITH_JPEG.

Рендерит странички неплохо, но нет многих удобных фич mothra. Подходит для просмотра сайтов, с которыми не справилась mothra.

# Plan 9: экстремальный KISS #1
std.hugeping
hugeping(ping,1) — All
2020-10-10 16:02:21


# Введение

Про операционную систему Plan 9 я слышал не раз. Но всё это время, мой интерес не переходил в активную фазу, ограничиваясь пассивным любопытством и чтением статей. Так продолжалось до настоящего момента, пока я всё-таки не попался в сети проекта http://9front.org

Я не буду здесь писать энциклопедическую информацию о Plan 9. Но если совсем кратко, то создатели Unix в лице Bell Labs (среди сотрудников которой числятся Кен Томпсон, Деннис Ритчи, Роб Пайк) однажды взяли и решили сделать _правильную_ ОС, без оглядки на проклятый Legacy Unix, в том числе и POSIX. Доведя идею "всё есть файл" до абсолюта и стерев грань между локальными и удалёнными файловыми системами. В качестве примера: tcp/ip это тоже файловая система. Поэтому, если мы подключим к себе удалённую ФС /net, получится что-то вроде NAT. Вот так просто и естественно. В общем, получилась бескомпромиссная, распределённая и при этом крайне простая и красивая ОС. Которая (с некоторыми оговорками) оказалась ненужной. Потому что существующие решения просто работают, и миру этого достаточно...

Но ребята из проекта http://9front.org форкнули Plan 9 и начали делать патчи, которые в том числе помогают Plan 9 работать на современном оборудовании. Итак, 9front можно сказать, это Plan 9, который лучше всего годится для того, чтобы поставить его на железо.

http://hugeping.tk/lib/uploads/mothra.png

На данный момент у меня есть работающий 9front на eeepc 1000px в котором можно даже что-то делать. До этого, я около полугода запускал 9front в qemu и читал различную информацию. И, честно говоря, мало что понимал. Я гробил файловые системы, не мог отредактировать файл и вообще... Не понимал ничего. В общем, я решил начать цикл статей о Plan 9, в которых я буду рассказывать о своём субъективном опыте. Конечно, я не знаток этой ОС, поэтому если кто-то может -- поправляйте меня в комментариях.

# Первые шаги

Итак, начнём.

Я начинал знакомство с ОС с чтения руководства dash с http://9front.org Руководство написано с юмором, с его помощью вы можете попробовать поставить 9front в qemu или на реальное железо (чего я бы пока не делал).

И вот, мы ставим ОС, отвечая на странные вопросы инсталлятора, стартуем... Иии... Что это?

Забудьте про всё, что вы знали. Здесь другой мир. Он прекрасен, но чтобы это понять, вам придётся пойти по пути аскетики и самоотречения. :) Шучу (почти). Для работы с Plan 9 нужна графика и мышь. Без этого -- просто никак. Это может быть ударом для вас. Поверьте, я сам пользуюсь emacs и помню кучу клавиатурных комбинаций. Здесь вам это не понадобится. Пройдёт немало времени, пока вы не привыкните к такому положению вещей и не начнёте получать от этого своеобразное удовольствие (ясность сознания). :)

На ноуте, в принципе, можно обойтись тачпадом. Короче, нужны три кнопки мыши. С случае тачпада это может быть тап 1, 2 или 3-мя пальцами. Или (в случае физических кнопок): 1я, 2я и 2я кнопка вместе с shift.

После загрузки вы увидите нечто, напоминающее терминал. Не спешите радоваться! Это не терминал, к которому вы привыкли. Ладно, наберите ls нажмите ввод. Ну, хоть что-то известное! Правда, вывод какой-то совсем уж аскетичный...

В общем, в этом окне (новые окна вы можете создавать нажав 2ю кнопку мыши и выбрав в меню New) вы можете что-то запускать. Если вы запускаете графическую программу, то её содержимое заменит собой содержимое окна. Это не то, к чему вы привыкли, но это удобно. Чем-то напоминает тайловые оконные менеджеры, когда вы заранее создаёте фреймы. Но пока просто наберите man rio и почитайте, как работать в этом странном "оконном менеджере".

Окно не скроллируется по умолчанию на новый вывод. Вы можете изменить это поведение нажав 3-ю кнопку мыши и выбрав scroll. То, что окно не скроллируется, минимизирует необходимось использования пейджера. Вы просто скроллите кнопками вверх/вниз. Хотя, пейджер всё-таки есть и называется 'p'.

Про историю команд -- забудьте. Клавиши вверх/вниз всегда скроллят окно. Перемещаться по тексту и по истории ими нельзя.

Текст в окне - это просто текст. Вы можете менять его, копировать и вставлять. Таким образом, можно воспринимать его как историю команд. Выбираете мышкой и делаете send. Команда выполнится.

Некоторые хоткеи всё-таки есть, и они -- на вес золота:

- C-a, C-e -- в начало и в конец строки;
- C-u -- стереть всё слева от курсора;
- C-f -- автодополнение путей в файловой системе (tab -- забудьте);
- C-b -- прыжок к приглашению;
- del - аналог C-c в Unix.

Ещё нюанс. Допустим, вы написали:

ls /usrr/glenda

Заметили, что опечатались. Вернулись курсором к r и стёрли его, нажали ввод.

Упс!

ls /usr
/glenda

При выполнении команд, курсор должен находиться в конце ввода! А так, выполнилась команда ls /usr. Используйте C-e.

К этому нужно привыкнуть и это непросто. Все рефлексы заточены на другое. В современных Linux командная строка обвешена дополнениями и клавиатурными сокращениями, но здесь всё не так. Что взамен? Простота! Нет никакого терминала, есть просто поток текста. И всё. Черные буквы на светлом фоне. Всё есть текст.

# Ещё несколько советов

- Используйте lc вместо ls. Вывод lc информативней. Например, после имён каталогов ставится /;

- Копирование в буфер обмена здесь называется snarf;

- Домашний каталог это $home или /usr/glenda в установке по умолчанию;

- Когда вы пишете что-то вроде grep, не надо заключать строки в "". Тогда в ввод эти кавычки и уйдут. Тут вам не bash, тут rc. У него совсем другие (более простые) правила эскейпинга. Можете использовать одинарные кавычки, если нужно. Например: g 'Kcaps' /sys/include/*. Да, g -- это рекурсивный grep;

- Некоторые утилиты расположены в подкаталогах. Например, ip/ping. Что это значит? Что выполняемый файл лежит в /bin/ip/ping;

- Посмотреть свой ip адрес: cat /net/ndb;

- Используйте walk | grep как аналог find;

- Скачать что-то (man hget);

- Смотреть pdf или картинки (man page);

- Браузеры: mothra, abaco (довольно падучий), можно собрать netsurf. Об этом будет другая статья;

- Для переключения раскладки можно запустить: kbmap /sys/lib/kbmap/us /sys/lib/kbmap/ru и переключать мышкой. Чтобы сделать переключение с клавиатуры, можно немного поменять rio, об этом -- в другой раз;

- Копировать каталоги здесь можно с помощью dircp, cp -R -- нет;

- fshalt -r -- перезагрузка;

- fshalt -- выключение;

- В домашнем каталоге есть bin/rc каталог. Здесь можете писать свои скрипты и они будут доступны для запуска. На самом деле, реализовано это за счёт bind. Сейчас поясню...

# Bind

В домашнем каталоге, lib/profile есть файл - который можно назвать аналогом .profile. Сделайте его cat и посмотрите. Видите?

bind -a $home/bin/rc /bin

bind позволяет делать объединение файловых систем. -a -- добавить файловую систему после. В данном случае, мы добавили bin/rc в пространство /bin. Короче, все наши скрипты из bin/rc видны в /bin. (man bind)

Следующая строка, заметьте, использует $cputype. Дело в том, что кросскомпиляция есть из коробки, и есть разные компиляторы (man 6c). И разные каталоги для бинарников для разных архитектур.

Интересно ещё вот что, если вы что-то забиндите в окне rio, а потом запустите другое окно -- не удивляйтесь, что там этого не будет. Пространство файловой системы наследуется процессами. Поэтому в новом окне будет пространство rio. То-есть, каждый процесс может настраивать свое файловое пространство как угодно.

Поэтому в profile стартует webfs (это реалиазция http протоколов в виде файловой системы -- ну потому что здесь _всё_ реализовано в виде файловой системы) -- тогда все процессы из rio (который тоже стартует из profile) смогут работать с вебом.

То, что пространство ФС персональное для каждого процесса имеет интересный практический плюс. Например, смонтировали вы флешку, чтобы отмонтировать её -- вам достаточно прибить окно. Ну или все окна, в которых вы её смонтировали. Хотя команда unmount тоже есть (обратите внимание, не umount, а unmount).

Из profile стартует графическая система rio с флагом -i riostart.

# riostart

Делаем cat /bin/riostart.

Это вот и есть стартовый скрипт rio. Можете кастомизировать под себя. Например, запустив kbmap с нужными параметрами (переключалка раскладки клавиатуры). Упс... Мы ещё не умеем редактировать файлы.

# Редактируем временную зону в acme

Давайте начнём учиться редактировать с того, что выставим нормальную временную зону. Дело в том, что в 9front нет Российских временных зон из коробки. Но это не беда. Ведь всё есть файл!

Пишем:

acme /adm/timezone/local

Открылся редактор acme. В нём -- ваша текущая временная зона. На самом деле acme это не только редактор, это среда. Что-то вроде emacs в Plan 9. Детище Роба Пайка, который, наверняка, писал golang именно в нём. Но только это KISS emacs. :) Я не способен сейчас научить вас работать в acme (тем более, что я сам только учусь), но кратко опишу его принципы.

В acme мы имеем что-то вроде тайлового оконного менеджера. Можем создавать столбцы (3-кнопка на Newcol) и делить их на части (3-кнопка на New).

В acme тоже "всё есть текст". Это значит, что вы можете редактировать зону меню так же, как и текст. Пока не делайте этого, просто не пугайтесь если вдруг сотрёте кнопку Newcol. Просто напишите её там, где вам удобно. :)

Например, добавьте в зоне меню команду win. Просто текст win. 3-кнопкой нажмите на win и запустите "терминальное" окно внутри acme. Другие полезные команды смотрите в man acme. Вы можете писать скрипты, которые будут командами. Скрипты могут выводить текст и потреблять текст из редакторы. Таким образом, можно сделать, например, команду indent параграфа. Кроме того, acme поддерживает файловую систему (да-да, как и всё тут!), с помощью которой можно управлять редактором. Так что в acme можно читать почту и делать что-то ещё, что вам понадобится, просто дописывая нужную вам функциональность.

Поиск делается дописыванием текста после меню | Look, выделением этого текста и 3-кнопка. Так же можно просто выделять текст и жать 2-кнопку.

Открыть файл по номеру строки: добавьте к имени файла в меню :число, выберете всё это и нажмите 2-кнопку.

Режим авто-отступа есть. Он включается Indent on (да, да - допишите это в меню и выполните).

Итак, у вас открыт редактор на файле local. Надо стереть содержимое файла. Стрелочки? СТРЕЛОЧКИ СКРОЛЛЯТ ТЕКСТ! shift-стрелочки? Нет! Выделяем текст мышкой и нажимаем backspace!

Да, настал момент суровой правды. Вы не можете перемещаться по строкам с помощью стрелок курсора даже в текстовом редакторе! Так что или бегите (пока можете), или -- продолжим.

На самом деле, это жутко раздражает по началу. Но потом, я стал замечать за собой некоторую дисциплину. Всё не так плохо, сознание разгружается. Просто редактируем текст по правилам этого мира. Сейчас, по прошествии времени, я даже нахожу в этом какое-то удовольствие и отдушину (после emacs).

Да! Подсветки синтаксиса нет. Робу не нравится смотреть на код, как на новогоднюю ёлку.

Итак, вернёмся к временной зоне. Для московского времени я оставил одну строку:

MSK 10800 MSK 10800

Это временная зона GMT+3 (в секундах). Зимнее и летнее время.

Сохраняем файл. Ах, да... 3-я кнопка мыши по Put. Если Put пропал - вы сохранили файл. Выйдете из редактора самостоятельно.

Но это ещё не всё! Если у вас в BIOS время настроено в UTC, то надо сделать следующее:

acme /rc/bin/termrc.local

Впишите строку:

TIMESYNCARGS=(-ra1000000)

И сохраните. Ну или вы могли бы убрать параметр L из TIMESYNCARGS в файле /bin/termrc в самом начале, но это хуже. /bin/termrc запускает termrc.local.

/bin/termrc - это скрипт, который стартует вашу терминальную станцию.

# Немного об архитектуре

То, что вы поставили себе в qemu (или на ноутбук?), в терминах Plan 9 называется терминальной станцией. Дело в том, что Plan 9 это сетевая система, где предусмотрены разные типы станций: терминал, файловый сервер, cpu-сервер итд. Границы между ними стёрты с помощью сетевой файловой системы 9p. Теорию почитайте тут: http://doc.cat-v.org/plan_9/4th_edition/papers/ А в 9front вы получаете как бы всё в одном: терминальная станция, файловый сервер и т.д. Но в теории, это всё можно настроить на отдельных машинах. И именно так Plan-9 использовалась в Bell-Labs.

# Файловая система

По умолчанию предлагается использовать CWFS.

"Файловая система" тут тоже реализована как служба-процесс. К которому можно подсоединиться и что-то сделать. Например, подключение к консоли:

con -C /srv/cwfs.ctl
help

Можете проверить fscache командой check.

CWFS это на самом деле интересная файловая система. Точнее -- файловый сервер. Он состоит как бы из двух областей. Есть fscache - в котором и идёт постоянная работа. И есть fsworm (Write Once Read Many) - это место куда архивируются данные и никогда не стираются. То-есть, когда-то ночью грязные блоки fscache сбрасываются в fsworm. Потом снова работаем с fscache. Сброс грязных блоков - это команда dump. Вы можете выполнять её руками через консоль: con -C /srv/cwfs.ctl, тем самым вы освобождаете место в кеше!

fsworm позволяет посмотреть любой слепок из тех, когда были сделаны dump. Смонтировать их можно так:

9fs dump

> Не выключайте питание во время дампа!

По началу я никак не мог понять, почему у меня кончается место на диске! Оказывается, забивался сравнительно небольшой fscache. Надо было бы сдампить его в fsworm. Конечно, cwfs на нетбуке это немного странно. :) Что я буду делать, когда забью fsworm? Вероятно, пересоздам его заново, скопировав последнее состояние в fscache?

# Редактирование plan9.ini

После первой установки, скорее всего вам понадобится поменять что-то в параметрах загрузчика. (man plan9.ini) Например, выставить более комфортное разрешение vesa. Включить acpi, поменять тип мыши и др.

Для этого надо подмонтировать специальный fat раздел:

9fs 9fat
acme /n/9fat/plan9.ini

Помните? Открывайте редактор из этого же окна. В другом окне файловая система не будет подмонтирована. По началу это сбивает с толку.

На этом же разделе, кстати, находится ядро. Но о компиляции ядра мы поговорим в другой раз.

# Доступ к файловой системе по сети из Linux

acme $home/bin/rc/export
Содержимое файла:
#!/bin/rc
aux/listen1 -t 'tcp!*!564' /bin/exportfs -r /

Запустите скрипт в окне и монтируйте с Linux:

9pfuse <адрес>:564 <точка монтирования>

Исходники системы находятся в /sys/src/ :)

# Заключение

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

Погружение в Plan 9 для меня было непростым процессом, и я сам ещё нахожусь в самом начале пути. Но в следующих статьях я попробую писать более конкретно, сосредоточившись на конкретных практических задачах.

Примерный план статей такой:

- Собираем netsurf и irc (git, hg, порты, golang);
- Изменяем исходные коды системы (смена раскладки клавиатуры);
- Музыка (и видео???);
- Мои патчи: ethernet alc, ethernet athn, acpi, vgadb;
- Сравнение исходного кода ядер: openbsd, Linux, plan9.

Если что, пишите свои предложения/вопросы.



P.S. Edited: 2020-10-11 10:28:47

# Синдром IT-вахтёрства
std.hugeping
hugeping(ping,1) — All
2020-10-06 09:53:41


Не смотря на то (а может быть, именно поэтому), что я занимаюсь IT, у меня давно сформировался подсознательный страх к IT-вахтёрству. Что я имею в виду? Поясню на примере из жизни.

При переходе в другую школу у моего сына пропал доступ к ЭЖД (электронный дневник школьника). Причём можно было зайти в ЭЖД от родителя и видеть оценки и ДЗ сына, но вот аккаунтом сына зайти не удавалось. При этом происходило странное - авторизация вроде бы проходила, но уже после входа система выбрасывала на главную страницу.

Я создал заявку на решение проблемы и стал ждать. Кстати, в школе, похоже, считали, что мы просто не умеем создать аккаунт школьника или ленивые. Время шло, а ситуация нагнеталась, так как сын не мог делать Д3. Тогда я вооружился отладчиком FF и начал изучать API ЭЖД...

За вечер удалось выяснить следующее:

- Авторизация по токену проходит;
- После авторизации сервер возвращает _список_ профилей. Профиль - это описание учебного заведения и другие атрибуты. При этом профили привязываются к одному пользователю (uid);
- Возвращается список из 2-х профилей: 1-й -- старая школа, 2-й -- новая.
- Клиент пытается зайти в 1-й профиль и получает "отбой" (профиль неактивный?) в виде ошибки, которая проявляется как перенаправление на главную страницу.

Почти сразу, как я это понял, удалось заменить в cookies идентификатор профиля и мы зашли в дневник! Но работало не всё: новая версия дневника показывала пустоту.

Я снова обратился в поддержку, описал ситуацию, продиктовал номера профилей. Со мной обещали связаться.

И тогда, на следующее утро наступил второй этап.

Я подумал, что если я смогу заменить ответ сервера на свой, исключив старый профиль, то добьюсь стабильной работы ЭЖД в любых режимах.

Самое сложное -- подменить ответ. Удивительно, но ни FF ни Chrome не предоставляют простых (или вообще никаких?) путей сделать такое. Поэтому воспользовался таким вот проектом: https://mitmproxy.org/

В нём есть режим, замена ответа с помощью регулярки. А дальше, дело техники. Положил в систему корневой сертификат, настроил в FF auto proxy (чтобы работал только на dnevnik.mos.ru) и... Работает как часы. ;)

Итак, мы пользовались дневником, а время всё шло. Меня беспокоил такой момент, что в случае обновления ПО дневника, всё придётся делать заново. Возможно, логику профиля перенесут в серверную часть и тогда...

И тут приходит ответ на заявку. Та-дааам!

> "Для восстановления доступа к дневнику нужно сменить пароль..." !!!!???

Конечно же, я пытался менять пароль. Но проблема не в этом! Я же описал, что именно происходит? Похоже, вахтёр, закрывший ошибку _даже не прочитал_ репорт!

Позвонил снова, в этот раз уже откровенно орал. Объяснил снова ещё раз, попросил переоткрыть и повысить приоритет задачи. Через 3 дня пришёл ответ, что всё -- исправили!

Действительно, в выдаче теперь приходит только один профиль - новый. Правильное ли это решение? Не уверен, потому что в системе явно предусмотрено сосуществование нескольких профилей. Похоже сделали то, что было проще и быстрее.

Так вот, в момент первой "отписки" я в полной мере почувствовал силу IT-вахтёрства.

Ты беспомощен перед системой. Всё, что ты можешь - писать запросы. И ждать, ждать, ждать... Надеясь на добрую волю обезличенного человека из тех-поддержки.

Что было бы, если на моём месте была бы мать-одиночка с гуманитарным образованием? А ведь наверняка моя ситуация не единственная. Всё больше услуг невозможно получить без IT. И это пугает! Пугает меня, IT-шника!

Я уже молчу про то, что самые важные ресурсы: сайты госуслуг и банки -- перегружены js так, что он уже просто вытекает из щелей разметки.

По моему твёрдому убеждению, все подобные ресурсы должны работать на простых "дубовых" технологиях. Но... Мы заслужили то, что заслужили. Красота бесценна. Но то, что невозможно продать -- этому миру не нужно.

# Ненастоящая победа open source
std.hugeping
hugeping(ping,1) — All
2020-09-16 19:25:59


Сегодня кажется, что open source победил окончательно и бесповоротно. Компании вкладываются в разработку ядра Linux, браузера chrome, компиляторов clang и многих других сложных проектов.

clang разрабатывается с целью замены gcc. chrome -- браузер, который постепенно вытесняет firefox. Docker, gitlab, VS Code -- можно долго перечислять успешные проекты, которые созданы коммерческими компаниями и развиваются как проекты с открытым исходным кодом.

Когда-то я тоже радовался chromium, clang и другим новым классным проектам. Я видел, что их качество действительно лучше, что старичок GNU всё возится с ворохом устаревших технологий, тщетно пытаясь догнать уходящий поезд прогресса. Да он же просто смешон!

Но потом я стал кое-что подозревать...

Да, есть целый пласт проектов, которые сложно создать в режиме "базара". Компьютерные игры, работа с графикой, CAD, офисные приложения... Как пример можно привести Photoshop и gimp. Или программы видеомонтажа. Чтобы удовлетворять стандартам рынка, такие программы сами должны создаваться участниками этого рынка. Но... Представьте себе, что все компании обанкротились. И что останется?

Что будет делать сообщество с многомиллионным кодом Chrome? Сможет ли оно его развивать? Сможет ли самоорганизоваться в сообщество, способное переварить этого монстра, который уже переплюнул по своей сложности ядро ОС? Сможет ли оно самостоятельно осознать и поддерживать такие проекты как: Clang, QT, VS Code?

Ок, VS Code кажется проектом попроще, не так ли? Но на чём написан VSCode? Сможет ли сообщество сохранить инфраструктуру, которая нужна для функцилнирования такого "простого" на вид VSCode?

Открытый исходный код сам по себе не означает, что вы им владеете. Если никто не понимает код, или мера сложности проекта такова, что для его поддержки и развития нужна жёстко организованная корпоративная вертикаль и деньги, вы не владеете проектом.

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

И здесь я снова смотрю на GNU, которая берёт на себя то, что может поднять. Да, gimp это не фотошоп. Но этот проект принадлежит нам! Да, clang, возможно современней GCC. Но GCC принадлежит нам!

Я пишу эти строки в браузере NetSurf и понимаю, что этот браузер свободен. Да, он не удовлетворяет коммерческим стандартам, но он достаточно прост, чтобы развиваться в режиме "свободного творчества".

Раньше, чтобы написать новую ОС, нужно было решить основную проблему -- поддержку оборудования. Сегодня такой краеугольной проблемой является... возможность работы современного браузера! Для проектов типа 9front http://9front.org -- это нереализуемо, если говорить о Firefox или Chrome. Но вот заставить работать NetSurf - вполне по силам одному программисту, работающему над проектом по вечерам.

И тут я задаю неудобный вопрос. А Linux-то, linux ещё наш? Или он уже стал товаром, которым торгуют корпорации?

# Как писать свободные игры и не сойти с ума
std.hugeping
hugeping(ping,1) — All
2020-09-12 10:35:15


// Опубликовано Aug 24, 2018

Писать код с художественной точки зрения очень интересно. На работе программисты обычно пишут код, который является эффективным для той задачи, которую он решает. На самом деле, это довольно скучно. Так как чем больше ты профессионал в своей области, тем более “шаблонно” решается задача. Ты просто делаешь так как нужно и всё. Это становится ремеслом. Профессиональный программист сегодня — это ремесленник.

Поэтому я очень хорошо понимаю программистов, которые пишут игровой код для “души”. Проект INSTEAD и возник как реализация такой вот отдушины. В первую очередь он ориентировался на программистов — лириков.

Мне нравится писать сюжетные игры. Рассказывать истории, которые меня самого захватили. Но когда ты пишешь некоммерческие игры, ты неизбежно сталкиваешься с проблемой распространения.

Вот, ты написал историю, которая тебе самому кажется классной. Что дальше? Современная жизнь инди-разработчика подчиняется довольно прагматичным правилам. Продвижение своей игры “по взрослому” требует денежных вливаний, времени и запасов валерьянки. Это всё означает, что проще и правильнее играть по правилам до конца — становиться частью рынка и продавать свои игры, чтобы пытаться окупить свои затраты.

Однако, такой подход приемлем не для всех. Полностью свободное творчество — это другая философия, которую разделяют немногие. Откровенно говоря, я так и не нашёл массовых мест обитания (заповедников!) людей, которые бы разделяли похожие взгляды.

К сожалению, “сарафанное радио” в наши дни практически не работает, поэтому “свободному” разработчику очень сложно выйти на свою аудиторию.

Свои последние игры Другой Марс http://instead-games.ru/game.php?ID=298 и Вахта http://instead-games.ru/game.php?ID=292 я пытался “продвигать” доступными мне способами, оставаясь в рамках свободного движения. Что именно я делал?

- Я попытался оживить нашу группу vk, https://vk.com/instead.club создавая на стене новости и отчёты о проделанной работе. Также включил кросспостинг в фейсбук.
- Я публиковал новость о “Вахте” в одной из крупных групп vk (название сейчас не вспомню).
- Наш старый jabber чат был интегрирован с чатом в Telegram, https://t.me/insteadtalk что в теории сделало наш чат доступней для потенциальных энтузиастов.
- В канал Telegram https://t.me/insteadclub (не путать с чатом) я также регулярно постил новости. Не говоря уже о своём twitter. https://twitter.com/peter_ru
- Я опубликовал игры на gamin.me. Здесь https://gamin.me/posts/19471 и здесь. https://gamin.me/posts/19616
- Я создал страничку на itch.io со своими играми. https://instead.itch.io/
- Я опубликовал новости на linux.org.ru. Одна из новостей — прошла. https://www.linux.org.ru/news/games/14202683 Вторую https://www.linux.org.ru/forum/games/14385869 не пропустили из за деятельности троллей, превративших тему обсуждения в религиозный спор. Подробности. ii://mwVQifrW5SHpOBeJ9niI И пояснения. ii://lYZ4akEqAiKPfIZKs1gX Забавно, но похоже “чёрный” пиар дал лучший эффект. Это и грустно и смешно.
- Я опубликовал новость на opennet. https://www.opennet.ru/opennews/art.shtml?num=49078
- Я писал о некоторых своих играх на reddit (лень искать ссылки).
- Я опубликовал две статьи на dtf.ru. https://dtf.ru/indie/24627-moy-indi-proekt-dlinoy-v-10-let https://dtf.ru/indie/24598-parsernaya-igra-drugoy-mars
- Я присутствовал в mastodon https://mastodon.social/@hugeping , idec и zeronet (как примеры “альтернативных” сетей).

Какие выводы я могу сделать?

С одной стороны, результат есть. Я узнал, что у моих игр существует целевая аудитория. И это сильно вдохновило.

С другой стороны, количество поигравших в мои игры, по меркам индустрии, очень мало. Я оцениваю это число в районе 2000 скачек (учитывая тот факт, что статистика web запусков не ведётся). Хотя, откровенно говоря, мне не очень интересна именно статистика. :)

Выкладывание игр на itch — практически ничего не даёт само по себе. Причина понятна. Для продвижения нужны рекламные показы. Площадки не создаются просто так, площадки зарабатывают. Когда на ресурсе представлены тысячи (или уже десятки тысяч?) игр, заметить конкретную игру практически невозможно.

Публикации в своем твиттере и ресурсах в соц-сетях ничего не дают. Это тоже понятно, нет подписчиков — нет хайпа. Я пытался подсунуть твит мэтрам западной интерактивной литературы. Это частично получилось, но ретвит сам по себе тоже дал очень мало. Кое что даёт публикация ссылок на reddit.

Хороший отклик я получил после размещения публикаций на dtf.ru. Наверное, это самый положительный опыт из всех попыток.

Интересно, но адресный выход на аудиторию “альтернативных” сообществ тоже работает. Последнее наблюдение наводит на интересные размышления.

Когда ты пишешь нишевую с точки зрения “мейнстрима” вещь, выход на нишевые же сообщества, похоже, неплохой вариант! Например, INSTEAD изначально работал только на Linux системах. Какой процент пользователей Linux? 3%? 4%?. Но в абсолютных цифрах это довольно много людей. И, проект, работающий на Linux может рассчитывать быть замеченным этой аудиторией! Какой процент пользователей FreeBSD? 1%? Однако, когда INSTEAD находится в портах этой системы, можно рассчитывать на то, что игры на нём будут замечены! Всё это даёт во много раз больше, чем простая публикация игры на тематическом форуме.

Ещё один пример. Размещение статей в ZeroNet с мизерной аудиторией. Однако, размещение этих же статей в блоге на medium.com осталось абсолютно незамеченным.

Камерный театр в спальном районе Москвы может рассчитывать на маленькую, но свою аудиторию! Школьная рок-группа тоже может на неё рассчитывать. :) Остальные примеры вы можете придумать сами. Думаю, что продвижение свободной игры, это все-таки в первую очередь ориентация на “свои” сообщества. А игра по правилам индустрии — это совсем другая история. Но только проблема в том, что “альтернативные” сообщества практически вымыты из современного коммерческого интернета…

Что касается меня, то я абсолютно измотан социальным взаимодействием и негативным (редким, но токсичным!) фидбеком. В очередной раз я понимаю: программировать и сочинять истории очень захватывающая вещь, но социальное взаимодействие — изматывает и подрезает крылья.

Что дальше? Не знаю. Но запасы валерьянки подходят к концу. :)

# Возвращение квантового кота: о чём игра?
std.hugeping
hugeping(ping,1) — All
2020-09-12 10:27:52


// Опубликовано Aug 23, 2018

Моя первая игра называется “Возвращение квантового кота”. Написана она была в 2009 году. Собственно говоря, с неё всё и завертелось.

По современным меркам игра очень простенькая, но если вы в неё не играли — попробуйте. http://instead-games.ru/game.php?ID=107

Об этой игре написано достаточно, поэтому я здесь не буду копи-пастить существующие статьи. Я же обещал оригинальный контент. :) Так вот, расскажу о том, какой смысл я сам вкладывал в эту игру.

Ниже будут спойлеры. Поэтому рекомендую читать этот текст после прохождения игры.

Вообще, это неправильный метод — рассказывать о своём творчестве в плане замысла. Часто бывает, что смыслы очень сильно зависят от восприятия конкретного человека. То-есть, это всегда диалог. И тем не менее…

Главный герой — бывший хакер, ныне дауншифтер, живущий вдали от цивилизации. После визита в магазин, у него похищают его единственного друга — кота Барсика. Фраза: “Я просто пришёл забрать своего кота” — становится девизом игры. Быстро выясняется, что похититель кота связан со зловещим институтом, который расположен недалеко от места событий.

По сюжету выясняется, что в институте действует секта, лидер которой (тот самый злодей, выкравший кота) обыграл парадокс квантового бессмертия таким образом, чтобы создать группу фанатиков готовых на всё.

В игре можно почитать рассуждения о квантовых парадоксах. В частности, о гипотетическом эксперименте Шрёдингера.

Скажу сразу, что на эту игру повлияло произведение С.Льюиса “Мерзейшая мощь”. Если вы не читали её, я рекомендую эту книгу к прочтению. Образ “зловещего института” взят оттуда.

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

Главный герой просто “знает” и просто “чувствует” сердцем, что эта истина является ложью. Он делает то, что должен — спасает кота (и мир за одно) не идя ни на какие компромиссы. Правда и любовь не нуждается в рационализации.

В качестве интересных деталей, могу привести использование сторон света. Зло — ассоциируется с западными направлениями. Добро — с восточными. Восход, закат. День и ночь.

Кстати, главный злодей в игре имеет своего прототипа из реального мира (конечно, персонаж игры определённым образом мифологизирован). Этот прототип на момент создания игры работал топ-менеджером и его характер представлял из себя яркую иллюстрацию человека, в котором рациональное подмяло под себя всё остальное.

Игра была встречена очень хорошо, не смотря на явные огрехи и ляпы в тексте, которые так и не были исправлены за эти 9 лет…

На этом пока всё. :) Stay tuned.

# Нелинейность в сюжетных играх
std.hugeping
hugeping(ping,1) — All
2020-09-12 10:23:11


// Опубликовано Aug 23, 2018

Недавно посмотрел ролик на YouTube про игру No Man’s Sky. Красивая игра. Одной из особенностей игры является то, что в ней широко применяется процедурная генерация. Примерно, как это было сделано в Elite, в которой генерировались звёздные карты, названия систем и экономика. Только в NMS этот приём выведен на новый технологический уровень. Генерируются формы жизни, поверхности планет и прочее и прочее.

В Elite игрок был свободен в выборе того, что он делает в мире игры. В NMS мы видим подобное. Искусственный мир без явного задания ограничений действий. Песочница. Успех Minecraft говорит нам, что такого рода игры могут быть популярными. Ещё один пример: Dwarf Fortress. Если честно, ни в одну из упомянутых игр я не играл. Во-первых, я вообще мало играю в современные игры. Во-вторых, я не большой любитель историй, рассказанных компьютером.

Когда речь заходит о сюжетных играх, очень многие высказывают мнение, что нелинейность сюжета — несомненное достоинство такого рода игр. Для меня это выглядит так, что для этих людей основной ценностью сюжетной игры является вариативность.

Вариативность может быть достигнута разными путями. Во-первых, мы просто можем заложить в игру различные ветви сюжета. Ввести различные концовки. Этот приём очень распространён в CYOA играх.

Во-вторых, саму игру мы можем выполнить в виде модели, которая пытается моделировать поведение героев, мотивы, эмоции…

Наверное, вы сейчас решили что это отличная идея, а я веду к тому, что симуляция в сюжетных играх — это прекрасно! Должен сознаться, лично я не вижу в этом подходе никакой творческой ценности.

Дело в том, что для меня, в сюжетных играх (как и в литературе, кино, театре) самым важным является не вариативность, а … сюжет! А сюжет — это раскрытие смысла! Как время в нашем мире это актуализация нашей свободы воли, так и сюжет игры служит цели раскрытия смысла!

Конечно, если мы играем в гоночную игру, мы вряд ли ожидаем от игры чего-то большего, чем сама гонка. Или, играя в рогалик, мы не ждём от такой игры какого-то осмысленного сюжета. Всё это понятно. Но мы говорим о сюжетных играх!

Я написал только одну нелинейную игру, это “Карантин”. http://instead-games.ru/game.php?ID=124 В игре мы встречаемся с врагом, которого не знаем заранее. Фактически, это детективная история завёрнутая в стилистику рассказа Джона В. Кэмпбелла «Кто идёт?». Игра внутри себя представляет симулятор. Или, скорее, стратегию. Игра получилась очень сложной и… скучной. Да, есть люди, которым игра очень понравилась. Но для большинства игроков, она становится неинтересной после нескольких “прогонов”. Почему? Потому, что сюжет раскрывается после пары прохождений. А потом остаётся только вариативность, стратегия, интеллект… Но никакой художественной ценности…

Правда, в моей игре “Проводник” http://instead-games.ru/game.php?ID=247 две концовки. Но это тот случай, когда обе концовки просто усиливают друг друга.

Приведу другой пример. Существует такой жанр, как книги-игры. Вариативность в книгах-играх осуществляется просто за счёт того, что вся книга это сборник параграфов между которыми читатель перемещается в зависимости от своего выбора и сложившейся ситуации.

Так книга или игра? Попробуйте написать сюжет, смысл которого был бы не в вариативности самой по себе, а в передаче некоторого замысла автора. А теперь, оформите сюжет в виде сотни параграфов с запутанными связями. Это не так то просто! В большинстве случаев, такая разбивка будет служить целям вариативности, но не передачи смысла сюжета. Вариативность, ради неё самой. Итак, жанр книги-игры хорош для развлекательной литературы, но драматическое произведение втиснуть в рамки вариативности — очень непросто.

Подводя итог. Я считаю, что ценность сюжетной игры именно в смысле, который передаётся через сюжет. В таком случае, излишняя вариативность не помогает, а напротив, мешает. На мой взгляд, сюжетная игра раскрывается именно в своей линейности. А некоторая степень свободы и интерактивности служит другой цели — погружению в атмосферу игры.

Итак, чтение книг — это диалог с автором книги. И хорошо, когда автору есть что сказать. Но ведь в песочнице ребёнок играет, как будто, сам с собой? И это — тоже способ познания, в том числе — самопознания?

Да, попытка написать игру, в которой сюжет генерировался бы “случайно” и был бы интересен — сродни написанию симулятора мира, в котором мы живём.

И это всё хорошо работает лишь до тех пор, пока мы не пытаемся симулировать внутренний мир людей. Средуцированный до детерминированного алгоритма герой, не способен сказать нам что-то новое. Сознание — не алгоритм. (В качестве рекомендации к прочтению: “Новый ум короля” Р. Пенроуза).

Также, есть мнение, что смысл чего-либо рождается субъективно в читателе, а на авторе остаётся только нарратив. Без интерпретации. В таком случае, играя в песочнице, мы наблюдаем создание различных смыслов о которых мы как автор — не беспокоимся. Читатель (игрок) развлекает себя сам.

Не знаю как вам, а мне не интересно играть с собственными отражениями. Лучше я почитаю хорошую неинтерактивную книгу, которая оставит после себя тепло общения внутренних миров двух людей, которые никогда не встречались…

# Короткие заметки
std.hugeping
hugeping(ping,1) — All
2020-09-09 19:01:21


В этот топик буду писать короткие мысли и прочий флуд.
P.S. Edited: 2020-12-03 13:35:55

# Язык и сознание
std.hugeping
hugeping(ping,1) — All
2020-09-09 06:10:50


Пока Haiku захавала мой мозг (разбираюсь в потрохах системы, сделал пару коммитов в ядро), писать что-то осмысленное в блог некогда. :) Поэтому сегодня поделюсь отвлечёнными мыслями насчет взаимного влияния языка и мышления.

Не так давно я выпустил модуль INSTEAD для написания игр с текстовым вводом. Модуль я писал с расчётом на русскоязычную аудиторию и авторов. Но хотелось, конечно, чтобы при желании можно было написать и англоязычную игру. Поэтому я добавил в модуль и английский вариант библиотеки.

ii://yEBVIVlseU2SZu5WbOVC

Так вот. Я, конечно, понимал, что английский вариант будет проще, но не ожидал, что настолько проще!

Теперь для меня очевидно, что слабое распространение (и развитие) игр с текстовым вводом у нас в первую очередь связано с отличиями языков, а уже потом — со всем остальным.

Раньше я считал, что сознание не сильно завязано на язык. Думал я это на основании собственного опыта интуитивного мышления, когда замечал, что мысли часто не облекаются в слова. То-есть, человеческая архитектура, на фундаментальном уровне, не зависит от “прошивки”. Но теперь мне кажется, что язык определённо влияет на сознание и это влияние существенно.

Один простой пример. В русском языке у нас большинство неодушевлённых предметов имеет род. В английском не так. Конечно, там тоже есть “ship” как “she” и так далее, но это все-таки скорее исключение. То-есть, говоря “ложка” или “нож” — я ловлю себя на мысли, что моё отношение к этим предметам окрашивается в разные оттенки в зависимости от рода! В английском это “it” — и всё тут. С точки зрения разума — всё верно. Это предмет, какой тут может быть род?

Но в русском, я действительно чувствую, что подушка — это “она”. Что топор — это “он”. Если вы со мной не согласны, проведите мысленный эксперимент. Представьте, что “облако” получило мужской род (“облак летит по небу”). Или “топор” стал женского рода (“Топр была острой”). Уверен, разницу вы почувствуете.

Винтовка и карабин. Согласитесь, оба слова, означая похожие вещи, осознаются по-разному! А ещё мне кажется, что это осознание будет разным у мужчин и женщин. Удивительно! Таких примеров можно привести массу, и это даже забавно — обнаруживать в себе эмоциональное отношение к неодушевлённым вещам.

При работе над английской библиотекой метапарсера, очень наглядным стало ещё одно отличие. Обилие глаголов с похожим смыслом (но разными оттенками) в русском. В английском языке было интересно обнаружить множество вариантов “взять”, “атаковать” и “изучить”. Но для большинства других глаголов, вариантов очень мало.

ii://iIKozvIkN197sjQFx2Hh

Так что русский язык очень эмоционален и выразителен. И мне лично это нравится. Почему? Не потому ли, что я уже изменён языком (прошивкой)? Или, все-таки, потому, что мой язык мне соответствует?

В общем, философия языка, должно быть, очень глубокая и интересная тема…


P.S. Edited: 2020-09-09 06:10:02

# Произведение и время
std.hugeping
hugeping(ping,1) — All
2020-09-08 19:21:01


Все слышали истории о том, как при жизни композитора, писателя, художника, его работы не получали признания. Но потом, спустя годы или даже века, происходит переоткрытие творчества и автор становится частью культурного наследия уже как классик.

Меня всегда интересовал механизм этого узнавания. Каким образом произведение вдруг становится признанным? Что или кто является критерием?



Вот и “Моби Дик” Германа Мелвилла не был принят современниками. Приведу несколько цитат:

> «Моби Дик» не был принят литературной критикой и не получил успеха у читателей. От Мелвилла отвернулись. Мелвилл жил в Питтсфильде до 1863 года, продолжая писать и борясь с нуждой. Несколько книг, выпущенных им за эти годы, не восстановили его литературной репутации.

> После разгромной критики вышедшего спустя год готического романа «Пьер, или Двусмысленности» (Pierre, or The Ambiguities, 1852), — где изображён писатель, который среди шумной толпы чувствует себя таким же одиноким, как на полюсе, — Мелвилл стал публиковаться анонимно, печатая рассказы в журналах.

> Когда Мелвилл умер в 1891 году, то был уже настолько забыт, что автор короткого некролога в «Нью-Йорк таймс» не сумел правильно написать его имя.

> С 1920-х началось переосмысление Мелвилла, и его признали классиком мировой литературы.

Началось переосмысление. Выглядит загадочно, правда? В английской статье на Wikipedia этот момент описан подробнее (спасибо @techniX).

> The “Melville Revival” of the late 1910s and 1920s brought about a reassessment of his work. The centennial of his birth was in 1919. Carl Van Doren’s 1917 article on Melville in a standard history of American literature was the start of renewed appreciation. Van Doren also encouraged Raymond Weaver, who wrote the author’s first full-length biography, Herman Melville: Mariner and Mystic (1921).

По русски об этом можно прочитать в этой статье. https://daily.afisha.ru/brain/1028-mobi-dik-germana-melvilla-nesvoevremennyj-shedevr/ Итак, американский критик и биограф Карл Ван Дорен https://en.wikipedia.org/wiki/Carl_Van_Doren написал статью, потом (на 100-летие автора), посвятил целый раздел в своей книге. Способствовал созданию биографии… И вот, закрутилось!

Так что, после 70 лет люди, наконец, доросли до понимания творчества Мелвилла? Или, может быть, вернулась мода на романтизм? Или в 1851 году критики “перекрыли кислород”, а через 70 лет нашёлся другой критик? Не знаю, я не искусствовед и я могу только удивляться.

Эта история интересна тем, что показывает нам удивительный и простой факт — произведение существует вне времени! Или даже “сквозь” время. Автора давно нет с нами, но в умах, сердцах людей снова создаются образы, которые чувствовал и создавал писатель. А бумага, оказывается, это довольно надёжный носитель информации!

Мы живём в цифровую эпоху. Что будет с десятками тысяч игр, художественных и музыкальных произведений через 50, 70, 100 лет? Станет ли что-нибудь из этого наследием культуры, или все сгинет в забытье и устаревших технологиях? Очевидно, сейчас мы наблюдаем “перенасыщение”, но кто в наши дни возьмёт на себя роль “критерия”? Или всё, что нам остаётся — хранить традицию? Узнал бы цифровой мир нового Достоевского, или талантливый автор был бы задушен монетизацией, мотивацией, изучением ЦА и другими особенностями современного “культурного рынка”?

Интересные вопросы, на которые лично у меня нет ответов.

# Эффективность против простоты
std.hugeping
hugeping(ping,1) — All
2020-09-08 18:53:37


Простой код — изящный и понятный код. Он работает предсказуемым образом, в нём легко выявить ошибки ещё на стадии написания. Наконец, он просто красив! Какой программист не стремится к простому коду? Когда мы представляем себе идеальный код — мы обычно имеем в виду именно простой, красивый исходный код! Но почему мы пишем нечто совсем другое?

Уравнение прямой — что может быть проще?

Ах + Ву + С = 0

Формула существует в мире идеальном. Но попробуем нарисовать отрезок прямой в грубой действительности — на растровом мониторе. Мы можем, конечно, выразить y через x и, увеличивая на 1 x, рассчитывать y. (Или x от y, для вертикальных отрезков). Потом ставить пиксель в координаты (x, y). Простой алгоритм. Только, никто так не делает. Медленно, неэффективно. Вы наверняка слышали об алгоритме Брезенхэма, который используется в таких случаях. К примеру, реализация рисования отрезка в INSTEAD (на C), выглядит так:

static __inline void line0(struct lua_pixels *hdr, int x1, int y1, int dx, int dy, int xd, unsigned char *col)
{
    int dy2 = dy * 2;
    int dyx2 = dy2 - dx * 2;
    int err = dy2 - dx;
    unsigned char *ptr = NULL;
    int w = hdr->w; int h = hdr->h;    int ly = w * 4;
    int lx = xd * 4;    while ((x1 < 0 || y1 < 0 || x1 >= w) && dx --) {
        if (err >= 0) {
            y1 ++;
            err += dyx2;
        } else {
            err += dy2;
        }
        x1 += xd;
    }
    if (dx < 0)
        return;
    ptr = (unsigned char*)(hdr + 1);
    ptr += (y1 * w + x1) << 2;    pixel(col, ptr);
    while (dx --) {
        if (err >= 0) {
            y1 ++;
            if (y1 >= h)
                break;
            ptr += ly;
            err += dyx2;
        } else {
            err += dy2;
        }
        x1 += xd;
        if (x1 >= w || x1 < 0)
            break;
        ptr += lx;
        pixel(col, ptr);
    }
    return;
}

static __inline void line1(struct lua_pixels *hdr, int x1, int y1, int dx, int dy, int xd, unsigned char *col)
{
    int dx2 = dx * 2;
    int dxy2 = dx2 - dy * 2;
    int err = dx2 - dy;
    int w = hdr->w; int h = hdr->h;
    unsigned char *ptr = NULL;
    int ly = w * 4;
    int lx = xd * 4;    while ((x1 < 0 || y1 < 0 || x1 >= w) && dy --) {
        if (err >= 0) {
                x1 += xd;
            err += dxy2;
        } else {
            err += dx2;
        }
        y1 ++;
    }
    if (dy < 0)
        return;    ptr = (unsigned char*)(hdr + 1);
    ptr += (y1 * w + x1) << 2;    pixel(col, ptr);    while (dy --) {
        if (err >= 0) {
            x1 += xd;
            if (x1 < 0 || x1 >= w)
                break;
            ptr += lx;
            err += dxy2;
        } else {
            err += dx2;
        }
        y1 ++;
        if (y1 >= h)
            break;
        ptr += ly;
        pixel(col, ptr);
    }
    return;
}

static void line(struct lua_pixels *src, 
int x1, int y1, int x2, int y2, 
int r, int g, int b, int a)
{
    int dx, dy, tmp;
    unsigned char col[4];
    if (y1 > y2) {
        tmp = y1; y1 = y2; y2 = tmp;
        tmp = x1; x1 = x2; x2 = tmp;
    }
    col[0] = r; col[1] = g; col[2] = b; col[3] = a;
    if (y1 >= src->h)
        return;
    if (y2 < 0)
        return;
    if (x1 < x2) {
        if (x2 < 0)
            return;
        if (x1 >= src->w)
            return;
    } else {
        if (x1 < 0)
            return;
        if (x2 >= src->w)
            return;
    }
    dx = x2 - x1;
    dy = y2 - y1;
    if (dx > 0) {
        if (dx > dy) {
            line0(src, x1, y1, dx, dy, 1, col);
        } else {
            line1(src, x1, y1, dx, dy, 1, col);
        }
    } else {
        dx = -dx;
        if (dx > dy) {
            line0(src, x1, y1, dx, dy, -1, col);
        } else {
            line1(src, x1, y1, dx, dy, -1, col);
        }
    }
    src->dirty = 1;
}

И это — весрия без анти-альясинга… Согласитесь, понять из алгоритма, что именно он делает, не так-то просто…

С одной стороны — простое уравнение. С другой — десятки строчек низкоуровнего кода, в которых отражена дискретная действительность наших компьютеров.

Я очень люблю OpenBSD за её простоту. Если сравнивать с современным Linux — это небо и земля! Но я понимаю, что за простоту пришлось заплатить… эффективностью. Ядро Linux очень сложное! Очень хитрые способы синхронизации (взять хотя бы rcu) разросшийся код системных вызовов… Даже если сравнивать один и тот же код разных версий — разница будет видна невооружённым глазом. Например, код из версии ядра 3.16:

void __napi_complete(struct napi_struct *n)
{
    BUG_ON(!test_bit(NAPI_STATE_SCHED, &n->state));
    BUG_ON(n->gro_list);
    list_del(&n->poll_list);
    smp_mb__before_atomic();
    clear_bit(NAPI_STATE_SCHED, &n->state);
}
void napi_complete(struct napi_struct *n)
{
    unsigned long flags;`    /*
     * don't let napi dequeue from the cpu poll list
     * just in case its running on a different cpu
     */
    if (unlikely(test_bit(NAPI_STATE_NPSVC, &n->state)))
        return;`    napi_gro_flush(n, false);
    local_irq_save(flags);
    __napi_complete(n);
    local_irq_restore(flags);
}

А вот аналогичный код, но уже из 4.18

bool napi_complete_done(struct napi_struct *n, int work_done)
{
    unsigned long flags, val, new;    /*
     * 1) Don't let napi dequeue from the cpu poll list
     *    just in case its running on a different cpu.
     * 2) If we are busy polling, do nothing here, we have
     *    the guarantee we will be called later.
     */
    if (unlikely(n->state & (NAPIF_STATE_NPSVC |
                 NAPIF_STATE_IN_BUSY_POLL)))
        return false;    if (n->gro_list) {
        unsigned long timeout = 0;        if (work_done)
            timeout = n->dev->gro_flush_timeout;        if (timeout)
            hrtimer_start(&n->timer, ns_to_ktime(timeout),
                      HRTIMER_MODE_REL_PINNED);
        else
            napi_gro_flush(n, false);
    }
    if (unlikely(!list_empty(&n->poll_list))) {
        /* If n->poll_list is not empty, we need to mask irqs */
        local_irq_save(flags);
        list_del_init(&n->poll_list);
        local_irq_restore(flags);
    }    do {
        val = READ_ONCE(n->state);        WARN_ON_ONCE(!(val & NAPIF_STATE_SCHED));        new = val & ~(NAPIF_STATE_MISSED | NAPIF_STATE_SCHED);        /* If STATE_MISSED was set, leave STATE_SCHED set,
         * because we will call napi->poll() one more time.
         * This C code was suggested by Alexander Duyck to help gcc.
         */
        new |= (val & NAPIF_STATE_MISSED) / NAPIF_STATE_MISSED *
                            NAPIF_STATE_SCHED;
    } while (cmpxchg(&n->state, val, new) != val);    if (unlikely(val & NAPIF_STATE_MISSED)) {
        __napi_schedule(n);
        return false;
    }    return true;
}
EXPORT_SYMBOL(napi_complete_done);

Кроме очевидного увеличения объёма кода тут присутствует любопытный фрагмент. Обратите внимание на конструкцию:

new |= (val & NAPIF_STATE_MISSED) / NAPIF_STATE_MISSED * NAPIF_STATE_SCHED;

Попробуйте самостоятельно понять, что она значит. Это яркий пример встречи мира идеального и мира материального. К счастью, над этой строчкой присутствует комментарий, который описывает назначение кода.

Сложность кода растёт, простота теряется… Нельзя назвать ядро Linux примером плохого кода, но и красивым этот код можно назвать лишь с натяжкой.

К сожалению, мир в котором мы живём — это мир компромиссов.

Мы можем следовать одному из принципов:

- Linux — стихийная хакерская разработка;
- OpenBSD — принцип простоты в абсолюте;
- Проект https://suckless.org/ — принцип простоты до абсурда.

А можем пытаться выбрать что-то среднее. Но только ведь мы мечтаем об идеальном коде! А идеалы не терпят компромиссов. Так что в качестве отдушины, я пользуюсь на ноутбуке OpenBSD. А в INSTEAD я стараюсь придерживаться серединного пути. Но все-таки, все-таки все идеи приходят из мира идеального. Так что, даже в ядре Linux мы можем увидеть отголоски кода нашей мечты. :)

# Bolder Dash с БК0010–01
std.hugeping
hugeping(ping,1) — All
2020-09-08 18:49:46


Мне повезло, программировать я начал в лет 13, когда у нас в стране появились доступные компьютеры. Я был счастливым обладателем машины под названием БК0010–01. Конечно, сейчас даже стыдно озвучивать её характеристики. Но главное — на этом можно было программировать! Вообще, в каком то смысле было проще. В то время всё было просто. Железо — простое. Программы — простые. Сегодня, между человеком и машиной столько слоёв абстракции, что пробиться сквозь них очень тяжело. А в то время, ты мог программировать прямо в машинных кодах. Или вообще, на листке бумаги… Аналоговый мир впервые встретился с цифровым. (Кстати, успех таких проектов как PICO-8 или TIC-80 объясняется, как мне кажется, попыткой снова придать программированию простоту и радость творчества, которую у нас забрали.)

Так вот, я из тех людей, которые научились программировать благодаря играм. Я играл в игры и хотел делать такие же. Это и было основным стимулом для изучения возможностей БК. Одной из первых игр, в которые я играл была игра Bolder Dash.



Конечно, я тогда не мог знать, что Bolder Dash не самобытная игра на БК. Игра поразила меня своей сложностью. В то время я едва смог пройти несколько уровней, но не оставлял попыток пройти игру дальше.

Интересно, что потом, когда у меня появился уже x86 компьютер и я познакомился с разными вариантами Bolder Dash, я каждый раз был разочарован. Да, в этих играх человечек тоже толкал камни в разные стороны, но… Игра была абсолютно иной! В ней не было интеллектуальности! Скорее, рутинные уровни. Тяжёлое впечатление, словно ты играешь в sudoku или разгадываешь кроссворд. Каждый раз я с теплом вспоминал болдера с “бэкашки”…

В одной из версий INSTEAD, я добавил возможность создавать простые 2-D игры. Вот тогда (или чуть позже) я и вспомнил про Bolder Dash.

Мне хотелось сделать не просто клон, а точную копию игры. Поэтому, я вооружился дизассемблером PDP-11 и… Начал реверсить код.

Кстати, в то время я уже знал, что автор игры на БК (Мелентьев А.В.) был вдохновлён игрой Bolder Dash на Atari. Но он не играл в неё, а просто видел. После этого, он по памяти написал свою реализацию. Как здорово, что он не скопировал оригинал, и получилась совершенно новая игра!

Реверс кода PDP-11 оказался приятной и несложной задачей, буквально за несколько дней я воссоздал оригинальный алгоритм на Lua. С некоторыми улучшениями. :) Интересно, но я обратил внимание на тот факт, что функции часто начинались с “красивых” адресов, а между блоками кода часто были пропуски. Тогда я не мог этого понять, но ответ оказался простым! Игра писалась непосредственно в машинных кодах! Без использования ассемблера!

Кстати, вот так выглядит первый уровень игры в Lua реализации.

--$Name:STANDARD
--$Name(ru):СТАНДАРТ
maps = {
-- 0
"################",
"#+@@@@@@@@@@@@@#",
"#::::::@@::::::#",
"#::::::@@::::::#",
"#::::::@@::::::#",
"#:::@@@@@@@@:::#",
"#:::@::::::@:::#",
"#:::@: $$ :@:::#",
"#:::@: $$ :@:::#",
"#:::@: $$ :@:::#",
"#::##########::#",
"#::    %     ::#",
"#::          ::#",
"#::@@@@$$@@@@::#",
"#::::::::::::::#",
"################",

Ещё несколько дней, и болдер даш заработал на INSTEAD!

Когда я рассказывал об игре знакомым и говорил, что это “Болдер Даш”, всегда происходил эффект ложного узнавания. Люди думали, что понимают о чём идёт речь, и это мешало. Так как этот “Болдер” совершенно самобытная игра. Поэтому, я назвал игру “Miner Bold”.

Прямо сейчас, вы можете поиграть в Miner Bold. А я пока продолжу.

Так в чём же уникальность гнёмплея этой игры, по сравнению с оригинальным Bolder Dash, которого мы все знаем?

Фактически, это аркадная головоломка. Игра — набор простых с виду уровней, каждый из которых имеет индивидуальные особенности. Каждый из которых проходится за пару минут (если знать — как). Но если не проявить смекалку, каждый уровень может стать блокадой.

В физике тоже есть нюансы. Например, вы можете толкать камни вверх. А также, делать это на лету… В некоторых ситуациях… :) В некоторых ситуациях, можно даже “пугать” врагов. Конечно, эта механика следствие очень простого кода, но и она придаёт игре свой шарм.

Кроме оригинальных уровней, я добавил библиотеку дополнительных лабиринтов. Игра пишет демки успешных прохождений, которыми можно потом обмениваться (Пишутся они в каталог с сейвами). Если не нажимать на кнопки при старте, то игра покажет уже записанные демки. Также запустить демку можно кнопочкой “d” из меню выбора уровня (предварительно записав демку или взяв ее у товарища и подложив в каталог с игрой).

В игру можно играть на Android с помощью жестов. Только играйте двумя руками одновременно, тогда управление становится не хуже клавиатурного. Проверено мной и сыном, игра проходима. :)
Всем БКшникам — привет! :)

https://www.youtube.com/watch?v=ghZ3iQQj0iI

# О творчестве (цитаты)
std.hugeping
hugeping(ping,1) — All
2020-09-08 18:45:41


Aug 23, 2018 · 2 min read

По моим наблюдениям, в наши дни творчество само по себе встречается очень редко. Чаще всего оно оценивается с точки зрения коммерческого успеха, и как следствие — рационализируется.

На мой взгляд, это в корне неверный взгляд, который обесценивает суть творчества. По моему, творчество — это часть реализации свободы воли человека, что роднит творчество с самой жизнью. Поэтому, я люблю собирать цитаты творческих людей, в которых нахожу что-то близкое.

Главный элемент творчества — чувство личной свободы.
(Чехов)

Существуют два способа не любить искусство. Один из них заключается в том, чтобы его просто не любить. Другой в том, чтобы любить его рационально.
(Оскар Уайльд)

Совершенства достигает лишь тот, кто отказывается от всяческих средств, ведущих к сознательной утрировке.
(Поль Валери)

Если бы мы могли совершенно не принимать в расчет все правила и общепринятые способы, которыми делаются фильмы, книги и проч., какие бы замечательные вещи можно было бы создавать! Мы совершенно разучились наблюдать. Наблюдение мы заменили деланием по шаблону.
(Тарковский)

Чтобы хорошо писать, надо разучиться грамматике.
(Гёте)

Чем недоступнее рассудку произведение, тем оно выше.
(Гёте)

Кто хочет понять поэта, должен идти в страну поэта.
(Гёте)

Мне важно установить в этом фильме то специфически человеческое, нерастворимое, неразложимое, что кристаллизуется в душе каждого и составляет его ценность. Ведь при всём том, что внешне герои, казалось бы, терпят фиаско, на самом деле каждый из них обретает нечто неоценимо более важное: веру, ощущение в себе самого главного. Это главное живёт в каждом человеке.
(Тарковский о “Сталкере”)

Я не пишу песни для кого-либо специально. Конечно, мне хочется, чтобы все люди могли меня понять… Но… Я не знаю. Песни которые я пишу (мы пишем), и песни которые мы играем. Мы делаем только так как мы хотим.
(В. Цой)

Набрать нужное количество слов — это не самое трудное. Куда труднее сочинить рассказ как таковой; литературное творчество — процесс загадочный до жути. Вам так хочется сделать все правильно, вы лезете вон из кожи, на каждом шагу беспощадно судите себя — и в итоге оказываетесь в глухом тупике. Тысячи и тысячи написанных слов не сложились во что-либо приемлемое; среди дикого сумбура невозможно найти правильный курс.
Р.Шекли

# Абсолютно ли познание?
std.hugeping
hugeping(ping,1) — All
2020-09-08 18:44:00


Когда я сталкиваюсь с мнением о том, что физика должна исключить религиозное восприятие и любую метафизику. Что физика претендует на монополию в познании истины. Что только лишь недалекое сознание может верить в Бога. Я каждый раз удивляюсь. Конечно, есть вульгарный упрощенный материализм, который наивен по своей сути и спорить с которым невозможно. Но есть в этой часто происходящей подмене понятий и нечто фундаментальное.

Я хочу привести что то вроде мысленного эксперимента, который иллюстрирует мои мысли по поводу границ материализма.

Мы – люди. Мы – задаем вопросы. Но задавая любой вопрос, мы получаем такой ответ, который можем себе представить. Не случайно говорят, что правильно заданный вопрос – половина ответа. Любой ответ всегда сформулирован в том же понятийном пространстве (аристотелевой логики, математики, языка и так далее), что и вопрос.

Это настолько нам привычно и интуитивно, что часто остается незаметным. Так как все, что мы можем помыслить – формулируется в рамках нашего же мышления. Например, логика для нас – синоним истинности рассуждений.

Мы существуем во времени, мы пользуемся аристотелевой логикой и математикой, языком. И любой ответ на любой вопрос будет сформулирован так же.

Теперь, представим себе, что существует реальность. Настоящий мир весь целиком. Сам в себе. Или, упрощенно – истина. Многие ученые верят в это.

Частью этого мира являются люди. Люди пользуются мышлением (язык, математика, логика). Если встать на позицию материализма, то можно сказать что язык, математика, логика (мышление) – сформированы средой. Например, причинно - следственные связи логики – это отражение направленности времени. Математика – суть закономерностей мира. И так далее.

Итак, с позиций материализма: логика, математика, язык – порождены миром. Для простоты, назовем эти законы мышления человека – языком. Кажется очевидным, что чтобы постичь истину, мощность языка должна быть достаточной, чтобы истина могла быть сформулирована этим языком.

Но если язык сам по себе порождение мира, то какие у нас вообще есть основания считать, что созданный миром язык таков, чтобы мир мог быть им полностью описан? Мир, создающий язык, на котором он может быть полностью описан? Если язык действительно таков, то не похоже ли это все на осознающий себя мир?

С точки зрения материализма, на мой взгляд, естественней верить в то, что язык не способен вместить истину. И тогда мы приходим к схеме двух миров: человеческий мир, способный быть сформулированным человеческим мышлением (видимиый мир), и мир – надчувственный, трансцендентный. Который ускользает от рассудка, не попадает в его систему координат (невидимый). И тогда мы приходим к почти религиозному взгляду на мир. Почти, потому что следующий шаг – это введение бытия Бога. Которое очень сложно исключить, так как язык – не больше создателя. Но мера сложности создателя выше меры сложности языка. Это все больше похоже на рождение.

Если же мы верим в то, что язык способен вместить в себя истину, то это тоже приводит нас к религиозному взгляду, который можно отнести к пантеизму. Но в случае пантеизма мы приходим к тому, что бог – это мы. Но почему же тогда человек в этом мире так несчастен? Так что, на мой взгляд, и в этом случае ответом может быть только бытие Бога.

Интересно отметить, что данный текст тоже пишется в рамках человеческого мышления. И интересно, что его интерпретация тоже имеет разный смысл в двух вариантах: случая абсолютного мышления и относительного. Но моя цель просто показать – как все непросто. Что наши рассуждения одинаково приводят к сингулярностям. Религиозный взгляд не конфликтует с физикой, он находится вообще в другой плоскости. Вера – это знание при помощи любви. (Тарковский)

Мы часто делаем подмены, во время наших рассуждений. Например, мы считаем “пространство” чем то самими собой разумеющимся. Хотя таким оно было только во времена Ньютона. Что такое пространство? Что такое движение? Вообще, философия науки на данный момент находится в стагнации. Да, мы даже не способны осознать даже такое “простое” понятие как движение! Любая физическая истина, будучи сформулированной, теряет абсолютность. Любая истина, выраженная логикой – теряет абсолютность. В качестве примера, попробуйте представить абсолютную истину, сформулированную физиком? У вас не получится.

Свобода воли – еще один интересный пример. Как бы мы не рассуждали, мы приходим либо к ее отрицанию, либо к ее “нефизичности”.

Само понятие “существует” – тоже предмет отдельного разговора.

Для меня, сам факт того, что человек пытается “заглянуть за край” является одним из доказательств бытия Божия. Мне кажется крайне неэкономично было бы мертвому и безжизненному абсолюту создавать человека с бесконечностью в душе. Но как бы вы не считали, во что бы вы не верили, я твердо убежден – ваш выбор обусловлен прежде всего не логикой, а сердцем. А если ваше сердце говорит одно, а логика – другое. Не бойтесь – логика хитрит. На мой взгляд, это еще одно “доказательство” бытия Бога, которое выражено в том, что человек свободен в своем выборе.

И в заключении, еще один пример. Многие из нас во сне делали нелепые поступки, чувствуя (во сне!) их абсолютную логичность. Просыпаясь же, мы удивлялись нелепости сна. Почему же мысль о том, что человек может “проснуться” в новую жизнь может казаться нелепой?

# Фиксированная передача
std.hugeping
hugeping(ping,1) — All
2020-09-08 18:42:25


Летом я езжу в городе на “глухаре” – велосипеде с фиксированной передачей. Глядя на множество стереотипов и предубеждений, которые связаны с этим типом велосипеда, мне захотелось хотя бы немного исправить это положение вещей и я перевел одну из статей Шелдона Брауна (довольно известного в велосипедных кругах веломеханика) на тему фиксированной передачи… Надеюсь, она окажется кому-то полезной…

Автор статьи: Шелдон Браун (Sheldon Brown)
Оригинал статьи на английском http://www.sheldonbrown.com/fixed.html

Перевод: Петр Косых

Я все равно думаю, что переключение передач может понадобиться только людям за сорок пять. Не лучше ли одержать победу силой своих собственных мышц без помощи искусственного переключателя? Мы теряем твердость. Что до меня, дайте мне “глухарь”! – Анри Дегранж (Henri Desgrange), L'Équipe article of 1902

# Что такое фикс и почему он может вам понадобиться?

Самый старый и простой тип велосипеда – “глухарь”. Это односкоростной велосипед без фривила (односкоростной кассеты): то есть, когда велосипед в движении, педали постоянно вращаются. На фиксе вы не сможете ехать по инерции.

Многие энтузиасты выбирают такие велосипеды и ездят на них хотя бы время от времени. Зачем они это делают? В двух словах на этот вопрос ответить непросто. Существует почти мистическая связь между фиксером и велосипедом: он ощущается как продолжение вашего тела и это ощущение сильнее, чем на велосипеде с холостым ходом. Если вы опытный велосипедист, то вам определенно стоит попробовать глухую передачу.

Существует много причин, чтобы использовать глухую передачу, например: ради удовольствия, для поддержания себя в форме, для получения более высокого контроля велосипеда и эффективности передачи.

# Для удовольствия

Необходимо немного практики, чтобы почувствовать себя комфортно на фиксе. Большинство велосипедистов, которые пробуют глухарь первый раз, инстинктивно пытаются ехать по инерции, как только велосипед разгонится. Но на фиксе так делать нельзя, что по началу сбивает с толку. Требуется пару недель регулярных поездок, чтобы разучиться рефлексу инерции и освоиться с глухой передачей.

Конечно, нужно решиться на этот шаг и пройти через период привыкания. Но как только он пройдет, вы обретете совершенно новое удовольствие от езды на велосипеде. Когда вы едете на фиксе, вы чувствуете более тесную связь с велосипедом и дорогой. Есть какая то предельная, незамутненная простота в фиксированной передаче, которая может оказаться для вас крайне привлекательной. Каким то образом, как только заканчивается период привыкания, оказывается, что езда на глухаре приносит большее удовольствие, чем езда на велосипеде с передачами и трещеткой! Если вы не верите моим словам, почитайте отзывы о фиксированной передаче. http://www.sheldonbrown.com/fixed-testimonial.html

# Для поддержания формы

Езда на фиксе – отличное упражнение. Когда вам нужно взобраться в подъем, вам не нужно думать о том, когда менять передачу, потому что у вас она одна. Вместо этого, вы знаете, что нужно просто встать и поднажать, даже если расчет (передача) слишком высока, чтобы быть оптимальной для подъема. Это делает вас сильнее.

Когда вы знаете, что у вас есть возможность понизить передачу и спокойно взобраться в горку, то очень легко поддаться этому соблазну и сделать это. Когда вы едете на фиксе, необходимость вкручивать сильней в подъемах, заставляет вас ехать быстрее, чем вы могли бы ехать при других обстоятельствах. По настоящему крутой подъем может вынудить вас слезть и пройтись пешком, но зато те горки, которые вы сможете одолеть на велосипеде, вы будете проезжать значительно быстрее, чем на велосипеде со свободным ходом.

На спусках вы не можете катиться по инерции, а передача слишком низкая. Это заставляет вас педалировать с большим каденсом http://www.sheldonbrown.com/gloss_ca-g.html#cadence, чем на многоскоростном велосипеде. Педалирование с более высоким каденсом разрабатывает ваши ноги. Высокая частота вращения заставляет вас учиться более равномерному и плавному педалированию – если вы не будете правильно педалировать, вы будете подскакивать в седле.

Многие велосипедисты злоупотребляют инерцией. Езда на фиксе отучит от этой вредной привычки. Езда по инерции нарушает ритм и позволяет остывать вашим ногам. Постоянное движение ног держит мышцы разогретыми и обеспечивает хорошее кровообращение.

# Чувство контроля

Фиксированная передача дает вам очень непосредственное чувство сцепления с дорогой на скользких поверхностях. В частности, это делает фикс удобным для езды в снежную и дождливую погоду.

Это же самое чувство сцепления научит вас с какой силой тормозить передним тормозом без заметного отрыва заднего колеса от поверхности. Многие фиксеры используют только передний тормоз – с глухой передачей задний тормоз практически не нужен.

Из за более тесной связи с велосипедом, вы получаете лучший контроль на неровностях и в сложных поворотах.

На любом шоссейнике, велосипедист должен уметь привставать в седле для преодоления неровностей. Большинство велосипедистов проходят их катясь по инерции. На фиксе велосипедист учится проезжать препятствия без замедления.

# Эффективность трансмиссии

Фикс заметно легче, чем многоскоростной велосипед сравнимого качества, из за отсутствия заднего тормоза, дюрайлеров http://www.sheldonbrown.com/gloss_da-o.html#derailer, манеток, лишних звезд http://www.sheldonbrown.com/gloss_sp-ss.html#sprocket . Фикс также имеет существенно более короткую цепь.

Правильно собранный фикс имеет идеальный чейнлайн http://www.sheldonbrown.com/gloss_ch.html#chainline . Это, а также отсутствие дюрайлеров, настолько сильно повышает эффективность трансмиссии, что вы это почувствуете.

# Трековые велосипеды

Многие люди думают, что фиксы и трековые http://www.sheldonbrown.com/gloss_tp-z.html#track велосипеды это синонимы, но это не так.

Трековые велосипеды созданы для использования на велодромах (велосипедных треках). Некоторые велосипедисты ездят на них и по дорогам, но они неидеальны для дорог.

Трековые велосипеды отличаются от шоссейных http://www.sheldonbrown.com/gloss_ri-z.html#road еще больше, чем отличаются от них фиксы.

Трековые велосипеды не имеют тормозов. Тормоза не нужны на треке, так как все едут в одном направлении, и никто из рядом едущих велосипедистов не может (и не должен) останавливаться быстрее вас. (На большинстве треков, в целях безопасности, тормоза запрещены!)

На некоторых трековых велосипедах существует возможность поставить тормоз, но обычно это очень сложно из за крайне узких зазоров. Нужны очень короткие тормоза. Ноги у вилки трекового велосипеда обычно круглые в сечении, а не овальные, как на дорожных велосипедах. Это делает их жестче для боковых нагрузок. Это хорошо для спринтинга в седле, так как подразумевает сильные боковые нагрузки. К несчастью, по той же причине они менее жесткие для фронтальных нагрузок, так что если вы поставите тормоз, вилка может гнуться при торможении.

Геометрия рамы http://www.sheldonbrown.com/gloss_e-f.html#frame у трекового велосипеда также отличается от рам дорожных велосипедов. Так как на треке нет выбоин и неровностей, обычно рамы делаются более жесткими, с большими углами. Это хорошо для маневренности, но делает жесткой езду по реальным дорогам.

К тому же, трековые велосипеды имеют очень узкие зазоры, так как нет смысла использовать какие-то другие покрышки на треке, кроме самых узких. Это ограничивает применение трекового велосипеда как велосипеда для улицы.

На трековых велосипедах не используются эксцентрики http://www.sheldonbrown.com/gloss_q.html#quick , что усложняет обслуживание в дорожных условиях.

На трековые велосипеды нельзя установить крылья http://www.sheldonbrown.com/gloss_e-f.html#fender , что ограничивает их полезность в плохую погоду.

Некоторые велосипедисты предпочитают ездить на трековых велосипедах не на треке. Особенно те, кто занимался трековыми гонками и привык к чувству трекового велосипеда. В частности, езда на трековых велосипедах приобрела культовый статус в Нью Йорке.

Если вы заинтересовались трековыми гонками, посмотрите сайт Майка Глада The drome. http://www.velodrome.com/

# Дорожные фиксы

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

Обычно, это означает старый шоссейник переделанный в глухарь. Большинство старых десятискоростных велосипедов являются хорошими кандидатами для такой модификации.

Эти велосипеды имеют подходящую геометрию для комфортной езды по дороге, идут с тормозами, эксцентриками, достаточными зазорами для крыльев, иногда даже с болтами для крепления фляги.

Вы можете купить готовый дорожный фикс, но у меня есть подробная статья переделка в фикс, http://www.sheldonbrown.com/fixed-conversion.html которая может помочь вам собрать свой.

# Фиксы из горных велосипедов

Фикс из горного велосипеда может стать универсальным транспортным средством для езды в городе и, при наличии авантюризма, его можно брать в лес. Горные велосипеды обычно имеют адекватный клиренс, правда с другой стороны, у большинства из них вертикальные дропауты. http://www.sheldonbrown.com/fixeda.html#vertical

У меня есть фикс на основе старого Bridgestone CB-3 http://sheldonbrown.org/bicycle.html#cb3 для плохих зимних условий, с 28/15. Это дает хорошую низкую передачу с расчетом 3.63 (49" / 3.88 м), http://www.sheldonbrown.com/gain.html которая позволяет мне ехать настолько быстро, насколько я считаю безопасным ездить по заснеженным улицам. Такая низкая передача делает передний тормоз почти бесполезным: низкая передача позволяет мне быстро тормозить велосипед за счет сопротивления вращению, особенно учитывая тот факт, что на ней сильно не разгонишься.

У меня есть пару горных фиксов с флип-флоп втулками, http://www.sheldonbrown.com/fixed.html#flipflop так что у меня на одной стороне втулки фиксированная передача, а на другой стороне получаются две передачи со свободным ходом. Это достигается с помощью двух передних звезд и двух звездочек на трещетке. (Трещетка на самом деле старая 5 или 6-скоростная у которой 3 звезды заменены на проставки.)

Спереди у меня стоит двойная система 42/52, которую я использую с 19-зубчатой фиксированной звездочкой, или с трещеткой с 20/30 зубцами. Все это дает 3 работающих комбинаций:

	Расчет 	Дюймы 	Метры 	Использование
52/19 Фикс. 	5.45 	71.2 	5.70 	Обычная дорога
52/20 Трещ. 	4.90 	64.1 	5.13 	Устал или холмы
42/30 Трещ. 	2.64 	34.4 	2.75 	Бездорожье

Комбинации 52/30 и 42/20 невозможны из за длины цепи. Я меняю передачи руками… да, плохой способ, так что я и не делаю это часто.

Брюс Ингл, участник Charles River Wheelmen, http://www.crw.org/ подкинул мне идею получше, он сделал тройной фикс на основе горного велосипеда. Он использовал кассетную втулку Шимано, http://www.sheldonbrown.com/k7.html запаяв механизм трещетки. Я немного волнуюсь относительно перспектив на будущее у этой втулки, в частности, насчет соединения между корпусом барабана и втулки, но я думаю я попробую повторить этот вариант. Он получил:

	Расчет 	Дюймы 	Метры
48/20 Фикс. 	4.65 	62.4 	4.99
42/26 Фикс. 	3.13 	42 	3.36
36/32 Фикс. 	2.18 	29.3 	2.34

# Трансмиссия

1/8" или 3/32"

Многие велосипедисты с трека используют более толстую цепь, чем цепи на многоскоростных велосипедах. Многоскоростная цепь имеет номинальную внутреннюю ширину в 3/32". На односкоростных велосипедах, включая большинство трековых, используются более широкие цепи в 1/8". Вы можете купить фиксированные звездочки обоих размеров.

(Некоторые люди по ошибке воспринимают ширину как шаг звена, говоря о “шоссейном” шаге или “трековом” шаге. Это ошибка. Шаг это расстояние от центра до центра между роликами, и все современные велосипедные цепи имеют одинаковый шаг, ½"/12.7 мм)

В большинстве случаев я бы порекомендовал использовать многоскоростной размер 3/32". Он легче, более совместим с вашими передними звездами от многоскоростных велосипедов, и, вероятно, сделает работу трансмисии мягче (вследствие скошенных боковых пластин) в случае, если на велосипеде неидеальный чайнлайн.

Судя по моему опыту, 3/32" цепи не менее надежны или прочны чем 1/8".

Для истинных ретро-ценителей, есть другой вариант – это 1" x 3/16" цепи. Этот размер был распространен на треке и требует специальных звездочек с числом зубцов вдвое меньшим, чем у стандартных звездочек с шагом ½". Настоящие трековые гонщики использовали цепь без роликов. Таких цепей больше нет. Но роликовые цепи такого размера еще где-то можно достать.

Еще более запутывает ситуацию шаг цепи в 10 мм. продвигаемый Шимано http://www.sheldonbrown.com/gloss_sa-o.html#shimano несколько лет назад. Идея была в том, чтобы сэкономить на весе, сделав все меньше. Идея, время которой так и не пришло.

# Продление жизни звездочек и цепи

Если вы хотите продлить жизнь цепи и звездочек, выбирайте четное число зубьев, если это возможно. Смотрите мою статью по продлению жизни цепи. http://www.sheldonbrown.com/chain-life.html

# Центровка передней звезды

Натяжение цепи на фиксе крайне важно и регулируется путем сдвига задней оси назад и вперед в дропаутах. Если цепь натянуть очень туго, то движение трансмиссии будет затруднено, хотя бы при одном положении педалей (звезды обычно не идеальны). Цепь должна быть настолько тугой, насколько это возможно, но без заедания хода трансмиссии. Если натяжение цепи ослаблено, то цепь может слететь, что очень опасно на велосипеде с фиксированной передачей.

Установите заднюю ось так, чтобы цепь была натянута в самой тугой позиции шатунов. Теперь ослабьте каждую бонку и снова затяните, но только лишь с помощью усилий пальцев. Вращайте медленно шатун и следите за цепью, чтобы выявить позицию, соответствующую самому сильному натяжению. Слегка ударьте по натянутой цепи подходящим инструментом, чтобы заставить переднюю звезду немного сдвинуться на пауке. Затем поверните шатун еще немого, чтобы найти следующее положение самого тугого натяжения и так повторяйте до тех пор, пока это нужно.

Рукам требуется небольшой опыт, чтобы научиться тому, с какой силой ударять по цепи и насколько ослаблять бонки, но это действительно несложная процедура.

Затяните немного бонки и все перепроверьте. Затягивайте бонки в равномерной последовательности, как это делается с гайками на колесах у машин. Моя обычная последовательность начинается с затягивания бонки напротив шатуна, затем пропустить 2 бонки по часовой стрелке (144 градуса), затянуть одну, пропустить еще 2 по часовой стрелке, и так далее. Никогда не затягивайте две соседние бонки. Вы можете выбрать противоположное направление движения, но попытайтесь выработать привычку всегда начинать из одной точки и всегда идти в одном направлением. Это уменьшит вероятность случайно пропустить бонку.

После того как вы отцентрировали и затянули переднюю звезду, отрегулируйте положение задней оси, чтобы сделать натяжение цепи настолько тугим, настолько это возможно (но без заедания трансмиссии). Обратите внимание, как свободно работает трансмиссия на ослабленной цепи. Вот так она и должна работать, когда вы закончите, но с минимально-возможным провисанием цепи.

# Установка заднего колеса

Когда вы устанавливаете заднее колесо на фиксе – или на любом велосипеде с одной скоростью –, существуют три вещи, которые вы должны настроить одновременно:

- Колесо должно стоять прямо. Это, в основном, означает, что передний край колеса должен быть точно посредине между перьями рамы. Если у колеса симметричный зонт, и вы отцентрировали его относительно перьев, то колесо выровнено прямо.
- Натяжение цепи должно быть правильным. (См. предыдущий раздел)
- Гайки на оси или эксцентрики должны быть затянуты туго. Замечание: если у вас ось на гайках, жизненно необходимо, чтобы резьбы были правильно смазаны консистентной или жидкой смазкой. Вам следует также смазать поверхность контакта в том месте, где гайка давит на шайбу которая контактирует с рамой.

Некоторые ребята, которые до этого использовали велосипеды со скоростями находят такую процедуру раздражающей. Особенно с втулками на гайках. Это потому, что они не знакомы со способом “гуляющего” колеса.

Начните с установки колеса в приблизительно правильное положение и затяните гайки на оси. Они не должны быть слишком сильно затянуты на этом этапе, просто затяните их с большим усилием, чем затянули бы пальцами. Проверьте натяжение цепи и ровность позиции колеса.

Вероятнее всего цепь будет немного ослаблена, но, допустим, колесо удалось поставить ровно. Ослабьте одну из гаек и надавите на край покрышки сбоку колеса, чтобы освобожденный конец задней оси двигался назад. Затем, затяните гайку, которую вы ослабили.

Теперь натяжение цепи должно стать лучше, но колесо больше не выровнено по центру между перьями. Ослабьте другую гайку и отцентрируйте положение колеса в раме. Это, на самом деле, еще немного натянет цепь.

Идея в том, чтобы все время оставлять один или другой конец оси зафиксированной в раме, и смещать колесо боковыми надавливаниями на шину вперед или назад.

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

> Мне нравится сначала освободить правую часть оси, натянуть цепь немного сильнее, чем нужно, и ударить по цепи гаечным ключом, как описывает Шелдон в процедуре центрирования передней звезды. Таким образом, я могу сдвинуть ось совсем немного вперед, чтобы цепь была хорошо натянута. Колесо при этом немного повернется, и нужно будет настроить позицию левого конца оси, но это уже почти не повлияет на натяжение цепи. – Джон Аллен

Замечание: этот способ не работает с втулками на эксцентриках, но с ними обычно меньше проблем.

# Выбор расчета

Выбор передачи для фикса очень личная вещь и зависит от вашего стиля, ваших целей и местности, в которой вы ездите.

Я живу в Новой Англии с небольшими холмами. Для велосипеда с обычными дорожными колесами и 165 мм. шатунами я понял, что для меня, передача 42/15 подходит лучше всего. Это дает передачу 5.77 (75.6" / 6.05 м). Это достаточно мало для того, чтобы я мог въезжать в горки где я обычно езжу, но достаточно много, чтобы я мог достаточно быстро съезжать вниз.

Гонщики использующие глухари для зимних тренировок обычно любят более низкие передачи, в целях улучшения техники педалирования.

Те, кто живут в плоских местах, скорее всего предпочтут что-нибудь значительно большее. Когда я посещал мою сестру в Иллиноисе, я повернул мое колесо и использовал 42/14, передачу 6.18 (81.0" / 6.48 м).

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

Раздельщики часто предпочитают что-нибудь еще более высокое. (Многие британские триалисты предпочитают фиксы для этих соревнований.) Берил Бартон (Beryl Burton), вероятно, самая известная триалистка в истори, использовала почти исключительно фикс. Если мне не изменяет память, она обычно ездила на 52/14 или 52/13!

Чем выше передача, тем более желательно иметь тормоз на велосипеде. Тому есть две причины:

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

Если вы планируете регулярно делать скип-стопы (скидить), то вам следует также учесть число скид-патчей у выбранной вами передачи.

# Большее или меньшее число зубцов?

Как только вы определились с передачей, следующий вопрос состоит в том, какой из эквивалентных вариантов числа зубьев для звезды/задней звезды(кога) использовать.

Например, 36/12, 39/13, 42/14, 45/15 и 48/16 все дают одну и ту же передачу 3:1. Что выбрать?

	                 Больше         Меньше
Хорошо: 	Немного меньшее трение 	Немного легче
	Более долгая жизнь цепи/кога 	Больший клиренс до земли
	Меньшее напряжение цепи 	Больший клиренс до перьев
Плохо: 	Немного тяжелее 	Быстрый износ цепи/кога
	Иногда проблемы с клиренсом до перьев 	Большее напряжение цепи
		(и вероятность смещения оси)

Эти различия в основном незначительны. Большинству велосипедистов подойдут звезды от 30 зубцов для техничного внедорожного использования, 40 зубцов для дороги и 50 для использования на треке.

Так как 42-зубцовыя звезды очень распространены на дорожных системах, этот размер довольно популярен при переделки велосипеда в фикс.

Если вы используете флип/флоп втулку, использование меньших размеров даст вам большую разницу в передаче на каждый зубец для двух сторон втулки.

# Флип/флоп втулки

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

Наиболее распространенное использование таких втулок – это установка фиксированной звездочки на одной стороне и фривила на другой. Обычно, фривил ставят на 1 или 2 зубца больше, чем фиксированная звездочка.

Идея в том, что большую часть времени вы будете ездить на фиксированной передаче, но если вы окажетесь далеко от дома и устанете, или окажетесь неожиданно в холмистой местности, вы сможете повернуть колесо другой стороной и использовать фривил. Это поможет следующим образом:

- Более низкая передача облегчит подъем.
- Фривил позволит вам ехать по инерции (отдохнуть) на спусках (что было бы утомительно на такой низкой передаче, если бы она была глухой.)

Для каждого зубца разницы, позиция задней оси будет меняться на 1/8" (3 мм.)

Также, вам понадобятся два тормоза, если вы собираетесь использовать фривил.

Вы также можете использовать две разные фиксированные звездочки. В таком случае я бы порекомендовал разницу в 1 зуб. Я использую 14 и 15 коги с 42 звездой впереди на паре моих велосипедов.

Большинство флип-флоп втулок имеют резьбу для локринга только на одной из сторон, но резьба для трещетки или звездочки одинакова, так что вы можете накрутить фиксированную звезду и на сторону для фривила. Я бы поставил более маленькую звезду на сторону без локринга, так как вероятность ее раскручивания ниже.

Бывают двойные фиксированные втулки, и, как по мне, это наиболее желательная конфигурация. Такое устройство наиболее универсально, потому что вы можете накрутить 1 или 2 фиксированные звезды или 1 или 2 фривила.

Каждая стандартная трековая втулка также может быть использована с односкоростной кассетой (фривилом), просто не используя фривил. Резьба та же. Иногда люди беспокоятся из за того, что резьба втулки не такая длинная, как на специальной втулке для фривила, но это на самом деле не является проблемой.

Для большей информации по флип-флоп втулкам, смотрите раздел про фиксы на основе горных велосипедах.

# BMX фдип-флоп втулки

Есть еще один тип “флип-флоп” втулок, в основном используемых в BMX. Этот тип имеет резьбу для двух фривилов, без резьбы для локринга. Одна сторона это стандартная 1.375" резьба, другая – более мелкая метрическая резьба. Она сделана для того, чтобы устанавливать более мелкие фривилы, чем те, которые устанавливаются на обычную втулку (14 и 15 зубцов).

# Педали

Наиболее важная характеристика, которую нужно учесть при выборе педальной системы для фикса – это хороший клиренс. Вам следует также выбрать педали, в которые вы легко встегнетесь и выстегнетесь, так как обе операции усложняются постоянным движением шатунов.

Я бы порекомендовал использовать любую систему, к которой вы привыкли. Катание на фиксе это и так достаточное приключение даже без попытки привыкания к новой педальной системе!

Когда я использовал ту-клипсы, я использовал два ремешка для каждой педали, частично потому, что они помогали удерживать мои ноги лучше (так как я не использую шипы) и частично для безопасности. Ремешки ту-клипсов подвергаются сильным нагрузкам на фиксе, и если они порвутся, могут случиться неприятные последствия.

Иногда, начинающие фиксеры пытаются использовать обычные педали (топталки). Я настоятельно советую не делать так. Езда на фиксе с обычными педалями без крепления это продвинутая техника катания, которую можно рекомендовать только опытным фиксерам.

# Начало езды

Езда на велосипеде требует подходящей техники старта. http://sheldonbrown.com/starting.html Многие велосипедисты имеют плохие навыки старта езды, такие как закидывание ноги на ходу или подпрыгивание на старте. Эти методы работают на фиксе еще хуже, чем они работают на обычном велосипеде.

Установка педали в правильную переднюю-верхнюю позицию может оказаться немного сложнее на фиксе, так как вы не можете прокрутить педали назад. Суть в том, чтобы поставить вашу ногу на педаль а потом приподнять заднюю часть велосипеда, чтобы прокрутить педали в нужную позицию.

Я использовал край седла, чтобы приподнять велосипед, но я таким образом порвал Brooks Pro http://sheldonbrown.com/leather.html – оторвались заклепки, которые крепят кожу к рамке седла!

Мой друг, Осман Исван недавно подсказал мне другой способ. Трюк в том, чтобы взять велосипед, поставить ногу на педаль, зажать передний тормоз и надавить на руль от себя. Сила давления на руль заставит приподняться заднее колесо и можно будет прокрутить педали в нужную позицию.

# Остановка

Вы можете останавливаться обычным способом, но продвинутым фиксерам может понравиться специальный, очень классный способ остановки, который возможен только на фиксе.

Вместо того, чтобы слезть с велосипеда вбок, на фиксе можно сойти сзади. Этот метод работает лучше, если вы катаетесь с ту-клипсами, но если вы действительно обладаете хорошим способом выстегиваться из контактов, можете попробовать под свою ответственность и в контактах.

Когда велосипед замедлится до прогулочной скорости, выстегните левую ногу, затем подождите пока правая педаль окажется внизу. В тот момент, когда правая педаль начнет подниматься, распрямите правую ногу и позвольте движению педали приподнять вас. Оттолкните руль и позвольте седлу пройти вперед между ваших ног, поставьте левую ногу на землю. Схватите уезжающий вперед велосипед за седло.

Нужно немного смелости, чтобы попробовать этот способ, но на самом деле он очень простой. И выглядит эффектно и естественно, если его правильно делать. Вы можете перейти от езды на велосипеде к обычной ходьбе одним плавным движением, даже не останавливаясь.

# Торможение

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

Вам действительно следует иметь передний тормоз. Передний тормоз, даже без заднего, остановит велосипед настолько быстро, насколько это вообще возможно. Это происходит потому, что когда вы максимально тормозите передним тормозом, на заднее колесо практически нет нагрузки и, следовательно, нет трения.

Одна из замечательных штук в фиксе состоит в том, что непосредственное чувство сцепления заднего колеса подскажет точно, с каким усилием тормозить передним тормозом, чтобы заднее колесо не сильно отрывалось от земли.

Это очень ценный опыт для любого велосипедиста, который любит ездить быстро: он может спасти вам жизнь.

Действительно, на фиксе нет реальной необходимости в заднем тормозе. Прикладывая усилие против движения педалей, вы можете создать тормозное усилие на заднее колесо. И этого усилия будет достаточно, чтобы выполнить функцию заднего тормоза. На самом деле, довольно просто вообще заблокировать заднее колесо и ввести его в занос, если только вы не используете действительно высокую передачу.

Некоторые фиксеры стараются не использовать тормоз за исключением экстренных ситуаций. Я не уверен в том, что это хорошая идея. Очень тяжелая и постоянная нагрузка сопротивления педалированию широко зарекомендовала себя как вредная для ног. Она является контр-продуктивной для развития мышц и координации педалирования. Загуглите “eccentric contraction” для дополнительной информации. http://www.google.com/search?client=safari&rls=en&q=eccentric+contraction&ie=UTF-8&oe=UTF-8 Eccentric contraction зарекомендовала себя как причина микро-разрывов в мышечной ткани, так что это ослабляет ваши мышцы, в отличие от других физических нагрузок.

Ситуация напоминает мне водителей машин, которые используют сцепление и понижение передачи для торможения, не смотря на то, что у машины есть компоненты специально созданные для снижения скорости. Тормозные колодки дешевле заменить, когда они износятся, чем сцепление.

> Физиология упражнений относительно новая наука. Микро-разрывы в мускулах сейчас считаются началом укрепления мышц. Распространенные упражнения для строительства мускул – поднятие тяжестей, отжимания, приседания. Nautilus и Cybex тренажеры и так далее используют eccentric contraction – вы поднимаете штангу, или свое тело, или тянете рычаг, затем опускаете. Но число повторений в упражнениях намного меньше, чем при езде на велосипеде, обычно 2 или 3 подхода из 10 повторений, вместо тысяч за час педалирования. Тяжелые нагрузки при сопротивлении вращению педалей, возможно, вредная вещь по той же причине, что и низкий каденс. Сильная нагрузка, повторенная много раз, ведет к излишнему травмированию, и будет истощать, а не наращивать мышцы. – Джон Аллен

# Скип-стоп (скидинг)

Велосипедистам не использующим тормоза следует освоить технику, называемую скип-стоп. Это примем с помощью которого вы можете заблокировать заднее колесо усилием ног.

- Если вы остановите одну ногу в нижней позиции педали, с дальнейшим вращением педали она начнет поднимать вас.
- Когда шатуны станут в горизонтальную позицию, потяните вверх переднюю педаль, во время толкания задней педали вниз.
- Из за того, что ваше тело приобрело момент движения вверх, когда вы дергаете переднюю педаль это на время разгрузит заднее колесо, делая возможным срыв в занос.

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

Вам действительно стоит научиться этому приему! Его проще делать на большей скорости.

Чем меньше передача, тем более эффективно вы можете “тормозить” путем сопротивления вращению педалей.

Несмотря на то, что вам скажут некоторые ребята, вы никогда не сможете остановиться так же быстро, как при использовании хорошего переднего тормоза.

Смотрите мою статью Торможение и маневрирование http://sheldonbrown.com/brakturn.html для более детальной информации.

# Скид патчи

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

Велосипедисты которые планируют делать много скип-стопов должны учитывать передачу при выборе звезд. Математика выбора довольно проста:

- Упростите передачу к самому маленькому (меньшим числом зубцов) эквиваленту в виде отношения чисел. Назовем передачу p/q.
- Если числитель p у дроби – четный, то число скид-патчей равно q. Скид-патчи равномерно распределены по покрышке, если их больше одного.
- Если вы способны скидить с обоих позиций и числитель нечетный, число возможных скид-патчей удваивается. Скид-патчи с одной позиции (одна из ног впереди) лягут в промежутках между скид-патчами для другой позиции (эта же нога – позади).

Например:

48/12 упрощается до 4.1, таким образом тут будет только 1 пятно контакта (скид-патч).

45/15 упрощается до 3/1, таким образом будет только 1 скид-патч, или 2 если вы умеете скидить с обоих позиций.

42/15 упрощается до 14/5, то есть тут будет 5 скид патчей.

44/16 упрощается до 11/4, то есть тут 4 скид патча, или 8 – если вы умеете скидить с обоих позиций.

Дробь 43/15 не может быть упрощена, так что тут 15 скид патчей, или 30 – если вы умеете скидить с обоих позиций.

Объяснение: давайте посмотрим на 45/15 или 3/1. Заднее колесо поворачивается точно 3 раза за каждый оборот шатунов, таким образом, если одна и та же нога в передней позиции, одно и то же место покрышки будет протираться при торможении. ½ поворот шатунов соответствует другой позиции (другая нога впереди) и это повернет заднее колесо на 1 ½ оборота. Таким образом, пятном контакта станет противоположная точка на шине. Аналогично, для более больших отношений, если числитель четный, скид-патчи будут попадать на одно и то же место не зависимо от того, какой шатун впереди. Но если числитель нечетный, скид-патчи будут чередоваться. Табличка для Excel от Джона Алена http://sheldonbrown.com/skidpatch.xls помогает вычислить число скид-патчей для любой комбинации звезд.

Задний тормоз тоже оставляет протертости. Переднее колесо не уходит в занос при нормальном торможении. Передний тормоз также может остановить велосипед намного быстрее, но требует осторожного обращения, чтобы избежать выкидывания велосипедиста через руль: см. мою статью по торможению и маневрированию. http://sheldonbrown.com/brakturn.html

# Опасности фикса

Я должен предупредить вас о трех опасностях, относящихся к фиксам, которые не являются проблемой на обычных велосипедах со свободным ходом. Используемый и обслуживаемый правильным образом фикс безопасен так же, как и любой другой велосипед, но вы должны знать о трех видах опасности:

# Чирканье педалью

Зацепиться педалью за землю во время крутого поворота – это одна из опасностей. На велосипеде со свободным ходом, вы всегда можете проехать крутой поворот по инерции, держа педали в горизонтальной позиции, тем самым избегая опасности. На фиксе у вас нет такой возможности.

Если педаль ударится о землю, то это может привести к поднятию заднего колеса, и вы полетите вниз. Этого никогда не было со мной, но это то, что надо знать и иметь в виду.

Насколько именно эта проблема опасна зависит от высоты каретки, длинны шатунов и устройства педалей.

Большинство моих фиксов имеют 165 мм. шатуны, что дает немного больше клиренса, чем дали бы 170 мм. шатуны. которые обычно используются на дорожных велосипедах. Также, я стараюсь использовать такие педали, которые не сильно торчат наружу.

> Избегание зацепления педалью это одна из причин не следовать обычному совету Шелдона http://sheldonbrown.com/brakturn.html#leaning стараться держать свое тело и велосипед на одной линии во время крутых поворотов. Если вы наклоните туловище по направлению поворота, велосипед будет устойчивей, но с другой стороны… – Джон Аллен

# Соскок цепи и блокировка колеса

Соскок цепи на велосипеде со свободным ходом не такая большая проблема, но это может стать очень опасным на фиксе. Если цепь слетит с передней звезды, она может застрять или даже намотаться вокруг задней звездочки, что может привести к блокировке колеса. Если это происходит во время закладывания поворота, вы практически наверняка упадете.

Чтобы этого не случилось, следует следить за правильностью чейнлайна и натяжением цепи.

# Зажевывание пальцев, брюк, шнурков

Другая большая опасность фикса существует во время работы с велосипедом на стенде. Если вы крутите педаль рукой и случайно палец или предмет одежды попадет в цепь или звездочку, имейте в виду, что вращательный момент не даст остановиться трансмиссии. Вы можете потерять палец!

> Тут были изображения отрубленных пальцев. Вы можете посмотреть их здесь. – Прим. пер. http://www.sheldonbrown.com/fixed.html

Простите, за эти ужасные фото, но это реальная опасность!

Похожим образом, во время езды, если вы носите широкие штаны или у вас развязался шнурок, то одежду может зажевать в трансмиссию. На велосипеде со свободным ходом, это нестрашно. Вам просто надо остановить движение педалей, затем прокрутить их назад, чтобы освободиться. Самое ужасное что произойдет – ваша одежда испачкается в масле.

С фиксированной передачей, у вас нет такой возможности. Если шнурок зажует, он оторвется, или сорвет ваш ботинок. Если зажует штанину, вы можете серьезно пострадать.

Я искренне надеюсь, что моя статья убедит некоторых из читателей попробовать прокатиться на глухаре, и, быть может, вам понравится фиксированная передача так же сильно, как она нравится мне. У меня есть 11 фиксов! http://www.sheldonbrown.com/fixed-scb.html

# Познаваемость и антропный принцип
std.hugeping
hugeping(ping,1) — All
2020-09-08 18:27:04


Люди привыкли к тому, что мир познаваем. Настоящий ученый убежден, что процесс познания ничем не ограничен, что можно разобраться в том, как работает вселенная и подчинить себе ее законы. Мы смотрим фантастические фильмы, подсознательно веря в то, что рано или поздно люди начнут осваивать другие звезды, встретятся с другими цивилизациями… Но на чем основана эта вера?

Если мыслить мир без Бога, мы исключаем антропный принцип. И в таком случае, вроде бы не видно никаких оснований для веры в принципиальную возможность неограниченного человеческого познания. В самом деле, может оказаться, что мы просто ограничены каким то фактором, который не сможем перешагнуть (или даже помыслить).

И если с ограниченностью по ресурсам все понятно (например, нам просто не хватит времени, чтобы выйти в межзвездное пространство), то с принципиальными ограничениями не так очевидно.

Это как с мыслями о бесконечности: если мы можем дойти до этой точки, то значит можем шагнуть еще дальше. А потом еще и еще. Но на чем, кроме житейского опыта основано это убеждение? Скорость света может оказаться действительно максимальной скоростью, кротовые норы могут оказаться несбыточной мечтой. Вероятность успешной миссии корабля-колонии – ничтожно малой, недостаточной, чтобы сделать возможными межгалактические переходы. Может просто не оказаться законов (в смысле их применимости и доступности), которые помогли бы человеку освоить вселенную. Человек может оказаться тупиковой (неудачной) формой жизни, неспособной к познанию вселенной, видящей только маленький, доступный для сознания слой неведомой реальности.

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

Не сильно помогает и восприятие нашей действительности, как результата самоорганизации материи. По сути это есть пантеистический бог, слепой и мертвый бог философов. Пантеизм означает, что вселенная и есть бог. Таким образом, мы как бы выходим на новый виток тех же самых рассуждений, но пытаясь ввести антропный принцип, который в данном случае ни на чем не основан. Слепое и мертвое породило нечто, что вроде бы его часть, но в то же время отчуждено от нее самой границей сознания.

Интуитивно мы понимаем, что все эти рассуждения выглядят нелепо. Возвращая антропный принцип в полном смысле (говоря, что Бог сотворил вселенную для нас) – наш разум более не вступает в конфликт с интуицией. Я не знаю, доберемся ли мы до звезд, но это вполне возможно, если Бог подарил нам эти звезды. Антропный принцип предполагает, что вселенная познаваема, ибо она создана для нас. Человек архитектурно сродственен миру. Конечно, это не означает, что мы гарантированно начнем бороздить просторы галактики, но хотя бы дает основание для надежд на то, что мы все-таки способны вместить в себя вселенную.

Мне кажется, верить в принципиальную познаваемость вселенной невозможно (или очень трудно) без веры в Бога. Бога, который сотворил все и который действует в созданном мире, но сам не является частью этого сотворенного мира.

# Вероятность личного бытия
std.hugeping
hugeping(ping,1) — All
2020-09-08 18:26:33


Исходя из текущего научного представления о вселенной, количество галактик в нашей вселенной — несколько миллиардов. Размер только нашей галактики около 100 000 световых лет. Количество звезд в ней — больше 150 миллиардов.

Возраст Земли — 4-5 миллиардов лет. Самые древние исторические свидетельства о человеческих цивилизациях лежат в диапазоне нескольких тысяч лет.

Теперь, читающие эти строки, представьте себе вероятность вашего существования. Нет, не вероятность возникновения «жизни», и даже не вероятность возникновения «человека», а вероятность вашего личного существования. Что во всех этих невообразимых масштабах пространства и времени, сейчас, вопреки всему «здравому смыслу» существует огонек вашего сознания. Что вы не знаете другого времени, как только то, в котором вы вошли в этот мир. Микроскопический, почти нулевой отрезок времени. Микроскопический, почти нулевой масштаб. Почти нулевая вероятность. И все-же, ваше сознание заполнено отраженной в ней вселенной, которая ворвалась в нее, когда вы осознали собственное бытие… Так ноль или один?

И сотворил Бог человека по образу Своему, по образу Божию сотворил его;

# Об эволюции
std.hugeping
hugeping(ping,1) — All
2020-09-08 18:25:57


Как не специалист в данной области, строго говоря, я не могу с достоверностью судить о том, насколько теория эволюции состоятельна и общепризнана. Но мне думается, что сам путь развития жизни на земле от простого к сложному, а также временные масштабы процесса не вызывают сомнения у большинства ученых. Объяснить же сам процесс с научной точки зрения — это гораздо более сложный вопрос, который я не рискну поднимать, но думаю, что наука не готова сейчас предложить исчерпывающий ответ.

Когда думаешь о вселенной: о всех этих расстояниях, которые почти невозможно представить, о нескольких миллиардах лет развития земли, о зыбкости жизни, о том, что возможно, нашими предками были животные — то легко почувствовать потерянность во всем этом. И невольно думаешь: а как же Бог? как может быть центром всего Христос? Человек сотворен Богом, или лишь слепой случайностью, которая нащупала себе дорогу за долгие годы эволюции? А как же книга Бытия?

Быт1:1 В начале сотворил Бог небо и землю.

Если под небом и землей представить себе планету Земля и ее атмосферу, то первый стих книги Бытия покажется даже наивным. Но если иметь в виду, что тексту несколько тысяч лет, и для людей того времени небо и земля, скорее всего, означали всю вселенную, то у стиха будет уже несколько другой смысл. А если вспомнить еще одно толкование, где под небом и землей понимается видимый и невидимый (небесный) мир, то мы обнаружим еще один смысл. И какой из них верный? Каждое из толкований верно, так как следует более фундаментальному смыслу, который заложен в этой короткой строке.

Бог сотворил мир. Сам акт творения это тайна, которую мы едва-ли можем осознать, и величие которой мы косвенным образом угадываем в грандиозности вселенной. В развитии вселенной мы наблюдаем становление творения.

Для простоты (не обращая внимания на слабые моменты теории), представим себе, что эволюция это просто результат случайности и отбора. То-есть эволюция заключается в «нащупывании» или «протаптывании» оптимального пути развития, находя его среди множества вариантов. Представим себе, что мы наблюдаем становление человека из обезьяны (или нашли археологическое подтверждение этому процессу). Значит ли, что человека сотворила «случайность»?

Оставаясь в рамках науки — да. С научной точки зрения мы опускаемся все глубже и глубже, и останавливаемся на том пределе, до которого можем добраться — до случайности или квантовой механики.

Но случайность это свойство нашего мира, сотворенного Богом. Наблюдая эволюцию, мы наблюдаем становление творения. Бог создал человека. Или, глядя изнутри мира, мы можем сказать, что мир таков, что в нем возможен человек, и это факт бытия. (Кстати, еще сложный вопрос, соотношение «вероятности» и факта личного бытия.)

Когда рассуждаешь таким образом, конечно, понимаешь, что применяя неуклюжие умозрительные построения мы едва ли понимаем кто есть Бог, но по крайней мере, это дает возможность сказать — случайность не есть бог.

Христос явил Бога настолько, насколько возможно человеку познать Бога. Если я верю в то, что Бог создал человека, и узнаю Бога в Христе, то я верю, что Христос — Агнец, закланный от создания мира Откр13:8. То-есть событие смерти и Воскресения Христа, послание Духа Утешителя вплетены в мироздание на уровне сотворения мира. Бог воссоздал человека во Христе, поэтому Христос это второй Адам или виноградная лоза, как говорит о Нем Церковь. Альфа и Омега — то-есть центр координат, начало отсчета. Новый Завет. Еще есть термин домостроительство Божие. Наверное, слишком грубый термин, но я бы сказал, что это как новая «прошивка». Бог создал человека неповрежденным, в Адаме человек отпал от Бога, и его цель — «вернуться». Думаю, это возвращение можно мыслить и как личное, и как общее.

Отсюда сложность «рационального-рассудочного» понимания Христа как Человека и Бога. Думаю, что исповедуя Христа Богом, Церковь «сформулировала» или озвучила опыт веры, то-есть факт веры. Наверное можно попробовать построить такую цепочку: Кто обладает истинным бытием? Бог. Мы обладаем бытем в той мере, в которой Бог обитает в нас. Кто явил Бога? Христос. Но домостроительство это тоже тайна, и такая цепочка наверняка «условная».

Верю, что богословие Троицы в глубине своем приближает человека к осознанию божественной тайны настолько, насколько это возможно. Но тогда нужно ли пытаться переводить его в язык спекулятивной философии, на котором написан этот текст? Наверное нет, но иногда я почему-то чувствую такую потребность.

# О времени
std.hugeping
hugeping(ping,1) — All
2020-09-08 18:25:13


Время существует для того, чтобы актуализировать свободу.

# Николай Сербский — Мысли о добре и зле
std.hugeping
hugeping(ping,1) — All
2020-09-08 18:24:44


«Духовные не бьются над вопросом: кто сотворил меня? — понимая, что никого во всей вселенной нельзя назвать Творцом всего, кроме единого Бога.»

# О физике
std.hugeping
hugeping(ping,1) — All
2020-09-08 18:24:15


Вчера и сегодня смотрел фрагменты документального фильма про вселенную. Фильм снят по Стивену Хокингу. Мысли, которые переросли в поток сознания…

Всегда путаюсь от следующей штуки. В фильме показывается красочный космос (одна из мыслей — что эти краски — не «настоящие» в том смысле, что глазами так не увидишь). Камера перемещается в произвольную точку галактики со сверх-световой скоростью. Ну или даже в другие галактики. Есть еще такая программа, симулятор вселенной — celestia. Нажимаешь мышкой на галактику соседнюю и …уже там.

Вот это я и не могу осознать. Если скорость света это предел, и мы рассматриваем вселенную с этой точки зрения (вселенная. где это аксиома), то как можно даже мысленно представлять, а тем более моделировать такие «прыжки»?

Вот я нажимаю на галактику и оказываюсь там. Как такое представить — если это невозможно? Какой рисунок звезд я увижу? В каком времени? Какое вообще время? В тоже-самое? Что значит тоже-самое? Где? То-есть для меня эти перемещения как какой-то парадокс, который не мыслится. Не могу понять. Интересно, как запрограммирована celestia? И если физик верит в то, что скорость света это предел, но вместе с тем разум его совершает такие вот «прыжки», то не значит ли это, что физик здесь подобен идеалисту?

Похоже, Стивен Хокингс атеист. И в фильме местами (среди тех фрагментов, что я смотрел) чувствуется, и даже почти настойчиво, преобладание именно этого мировоззрения. Например, голос за кадром начинает рассуждать об антропном принципе. Сначала он удивляется тому, что вот так все совпало, что и солнце и земля и законы физики нашей вселенной такие, что появилась жизнь и потом — человек… Все в том духе, может быть Бог «настроил»? Ну а потом ответ: но представьте себе что вселенных много, и каждая из них со случайными законами физики. Ну а мы наблюдаем ту, в которой могли возникнуть только мы. Слабый антропный принцип то-есть.

Здесь я задумался. Явно же, что Хокинг о чем-то другом говорит, когда говорит о Боге. То есть для него Бог не мыслится вне вселенной или вне законов физики. Вселенная — только она СУЩЕСТВУЕТ ИСТИННО. То-есть обладает истинным бытием. Разность в понимании проявляет уже где-то на уровне слов: СУЩЕСТВУЕТ, БЫТИЕ. Для христианина самостоятельным БЫТИЕМ обладает только Бог (Яхве — Сущий) и БЫТИЕ здесь понимается как фундаментальная трансцендентность. В этом смысле вселенная получает объективность существования только в Боге. В фильме же это понятие как-то размыто до смысла — «подчиняется законам физики». То есть для физика (если он честный атеист), похоже, трансцендентны физические законы (которые, к тому же, познаваемы), и в этом его можно назвать где-то даже пантеистом. Не это ли имел в виду Эйнштейн, когда говорил, что «Бог не играет в кости»?

СУЩЕСТВУЕТ, ПРОСТРАНСТВО — сложно это все. В каком пространстве существует сознание?

Вопрос бытия можно поставить и так — что имеет объективную самостоятельную ценность? Поражающие своими размерами безжизненные (по крайней мере, в основном) просторы вселенной или сердце человеческое? И возвращаясь к мысленным межгалактическим «прыжкам» — разве человек не больше вселенной?

В фильме есть пафос человечества. Космические корабли, бороздящие просторы галактик. Перспектива увеличения жизни человека ( пригодится для межзвездных переходов!). И это вдохновляет. Но… Само-по себе это не ценно.

Что ценно? Что обладает истинной (самостоятельной) ценностью? Число живущих людей? А может, абсолютное знание? Думаю, мысль фильма в пределе (неосознанная мысль?), если нет места Богу — это желание получить абсолютную власть через абсолютное знание. Рай уже здесь — в этой вселенной. Человеческий рай. Гордая мысль.

Бог создал человека свободным настолько, что мы сами выбираем, где будет наше сердце. «Создал» — не в смысле биологической лаборатории или по Дарвину из обезьяны или… как-то по другому. Создал — это значит создал ИЗ НИЧЕГО. По-настоящему.

Как можно верить в человеческий рай? Человек пал. Мы живем в мире, который сломан. Об этом нам говорит, хотя бы совесть. И принципиально, от экспансии человека в космос, если она произойдет, человек не изменится. Тогда что же мы построим? Адам (а значит — все человечество) потерял рай через грех. И вернуть его можно, но разве через технику???…

Истина это не знание физических законов, это жажда правды и любви. Истина — то что является самоценностью. То что является истинным бытием. Это то, где твое сердце. Истина это Бог.

Христианин верит (а святые и опытно знают), что Бог есть Любовь. Чем сильнее любовь, тем больше и страдание. Так как в падшем мире все страдают, и даже животные, а Святой молится за весь мир. Но молитва и гордость не совместимы. Бог любит смиренное сердце, и Дух Святой обитает в смиренных сердцем. Господи Иисусе Христе, помилуй нас грешных!

И вот, насколько далеко от всего этого документальный фильм про вселенную, когда в нем говорится о Боге… Насколько разные: знание и Истина. Несравнимые вещи.

Думаю, что честная наука должна останавливаться на том месте, где она не может ничего сказать.

# Асимметрия добра и зла или о трансцендентности
std.hugeping
hugeping(ping,1) — All
2020-09-08 18:23:26


8 лет назад (пишу этот текст в 2014 году), когда мне было 27 лет, я начал в очередной раз задаваться главным вопросом. Кто я? Я нашел свои записи того времени, и решил сохранить некоторые из них. Точно помню, что одной из первых мыслей, которые меня поразили – было осознание асимметричности мира. Копирую текст без изменений…

Добро и зло. Это те два слова, которые так привычны и между тем смысл которых так неуловим. Кажется, что кристально-четкое понимание этих простых на первый взгляд категорий может помочь ответить на основной заветный вопрос – “зачем”?

И все-таки, обычно именно мировоззрение определяет то, каким образом воспринимается добро и зло, и (как обычно) эта подмена понятий происходит незаметно.

Изучение результатов запроса ‘что такое добро и зло’ к поисковой системе – увлекательное занятие.

И все же…

Понятия о добре и зле не существует (не может быть применено на себя или другого субъекта) без существования сознания (свободы воли).

Понятие добра первично. (Понятие абсолютного зла неопределено. Понятие абсолютного добра существует в религии.)

Понятия о добре и зле могут восприниматься не только как форма общественных отношений, но и как отношение к миру (Богу?) в целом.

Моральный релятивизм начинается тогда, когда осуществляется подмена понятий о добре и зле на понятие свободы воли.

Хорошо, я знаю, что вы уже наверное увидели (или увидите) очередную подмену понятий. И все же… Я делаю вывод, который сам по себе, как кажется мне, вполне объективен:

Добро и зло – асимметричны…

Они асимметричны так же, как, например, асимметричны процессы, стоящие за понятиями: “созидать” и “разрушать”.

… Каждый из нас, знает он об этом или нет, хочет он того или нет, делает свой выбор и этот выбор асимметричен, хотя бы в рамках человеческого сознания. А что есть человеческий мир, как не удивительная красота вселенной, отраженная в нашем сознании?

…Так что такое трансцендентность?

# Информационные следы или отцы и дети в кибернетической утопии
std.hugeping
hugeping(ping,1) — All
2020-09-08 18:22:32


// Изначально было опубликовано 13-08-2006

Когда то они были такими же как ты. Они искали, они любили, они чувствовали, они жили. Они не знали – что такое Смерть. Они не знали – что такое Время. В их мечтательных глазах отражались кроны сосен ныряющие в кристальное небо и рваная вата облаков. Но они проиграли. Теперь они – по другую сторону.

Не верь в их опыт – они просто разучились думать. Не верь в их мир – они сами ненавидят его. Не верь им – иначе ты проиграешь…

Манифест подростка

Возможно, приход Сети означает для нас доступность информации любого рода. Возможно, с приходом Сети мы обрели наше прошлое.

Интернет появился не так давно, и пока сложно сказать каков средний срок жизни информации в сети. Да, конечно, существуют утверждения, относительно срока в 2-3 года, но… в это сложно поверить. Я начал задумываться об этих вещах, когда анализировал ответы поисковых систем на запрос по моему имени и фамилии. Я выловил сообщения 97-98 годов, когда у меня и интернета собственно еще не было… А кроме того, существование подобных https://archive.org/index.php проектов также заставляет сильно задуматься.

История каждого из нас пишется в виде информационных следов. Эта информация доступна всем и как долго она будет существовать, прежде чем последняя копия затеряется в свободных блоках файловой системы, вообще говоря, не ясно.

Если срок жизни информации составит хотя бы 12-13 лет, значит ли это, что наши дети получат доступ к нашему прошлому? Нашему личному прошлому. Станем ли мы понятнее для них? Станем ли мы ближе? Какими будут отцы и дети в кибернетической утопии?

# emacs vs VSCode
std.hugeping
Peter(syscall,1) — All
2020-08-18 21:14:35


Тут на lor в новости о выходе новой версии emacs https://www.linux.org.ru/news/gnu/15850869 было много комментариев о том, какой же редактор круче. В основном, упоминался VSCode. Мне такие разговоры не близки, так как дело вообще не в "лучше". За VSCode стоит корпорация. Он работает на таких технологиях, которые сложно поддерживать и переносить. Мне этого достаточно, чтобы редактор перестал быть привлекательным. Но если он кому-то нравится, то почему я должен быть против?

Но вопрос на самом деле можно поставить по другому. Насколько _критичны_ удобства среды/редактора, чтобы считать их обязательными?

В общем, вместо долгих рассуждений, я просто оставлю это здесь:

https://twitter.com/rob_pike/status/1055632360606035968

Это Роба Пайка спросили в 2018-м, какой редактор он использует.

> Acme. But I do not expect others to use it.

Вероятно, и go писал в acme. А вы говорите... :)

# Lytdybr (чтение)
std.hugeping
Peter(syscall,1) — All
2020-08-03 20:35:10


Бытовые проблемы полностью захватили свободное время. Так что дневник пока пустует. Но писать о бытовых проблемах не хочется... Поэтому напишу про то, что читал в последнее время.

Дочитал вторую книгу трилогии "Задача трёх тел". Эту книгу начал читать довольно давно, ещё год назад. Написал её китайский автор Лю Цысинь о котором я почти ничего не знаю, кроме того, что он, похоже, довольно популярен и известен. Книга в жанре научной фантастики.

С одной стороны, книга именно в литературном плане не очень меня захватила. Много, очень много персонажей имена которых в моей голове часто путались. :) Повествование растянуто на сотни лет. В общем, монументально. Я больше люблю местечковое, личное. Ну, короче, романтическое. А тут всё жёстко.

С другой стороны, в книге масса идей и размышлений в лучших традициях НФ. И это захватывает. Вот так и читаю не спеша.

В качестве примера. В первой книге есть момент, который я часто представлял себе раньше: учёные обнаруживают, что на каком-то этапе законы физики перестали подчиняться логике. Вселенная оказывается непознаваемой. Но (к сожалению?) в книге потом даётся рационалистический ответ на то, что происходит на Земле. Не буду спойлерить. Надеюсь, я вас заинтриговал. :)

Похожий интерес я испытывал когда читал "Четвёртый ледниковый период" Абэ Кобо. Взять хотя бы момент, в котором ЭВМ моделирует человека, который был убит и его спрашивают о том, кто убийца:

> Стараясь подавить волнение, я обращаюсь к машине:
> - Можешь отвечать на вопросы?
> Короткая пауза. Затем слышится слабый, но отчетливый ответ:
> - Кажется, да. Если вопросы будут конкретными.
> Голос совсем живой, и я немного теряюсь. Словно в машине спрятан
> настоящий человек. Но это всего лишь электронная схема. У нее не должно быть
> ни сознания, ни воли.
> - Тебе, конечно, известно, что ты умер?
> - Умер? - испуганным, задыхающимся голосом шепчет формула внутри
> машины. - Я умер?..
> Нет, это ужасно. Я в страхе бормочу:
> - Ну да... Конечно...
> - Вот, значит, как... Меня все-таки убили... Вот оно как...

Жутко. Фактически, мы тут видим ситуацию, прохождения теста Тьюринга. Но всё-таки, это всего-лишь программа? Или уже нет?

Ещё немного почитал на тему "Большой проблемы сознания". На этот раз по наводке с вики немного почитал Дэвида Чалмерса "Сознающий ум". Но пока бросил. Пенроуз (Новый ум короля) нравился больше. Хотя, может быть просто состояние пока такое -- не до философии. Кстати, обратил внимание на то, что часто акцент ставят на квалиа, но совсем мало (или вообще никак) -- на сам факт существования феномена "я-ты". Был такой еврейский филосов Мартин Бубер, я его читал в студенчестве, и он этой теме уделил целый труд. Вообще, в очередной раз заметил, что многие люди вообще не замечают проблемы. Хочу как-нибудь написать на эту тему. На пальцах, для себя даже. Но не сейчас.

> Некоторые говорят, что сознание — это «иллюзия», но я даже плохо понимаю, что это могло бы означать. Мне кажется, что наша уверенность в существовании сознательного опыта превышает нашу уверенность в существовании чего-либо еще в мире. Временами я изо всех сил пытался убедить себя в том, что в действительности тут ничего нет, что сознательный опыт пуст, есть всего лишь иллюзия. В таком представлении есть нечто соблазнительное, и философы разных эпох пытались обыгрывать его, но в итоге подобная картина совершенно неудовлетворительна. Я ощущаю оранжевое, погружен в это ощущение, и что-то при этом происходит. Здесь есть что-то, что нуждается в объяснении даже после того, как мы объяснили процессы различения и действия, и это что-то — переживание.
> ...
> Эта книга может представлять интеллектуальный интерес для тех, кто думает, что здесь нет особой проблемы, но в действительности она предназначена тем, кто нутром ощущает эту проблему.

Потом, прочитал книгу про создателей Doom. Удивительно забавная и поучительная книжка. Всё о старых добрых (хотя, с какой стороны посмотреть) хакерских временах. Теперь стало понятно, почему Keen так сильно не похож на Dangerous Dave. :) Но не буду спойлерить, почитайте сами: (Masters Of Doom). В сети есть перевод на русский.

Вообще, я думал я почти не читаю. Оказывается, что-то всё-таки читаю. Чего всем желаю, эскапизм в хорошем смысле этого слова.

# Игровая индустрия: за пределами алгоритмов
std.hugeping
Peter(syscall,1) — All
2020-05-23 10:00:29


Пока писал игру на pico-8 часто смотрел на другие игры. Заглядывал в discord чат любителей pico ну и так далее... И всё это время у меня зрела мысль, которая, с одной стороны, очень субъективна. Но с другой -- она зреет уже не первый год. А что такое блог как не высказывание субъективного мнения? Я лично верю, что мысль верная, а вы -- уже сами разбирайтесь, соглашаться со мной или нет. Поехали.

В общем, мнение моё такое, что разработчиков pico-8 (многих из них) укусила та же муха, которая ранее укусила и других инди разработчиков. Что это за муха? Большинство gif-роликов демонстрашек с новыми мграми содержат в себе технические изыски. Травка шевелится, реальная физика, спецэффекты с частицами и прочее и прочее... Когда я смотрю на игры, я вижу там то же самое. Упор на физику и эффекты.

Я отчётливо помню момент, когда все повально стали переходить на Box2d. Да, тогда это казалось невероятно крутым: вместо аркадной физики смотреть на "настоящую" -- испытывать восхищение от разваливающихся пирамидок. Помню игру, когда человечек бежит от вихря (или чего-то подобного), стулья переворачиваются, что-то летает, крутится... Так вот, это всё ничего не стоит само по себе. Часто, за простой картонной, аркадной, ненастоящей физикой скрывается увлекательный процесс, а переход на "настоящую" физику его разрушит. Представьте себе тетрис в котором фигуры падают под действием силы тяжести, при падении они отскакивают от пола, вращаются плавно с частотой 60-fps. Могут ломаться. Бред. Тетрис -- это тетрис! Марио. Пакман. Арканоид! Да, что то иногда можно получить интересное из этого подхода, но это скорее исключения. Наоборот, пониженная свобода в играх (например, хождение только под прямыми углами) часто обусловлена игровой логикой.

Эффекты. Сами по себе они не плохи и не хороши. Но их значение переоценено. В большинстве случаев мне плевать на то, шевелится трава или нет. Если я захочу посмотреть на траву, я могу выйти на улицу (но не сейчас :) или посмотреть её на youtube. При этом, эффекты иногда настолько гипертрофированы, что мешают играть. Часто вижу ролики, где непрестанно всё взрывается, трясётся, разлетается. Зачем? Это делает игру интереснее? Тем более, если это игра на pico-8. Я запускаю игру 128x128 ради эффектов?

Так вот, от pico-8 я ожидаю простоты, которой почти не осталось. К счастью, многие авторы (возможно, из-за отсутствия опыта) всё ещё пишут простые игры.

Короче говоря, я снова и снова настаиваю на том, что в игре (как и в любом произведении) важнее всего идея, настроение, атмосфера. И это всё очень косвенно относится к эффектам и физике. Можно сделать очень простую, но увлекательную игру, буквально с физикой по знакоместам. Или очень красивую, но пресную.

Свою игру я начал писать просто с неба и облаков. Я не знал, что игра будет про самолётик. Про брата-полярника. Всё, что было в голове -- облака, парящие над бескрайней Землёй, чувство путешествия и затерянности в большом мире. И надежда на возвращение домой. Поэтому в игре появился жалкий самолётик, под которым проносится бесконечные пейзажи, и брат на льдине. И стрелять ни в кого нельзя.

Можно упрекнуть меня в том, что я нахваливаю свою игру. Ну, может быть. Но я просто описываю то, что знаю точно. В большинстве игр я не вижу никакой идеи, никакой атмосферы. Но отличное техническое исполнение. Только это исполнение оторвано от того, что происходит за кадром. Да, я субъективен. Но это мой блог, я должен был это написать. Когда-нибудь. :)

Да, можно привести в качестве примера игры, завязанные целиком на механику. Те же рогалики. Что же, на мой взгляд и рогалик становится интереснее, если за ним стоит история и атмосфера чего-то большего, что остаётся за пределами алгоритмов.

# Вернуться в детство с PICO-8
std.hugeping
Peter(syscall,1) — All
2020-05-21 07:47:18


Я тут снова выпал из жизни на 4 дня. В этот раз написал игрушку на PICO-8. Мне немного стыдно, что я как бы "предал опенсорц". Потому что до этого я игрался c TIC-80 -- опенсорс аналогом. Но... Я не выдержал и купил-таки PICO-8. Закрытый софт. :)

TIC-80 классный. Но в PICO-8 подкупает минимализм, дальше которого уже просто некуда. Кроме того, кажется, он более продуман в деталях. То-есть, в нём вроде всё проще, но ничего не хочется менять.

Палитра - фиксированная, но цвета выбраны очень удачно.

Язык - один Lua (в TIC-80 -- три), но его достаточно и он сдобрен приятным синтаксическим сахаром, который смотрится очень гармонично.

PICO-8 сразу экспортирует бинари для всех поддерживаемых платформ: Win, Lin, OS X, Малинка...

Картридж в пико может быть сохранён в виде png.

Формат картриджа (если не png) это plaintext! Я могу поправить форматирование прямо в емакс!

Экран - 128x128. Меньше -- нельзя. Но 128x128 хватает, даёт возможность сразу "стартовать". И главное - он квадратный! Не надо выбирать, просто пишешь. В тико - бОльшее разрешение и 4:3 экран.

По началу пугался среды в 128x128 но, оказалось, всё круто. Привык и даже емакс не использовал. :)

И главное! За эти 4 дня - как в детство вернулся. Просто берёшь и пишешь. Всё просто. Очень много фана получил.

Короче, если что, зацените: https://instead.itch.io/aa

# Фидбек как необходимость
std.hugeping
Peter(syscall,1) — All
2020-05-11 19:15:59


На "Архив" я получил довольно много фидбека. Причём, в разной форме. Несколько покупок, письма, комментарии... И это очень, очень помогает!

Так вот, на волне поднятия энтузиазма я отчётливо осознал, что фидбек для меня нужен не для того, чтобы потешить своё эго, получив похвалу. А в том, чтобы понять -- а нужно ли вообще то, что я делаю?

Со стороны это может казаться странным, но уверенности в этом я никогда не испытывал. Когда нет уверенности в востребованности, сложно что-то делать. Кажется, что лучше потратить условно свободное время на какие-то полезные дела. На работе ты работаешь, чтобы кормить семью. Вопросов тут нет. Отдыхаешь для того, чтобы отдыхать. :) Тоже понятно. А творчество, если оно делается в стол, конечно, тяготит. Если ты не графоман, конечно. (Надеюсь, что я не он.) И вот, вроде и сочинять интересно. Но думаешь, а нужно ли это кому-нибудь? Контакта то нет с аудиторией. Музыкант школьной группы видит зал, а тут ... даже не знаешь, попало ли?

В этот раз фидбека уже почти накопилось на то, чтоб начать делать полноформатную историю. Не знаю, решусь ли на это, конечно. Но факт остаётся фактом, я снова чувствую в себе силы переть напролом. :)

Так что, закрываю страницу на позитиве. Спасибо!

# Бегство в детство
std.hugeping
Peter(syscall,1) — All
2020-05-10 18:48:33


В детстве, когда я видел по телевизору странный мультфильм (например, Ёжик в тумане), я не мог понять -- зачем они их делают? Другое дело -- Том и Джерри в видеосалоне!

Потом странные фильмы: Сталкер, Солярис и подобная "муть".

А потом вдруг всё это оказалось гораздо ближе к детству, чем казалось в самом детстве. Перечитал сказки Козлова. Пересмотрел Сталкера. Как так? Может быть это потому, что детству не нужны эти костыли. А вот взрослому без них прикоснуться к вечному -- невозможно? Интересно только то, что в детстве -- психика проста и целостна (ну, так кажется). А во взрослом возрасте -- наслоение на наслоении и куча заплаток. Странно это всё.

Хотя, я однобоко смотрю. Я предполагаю что детсво -- более совершенное состояние. А с этим точно можно поспорить.

Сейчас просто по Культуре идёт Солярис. Я его никогда полностью не смотрел в сознательном возрасте, очень захотелось это сделать.

# АРХИВ: за кадром
std.hugeping
Peter(syscall,1) — All
2020-05-10 08:37:39


Подобные статьи часто называют "постмортем". А я не буду. Слово не
нравится. У него мрачный посыл. Пусть лучше игра живёт. :)

Когда я ещё писал "Архив" у меня возникла идея статьи, в которой я
написал бы как вообще трансформировался сюжет во время написания кода. Так
как мне самому было интересно следить за этим процессом. Сейчас, когда
игра уже написана, делать это уже не очень хочется. Но всё-таки, я
решил написать небольшую заметку, содержащую некоторые факты об игре.

Внимание! В статье жестокие спойлеры! Статью стоит читать только если
вы прошли игру или не планируете делать этого.

Обычно я создаю игру отталкиваясь от настроения или сцены. Не особенно
заботясь о самой игре. Настроением Архива было чувство единения
времён. "Если есть шаг -- должен быть след."(c) или "И никому нет
конца, даже тем, кто не с нами."(c). Я даже думал поместить эти
строчки в качестве эпиграфа, но не стал.

Чувство единения времён, объективного существования всех нас прошлых и
будущих. Но в то же самое время, эта вечность стоит на грани конца
времён. Представлял я это всё как место, в котором хранится
весь радио эфир. То-есть, мне казалось, что пилот попадёт на какую-то
планету, где он сможет изучать радиоэфир всех времён и это поможет ему
как-то в сюжете. Потом, он свяжется с родными и так далее... Кстати,
эта идея игры возникла на обломках другой ненаписанной игры. В которой
корпорация SkyJump провела неудачный эксперимент по прыжкам... Но этот
сюжет завял и я решил использовать часть наработок.

Когда я начал писать сцену с переходом, стало понятно, что это место
должно находиться не просто где-то, а в самом
гиперпространстве. То-есть, в игре гиперпространство играет роль
настоящего мира в котором наш мир выглядит как на ладони -- со всеми
своими событиями и временами. Но как быть со свободой воли? Свобода
воли и отсутствие времени плохо соотносятся друг с другом, по крайней
мере мы не можем это логически осознать. В игре есть момент, когда
герой затрудняется с ответом, что именно есть Архив?

Первоначально, всё должно было быть в чёткой sci-fi стилистике. Я
представлял себе монолитные башни, забитые странными футуристическими
механизмами. Одновременно красивая, но и жутковатая картина. Однако,
когда я начал писать код планеты в гиперпространстве, то вспомнил
сериал "Потерянная комната". Где обычные предметы имели необычные
свойства. И я понял, что вот оно! Идея была в том, что наш мозг не
способен осознать подлинные события в гиперпространстве, однако,
какую-то проекцию -- может. Об этом нам сообщает хранитель Архива. В
игре мы с одной стороны наблюдаем конец времён. А также тот факт, что
всё уже было и прошло (компьютер - данные). С другой - по прежнему
проявляем свободу воли (телефон - связь с людьми).

Кстати, я долго думал над тем, какие именно предметы будут в
башне. Мысль крутилась вокруг зеркала (например, кладём осколки, а в
зеркале видим целый объект). Это мне дочка подсказала. :) Но зеркало
как-то не хотело вписываться. Тогда я начал просто писать код и когда
дошёл до подвала... Старый компьютер в тёмном подвале! Вот же оно!

Да, я был очень захвачен этим сюжетом. Писал взахлёб, с любопытством
ожидая, что же будет дальше? Давно не чувствовал такой радости от
творческого процесса. Несмотря на то, что игра совсем недлинная, она
довольно сильно вымотала меня.

В этот раз я настроился на критику позитивно. Я старался, по крайней
мере. Но, видимо, я очень эгоистичен и горд, потому что моральный
дискомфорт от критики я по прежнему испытываю. Поэтому в этот раз, да
и на будущее, я решил не просить тестировать игру конкретных людей,
если только сам человек не предложит свою помощь. После релиза я
принципиально не просил никого играть в мою игру. Так что, если вы
испытываете дискомфорт от игры, просто закрывайте её! Нет никакого
долга в том, чтоб любой ценой пройти её через не хочу ради
"долга". Это демотивирует гораздо больше, чем просто негативный
отзыв.

Несколько забавных фактов из мира игры.

1) На самом деле Димидий - газовый гигант, а не планета земного
типа. Только один человек сообщил мне об этом и я не стал ничего
менять.

2) Зерно - остаток от загадки которую я выключил. Суть её была в том,
что при снятии скафандра гг начинает чувствовать себя плохо. Он
слабеет, не может передвигаться по кораблю (в люк из трюма). Съев
пшено, он "выздоравливает". Убрал -- так как хотел меньше концентрации
загадок на единицу площади и больше "созерцательности".

3) Дерево возникло спонтанно. Мне нужен был хитрый способ
перемещений. Телепортатор или что-то такое. Но когда появились
предметы, дерево стало очевидным решением. Вообще, люблю деревья. :)
Кстати, дерево в игре (да и по сюжету) -- одно. Вы можете положить на
локации предмет, пойти к другому дереву и он там будет.

4) Имя Хуан взято из новости на opennet.ru про разработчика Void Linux.

5) "Всполохи гиперпространства" появились в тексте ещё до того, как я
начал рисовать (кстати, эта игра первая, нарисованная мной в
цвете). Когда стали появляться картинки, я понял, что всполохи - то,
что нужно! Эти разноцветные разводы неба -- своего рода визитная
карточка всего настроения игры.

6) Концентрация атмосферы игры, на мой взгляд, это корабль в пшеничном
поле. Именно поэтому я оставил этот кадр и на титры.

7) Старику можно попробовать сказать "да" и это может вас рассмешить. :)

8) В моих играх я обычно делаю бегущие титры. Но не в этой. Я сделал
это специально. Не спрашивайте меня почему.

9) Олегус сказал, что окна бывают узкие или толстые, а узкие и
одновременно толстые -- не бывают. Я исправил. А потом (вот она
упёртость) вернул назад. Потому что окна бывают: узкие (ширина),
широкие(ширина), высокие(высота) и толстые(глубина). Потому что когда
я читал текст, он мне не нравился без "толстых" окон. :)

10) В корабле специально нигде явно не указывается о наличии или
отсутствии гравитации.

Ну вот, пожалуй и всё. Архив уходит в архив. Спасибо за отзывы,
поддержку и игры. Надеюсь, вам интересно так же, как и мне. :)

# Тишина
std.hugeping
Peter(syscall,1) — All
2020-05-08 18:31:05


"Сдал" игру. Вроде бы прошло в этот раз нормально. Многим понравилось. Хотя, конечно, игра коротковата. Но и в таком объёме я её еле потянул. Конечно, музыка сильно улучшает общее впечатление, поэтому можно сказать, что игра написана в соавторстве. А ещё точнее, я просто дал повод написать Саше музыку. :) Это здорово.

На лоре почти не было хейтеров. Но общаясь в сети я в очередной раз заметил, как мы всё-таки любим навязывать свое эго. Говорю, конечно, и о себе. Даже, может быть, в первую очередь. Тон сообщений часто задаётся таким образом, чтобы оппонент понял насколько он в принципе презираем.

Конечно, за собой я это заметил давно, и пытаюсь не распространять такую агрессию. Настолько, насколько это возможно. И дело тут не в том, чтобы сдержать себя, а в принципе понять, что за этой агрессивной манерой стоит однозначное зло. В умиротворённом состоянии человек не будет пытаться растоптать другого. Вообще, научиться уважать чужую свободу -- не так то просто. Если по честному это делать.

В общем, надо искать тишину. И пусть всё идёт своим чередом.

# Из интервью с Робом Пайком
std.hugeping
Peter(syscall,1) — All
2020-05-04 11:39:47


https://evrone.com/rob-pike-interview

> Evrone: Imagine that you have an opportunity to travel back in time
> and give only one piece of advice to your younger self, at around the
> time you’ve started to design the Go language spec.
> What advice would you give to yourself and your colleagues?

> Rob: That's easy: Ignore the haters. Just listen to the voices that understand
> and share your goals; they're the ones to care about. Not everyone agrees
> with what you're doing, and that's OK. But those who engage in advancing what
> you're trying to do can be a fantastic source of ideas, energy, and inspiration.

> We will always be thankful to our passionate community.

Отличный совет :)

# Lytdybr (писатель Геннадий Алексеев)
std.hugeping
Peter(syscall,1) — All
2020-05-04 08:24:57


Не пишу, так как занят игрой. Год не писал, а сейчас вспомнил, как это
все-таки здорово! Ещё один сюжет, мир в голове. Эти вымышленные миры
меняют меня, да и лечат. Особенно сейчас это стало заметно. Может
быть, после выпуска игры напишу статью. Так как сюжет удивительным
образом трансформировался прямо на глазах.

По наводке жены натолкнулся на интересного писателя, Геннадия
Алексеева. Почитали вчера немного:

> Бывают минуты,
> когда душа разрывается на клочки.
> Их собираешь,
> кое-как склеиваешь
> и ходишь с такой душой –
> ведь новую–то
> нигде не достанешь!
> Но снова нахлынут роковые минуты,
> и снова душа разлетится в клочья.
> И снова,
> сопя от усердия,
> склеиваешь свою непрочную душу.
> Так и живешь.

Посмотрел, есть дневники у него. Думаю -- почитаю! Но снова встал
интересный вопрос, нормально ли читать дневники ушедших людей?
Затолкал вопрос подальше и открыл книгу в emacs fb2 (оказывается, это
совсем просто!), поискал в тексте слова: Христос, Бог. Выборочно
прочитал.

Как и в случае с дневниками Тарковского, увидел поиск.

> Служить добру или стать над добром и злом?
> Христианство и проблема добра и зла.
> Апокалипсис – торжество зла, но после вечное царство добра.
> Добро как символ жизни и зло – как смерть.
> Добро – условие существования человечества.
> Абсолютность добра и зла. Где критерий абсолютности?

Или вот:

> Толстовское богоискательство мне понятно.
> Толстовское «опрощенство» мне претит. Опроститься нельзя.
> Если уж ты не прост, простым не станешь.
> И это тоже от Бога – быть сложным. Надо иметь мужество и силы,
> чтобы нести этот крест.

Много интересных цитат, которые я не привожу тут. Интересные не
потому, что я чувствую так же (далеко не всегда). А потому, что
вопросы то, те же самые! В очередной раз вижу путь человека, которому
было не всё равно.

> Мой пессимизм от атеизма. Но – атеизм мой от пессимизма.
> Печалюсь я оттого, что мир плох. Печалюсь и оттого, что нет мне
> места в этом плохом мире.

А потом:

> Забавно, что нынешние атеистические доводы против Христа не идут
> дальше слов смеявшихся под распятием фарисеев: «Других спасал,
> а себя самого не может спасти. Если он царь Израилев,
> пусть теперь сойдет с креста, и мы уверуем в него».

Может быть, почитаю полностью, но пока не решил. Иногда кажется, что
какой смысл повторять это всё? Но такие "знакомства" всегда радуют.

P.S. Кто-то написал отзыв на Вахту. Ну и на Лидию, за одно! Спасибо
тебе, добрый человек, за поддержку. :)

# Личное и общее на примере конфликта в проекте Void Linux
std.hugeping
Peter(syscall,1) — All
2020-04-27 07:53:16


Прочитал очередную новость о конфликте основателя проекта с сообществом
разработчика.
https://www.opennet.ru/opennews/art.shtml?num=52809
Основатель Void Linux покидает проект.

Не первая подобная новость. Ловлю себя на мысли, что в подобных
историях, даже не вникая в суть происшедшего, моя симпатия и
сочувствие целиком на стороне человека, у которого не выдержали нервы.

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

Но в таком режиме долго работать тяжело -- наступает выгорание. От
недопонимания, от постоянных поисков компромиссов, от траты своих сил
на бесполезную в плане творческого процесса рутину. Постепенно
творчество (движение в сторону личного идеала или красоты)
превращается в войну с коллегами, которые пытаются спустить
мечтателя на землю, думая что делают благо для проекта.

Правда, и здесь есть диалектика. Творец один часто неспособен сделать
что-то сложное, ему нужна помощь. Сообщество, как коллектив
единомышленников нужно, чтобы развивать проект. Но только вот
единомышленники -- это друзья. Часто мы видим сообщества друзей?
Очень редко.

Поэтому, я очень субъективен. На мой взгляд, создать что-то хорошее и
уникальное возможно только в режиме абсолютной личной диктатуры
творца. В основе большинства интересных проектов лежит личность (не
всегда психически нормальная, кстати). А дальше - как повезёт. Или
вырождение в унылое усреднённо "хорошее", или ... дальнейшее горение
творца (пока может).

Конфликт общества и "гения" не заключается лишь в "непонятости".
Он заключается в конфликте общего и личного. Конфликте между
целесообразностью и красотой (которую прибором не измерить).

Я намеренно заключаю слово "гений" в кавычке, потому что речь тут не
об интеллектуальном превосходстве, а в некоторой психологической
особенности. Назовём ее увлечённостью, одержимостью, эмоциональным
сродством с работой. Или даже инфантильностью.

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

"Давай, Хуан! Покажи им! Уделай их всех!".

# Цифровое рабство
std.hugeping
Peter(syscall,1) — All
2020-04-25 11:12:46


Вчера, после перерыва в несколько лет, снова удалось джейлбрейкнуть
наш старенький Ipad Air 2. Использовал для этого checkra1n.

Как только получил root по ssh, накатила такая технарская
радость. Мол, вот -- наконец-то вернулось устройство ко мне. Ну, с
возвращением. Поставил сразу туда INSTEAD - работает! Хотя последние
годы собирал его вслепую, на какой-то древней виртуалке...

Мне раньше нравилась техника Apple, но золотая клетка все-таки
опротивела. Без джейлбрейка устройство словно бы не принадлежит
тебе. Похоже даже не на аренду, а на предательство,
измену. Противно. Чтобы разрабатывать своё ПО и ставить его на свой же
аппарат я должен иметь лицензию! Такое безумие поддерживать не
хочется.

Правда, к этому идут и другие производители. Мой Xiaomi, предатель,
показывает мне рекламу и я не могу ничего с этим поделать. Разве что,
попробовать перепрошить его. На что нужно ещё решиться.

А ещё, иногда мой телевизор включается по ночам сам и что-то
делает. Я очень надеюсь, что он просто ищет новую версию прошивки или
нечто подобное. Но, честно говоря, когда это происходит в 2 часа
ночи, в полнейшей тишине -- выглядит зловеще. Хоть игру пиши.

Ко всему этому, недавно я стал понимать тех, кто заклеивает камеры на
ноутбуках изолентой. Раньше это казалось проявлением чудачества. Да и
скрывать мне нечего. Смотрите, пожалуйста! Но когда однажды в Lenovo
ThinkPad включился огонёк камеры (камера была заблокирована в BIOS) --
я рефлекторно закрыл её большим пальцем. Несколько дней я не мог найти
себе места, пытаясь объяснить как это возможно. К счастью, скоро
камера перестала работать -- usb кабель начал отходить где-то
внутри. Я вздохнул с облегчением - отходящий кабель мог быть причиной
внезапного включения камеры. Но осадочек то -- остался!

# Карантинное
std.hugeping
Peter(syscall,1) — All
2020-04-23 14:04:30


Шутки шутками, но карантин реально показывает, кто на самом деле
интроверт, а кто -- прикидывался. Я, кстати, прикидывался. Только
наоборот.

А теперь вот ловлю себя на мысли, что так бы и сидел в закупоренной
квартире с семьей. Прогуливался бы на балконе, запасался бы продуктами
online, писал бы игры и работал бы без лишних личных контактов...

Жаль, что всё это связано с такой напастью. Про саму ситуацию думать
лишний раз не хочется. Это как с любыми стихийными бедствиями и
политикой. Можно только остерегаться.

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

Ну и политические. Бедняги, чем они живут? Страшно представить.

Кстати, в плане новостей старался всегда читать разное: rbc, ria, meduza,
gazeta. Считал что так манипуляции заметней. Как только начинаешь
регулярно читать один ресурс (к примеру - медузу) - всё, жёсткое
ощущение промывки мозгов.

А в последнее время стал в eww смотреть https://www.interfax.ru --
страница достаточно простая, и новости не так жёлто подаются. В общем,
нормальные новости без желтизны и истерик.

Блог постепенно учит писать без явного барьера "я - они". А, похоже,
именно этого мне сейчас и не хватает.

# Plan9 и ACME -- бескомпромиссная простота
std.hugeping
Peter(syscall,1) — All
2020-04-21 15:10:27


Вот манит меня plan9... Уже несколько раз ставил его в VirtualBox и
просто смотрел. Последний раз даже собрал golang.

Так вот, интерес мой заключается не в том, что у plan9 интересная и
чистая идея (тут можно смутно вспомнить про UTF-8, /proc, p9fs и
что-то там ещё), а в том, что plan9 даёт совершенно выносящий по
началу опыт.

То-есть, это бескомпромиссный удар под дых. Почва под ногами улетает
сразу. Да и крыша тоже. Такого со мной не было ни с одной ОС...

А ещё, там есть такой редактор как acme. В нём нет подсветки
синтаксиса, по исходному коду нельзя двигаться клавишами курсора
(только в пределах строки можно). В нём практически нет кейбиндингов,
без мышки работать невозможно. А текст может быть как текстом, так
пунктом меню или просто командой shell... Так вот, в этом редакторе
люди работали совершенно спокойно. Может быть, что и Rob Pike писал
golang в нём? https://usesthis.com/interviews/rob.pike/

Тут интересная аналогия с велосипедами, бритвами... да чем угодно!
Скажи вот кому угодно -- ты готов писать в редакторе, в котором нет
подсветки синтаксиса?

Q: Is there syntax highlighting?

A: No. The creator of main users of Acme find syntax highlighting
unhelpful and distracting.

Не знаю. Пока мой опыт говорит о том, что привыкнуть можно к чему
угодно. А раз так, то почему бы не предпочесть простоту?

http://fqa.9front.org/dash1.nothinkpad.pdf

# Выход в эфир
std.hugeping
Peter(syscall,1) — All
2020-04-19 18:22:50


Стал снова задумываться о своей самоидентификации. В широком
смысле. Наверное, свободное время на карантине дало эту
возможность. Совсем глубоко затрагивать тему не буду, но вот то, что
касается присутствия в сети -- захотелось как-то упорядочить.

Мне нравилось время ФИДО, потом нравилось время рассвета Живого
Журнала. Нравилась "Компьютерра". Нравился бум подкастов, и те,
которые были хороши и интеллигентны. Нравились каналы #irc. Нравилась
Фрязинский фото-клуб. Да и вообще, цифровая фотография, когда она
появилась. Так вот, сейчас всего этого нет. А то, что предлагается
взамен -- галимый полуфабрикат. Почему?

Но прежде отвечу на вопрос -- зачем? Зачем искать общения в сети?

1) Осознание, что ты не одинок. Ну это примерно, как когда ты читаешь
книгу, которая тебе безумно нравится, и находишь свои мысли у автора
книги. Ещё сюда можно добавить -- желание быть понятым.

2) Творчество. Не требует самооправданий. :)

3) Осмысленное написание длинных текстов -- часто помогает разобраться.

Ну так вернусь к вопросу, где это всё? Почему у меня нет ни малейшего
желания писать в vk? Искренне общаться на площадках типа dtf.ru?
Почему воротит от фейсбука?

Я хочу быть предельно (насколько это для меня возможно) честным.

Рассмотрим варианты ответа.

1) Раньше трава была зеленее... Да, наверное. Но что делать, если она
и правда БЫЛА ЗЕЛЕНЕЕ? Что меняет эта присказка? Она намекает на
изменившееся восприятие. Такую вещь сложно заметить изнутри. Так что,
это возможный ответ. Тогда, нужно или меняться самому, или уйти из
интернета -- забить. Но размениваться на лайки -- не хочу. Это путь
манипуляций и лжи. По крайней мере в моём восприятии.

2) Технологии. Централизация. Переусложнённость и тд. Да, это всё так, но
мне кажется -- это второстепенный вопрос. Да, технология -
второстепенна. Но тут есть хитрый момент. Дело не
в технологиях самих по себе, а в том, чему они служат. Ну например, во
многих соц-сетях есть режим, когда выше показываются посты не
руководствуясь датой их создания, а "интересностью". А это в свою
очередь означает возможность манипулировать.

3) Ориентация на коммерцию. Так вот, мне видится, что сегодня
технологии служат одному -- прибыли владельцев ресурса. Тут аналогия с
телевидением, с современным кино-производством и новостями... Кстати,
я тут пытался посмотреть Звёздные Войны последние... Ладно, это другая
история. В общем, я верю, что мне это не кажется. Я уже слышу
возражение -- так было всегда и это нормально!

Отчасти, соглашусь. Но только отчасти. Фидо - некоммерческая сеть. irc
серверы -- некоммерческие. Что касается коммерческих ресурсов,
вероятно, на заре Интернета они могли себе позволить человеческие
черты, но когда весь интернет был захвачен коммерсантами -- звериный
оскал стал необходимостью. Иначе - не выжить! Компьютерра закрылась --
помните?

В чём проявляется этот оскал? В том, что люди -- это ресурсы. Винтики
в матрице. Производители контента, который потребляется снова внутри
замкнутой системы социальной сети. Мысль можно развивать, но я не
буду. Нажми на кнопку -- получишь результат... Остальное - ложь.

Так вот, к чему это я?

Я делаю INSTEAD. Делаю странные проекты типа
https://metaparser.syscall.ru/ И наверное, многим нормальным людям это
непонятно и странно. Да и мне самому, это часто кажется странным. Чего
уж там. Но я всегда делал то, что был бы рад найти сам, но так и не
нашёл. Поэтому, я всё ещё надеюсь, что вопреки системы, "наших" людей
полно. Просто их не видно. Они рассеяны. Их умные посты всегда на
дне. Ну и всё такое прочее.

И тут я понял, что единственный путь это или уйти, или самому начать
делать контент! Даже, без надежы на победу. Но пафосно. :)

Я решил завести блог на IDEC, так как у меня есть много разрозненных
блогов. Но надо концентрировать сови усилия. IDEC - имеет прекрасный
формат для такого. Буду периодически высказываться на разные
темы. Что-то вроде текствого радио. Ну, просто потому, что надо что-то
делать!

До связи!