vak: (бэсм-6)
Покажу вам пару симпатичных картинок, случившихся за эти выходные.

(1) Народ из МГУ выложил исходники эмулятора дисплея VT-340. Был такой в 70-е годы, венгерского производства. Делался ещё для БЭСМ-4. Эмулятор написан несколько лет назад Николаем Макаровым-Землянским, светлой памяти профессором МГУ и большим энтузиастом БЭСМ-6. Сделан эмулятор на Паскале для Windows. За выходные мне удалось, с помощью молотка (Cursor), зубила (Claude Code) и какой-то матери, упинать эти исходники под Линукс и макОС. Далеко не всё там работает, но хоть дышит кое-как. Уже не потеряно для истории.

Исходники: besm6/vt340



(2) Не так давно Лёня [personal profile] spamsink  восстановил исходники легендарной игры Калах. Тексты на Паскале, и разобраться в них было непросто. А надысь посредством ИИ Лёня перепёр их на Си++. Я добавил гуи, и теперь можно играть, в том числе на линуксном палмтопе.

Исходники: besm6/kalah-ui

vak: (Путиномедвед)
Наблюдаю в ленте редкие возгласы, что день победы это святыня. Напомню, что придумал традицию победобесия лично Леонид Ильич Брежнев в 1965 году. До этого 9 мая был обычный рабочий день, без всякого официоза. При рашистах это дело развилось по самое не могу. Понятное дело: патриотизм - последнее прибежище кремлёвских мерзавцев.
vak: (Украина)
Сохраню текст для истории.
Ниже приведено краткое содержание видео под названием "Крупнейший удар Украины дронами ПАРАЛИЗОВАЛ Москву! Рейсы отменены, города в ХАОСЕ | Бен Ходжес", опубликованного 9 мая 2026 года.

В ночь на 8 мая 2026 года Украина нанесла массированный координированный удар с использованием 264 беспилотников, нацеленный на несколько регионов России. Время атаки было выбрано намеренно — накануне Дня Победы, важнейшего государственного праздника России, чтобы подорвать кремлёвский образ неуязвимости.

Атака охватила несколько стратегически важных точек:

Москва: В аэропортах Внуково и Домодедово были введены ограничения на полёты из-за приближения беспилотников к столице. Мэр Москвы Сергей Собянин сообщил о перехвате 26 дронов.

Ярославль:
Был нанесён удар по нефтеперерабатывающему заводу, что привело к пожарам и густому дыму. Это продолжает украинскую стратегию ударов по энергетической инфраструктуре с целью ослабления способности России финансировать войну.

Ростов-на-Дону: Критически важный логистический и командный узел южного фронта. Сообщалось о взрывах на заводе «Агропром Запчасть».

Грозный: Удар по столице Чечни рассматривался как психологическая атака против Рамзана Кадырова, демонстрирующая, что недосягаемых территорий больше нет.

В видео объясняется, что этот удар стал «зеркальным ответом» на отказ России соблюдать одностороннее прекращение огня, предложенное президентом Зеленским 4 мая. Пока Россия игнорировала это предложение, она одновременно требовала «тишины» на День Победы и угрожала массированным ударом по Киеву в случае срыва парада. Ответ Украины должен был показать, что эпоха, когда Россия была защищена от последствий собственных ударов, закончилась.

Одним из ключевых выводов стало то, что эти 264 беспилотника были в основном украинского производства, изготовленными на внутренних предприятиях, а не полученными из западных запасов. Такая самостоятельная ударная способность меняет «арифметику истощения», вынуждая Россию перебрасывать ограниченные ресурсы ПВО с линии фронта на защиту собственной тыловой инфраструктуры.

vak: (Украина)
Но только в указанном квадрате.

А Трамп решил, что он Путин, и объявил перемирие на три дня между Россией и Украиной. Всем пофигу, конечно, но сам факт смешной.

SDDL

2026-05-08 11:48
vak: (Знайка)
Новый язычок появляется для описания структуры файлов. Применяется для всяких сжатий данных. Вот пример.
record CatalogHeader() {
STAR0: Int32LE, # Subtract from star number to get sequence number
STAR1: Int32LE, # First star number in file
STARN: Int32LE, # Number of stars; <0 → coordinates J2000
STNUM: Int32LE, # ID scheme / name flag
MPROP: Int32LE, # Motion info: 0=none, 1=proper, 2=radial
NMAG: Int32LE, # Number of magnitudes (0–10)
NBENT: Int32LE # Bytes per star entry
}

record StarEntry(STNUM, MPROP, NMAG) {
when STNUM > 0 { XNO: Float32LE }, # Catalog number
SRA0: Float64LE, # Right Ascension
SDEC0: Float64LE, # Declination
ISP: Bytes(2), # Spectral type
when abs(NMAG) > 0 { MAG: Int16LE[abs(NMAG)] }, # Magnitudes
when MPROP >= 1 {
XRPM: Float32LE, # R.A. proper motion
XDPM: Float32LE # Dec. proper motion
},
when MPROP == 2 { SVEL: Float64LE }, # Radial velocity
when STNUM < 0 { NAME: Bytes(-STNUM) } # Object name
}

# File structure
header: CatalogHeader

# Parse the header to get the number of stars and entry parameters
STNUM = header.STNUM
MPROP = header.MPROP
NMAG = header.NMAG
NBENT = header.NBENT
record_count = abs(header.STARN)

expect sizeof(StarEntry(STNUM, MPROP, NMAG)) == NBENT

stars: StarEntry(STNUM, MPROP, NMAG)[record_count]
Описание здесь: openzl.org/sddl/getting-started/
vak: (Знайка)
1. People have exactly one canonical full name.
...
40. People have names.

Прикольный список заблуждений. Есть много в именах такого, что и не снилось нашим мудрецам. 😀
vak: (Робот 3)
Покажу уровень интеллекта нынешнего Claude Code.

На досуге рихтую редактор Notepad Turbo. Хочу добавить юнит тестирование текстового UI. Кто пользовался ncurses, знает, что проверить содержимое экрана та ещё морока. Здесь Turbo Vision: с ним маленько полегче, но тоже не сахар.

Даю задание Клод Коду:
Note: Turbo Vision has support for testing TUI classes. See build/_deps/tvision-src/test/tvision/teditor.test.cpp and other files in that directory as an example. Can we adapt this methodology for testing our NN classes? Please come up with a plan.
Через пять минут получаю детальный анализ кода и план разработки тестов для TUI классов. Запускаю на выполнение - через пятнадцать минут имею 11 тестов в трёх файлах:Сам бы я неделю возился.

Даю следующий запрос:
Many of our classes have Scintilla interfaces. Do we exercise these interfaces in unit tests? Can we learn something useful from existing Scintilla tests in thirdparty/scintilla/test/unit directory?
Получаю неплохой план, командую выполнять. Имеем ещё 35 тестов:
vak: (Аристипп)
Один крутой чувак повторил древний компьютер Apple Lisa на современной программируемой логике.

Подробности в блоге: https://lisalist2.com/index.php/topic,694.0.html

Lisa была мечтой Стива Джобса. В 1983 году такой компьютер казался фантастикой. Разработка была завершена, Lisa вышла в продажу, и... оглушительно провалилась. За эти деньги можно было купить четыре Макинтоша. Стива Джобса уволили.

vak: (Украина)
Россияне угрожают объявить Киеву войну в случае «движухи» на 9 мая.

vak: (Бодхидхарма)
Продолжаю штудировать статью "Disentangling Boltzmann Brains, the Time-Asymmetry of Memory, and the Second Law". Больцмановские мозги были только цветочки, а вот вам ягодки.

Авторы посвящают ключевую часть раздела 4 («Как и почему интуиция вводит нас в заблуждение») анализу того, почему наши воспоминания кажутся направленными исключительно в прошлое и на чём на самом деле основана эта асимметрия. Их рассуждение проходит через пять шагов и завершается поразительным выводом.

Память как физическая система

Авторы начинают с формализации памяти в физических терминах )
vak: (Бодхидхарма)
Подкину крышесносительной физики вам в ленту.

Представьте себе Вселенную, достигшую теплового равновесия — состояния максимальной энтропии, в котором материя и энергия распределены равномерно, и в среднем ничего интересного не происходит. Это долгосрочная судьба, предсказываемая для нашей Вселенной (иногда называемая «тепловой смертью»).

Однако равновесие не является полностью статичным. Статистическая механика говорит нам, что даже в равновесии постоянно происходят случайные флуктуации. Большинство из них малы, но при достаточно большом времени произойдут сколь угодно большие и маловероятные флуктуации. Подождите достаточно долго — и частицы случайно сложатся в любую конфигурацию, какую можно вообразить: стул, планету, галактику или…

Тревожная идея

мозг. Причём мозг, идентичный вашему прямо сейчас, со всеми вашими воспоминаниями, восприятиями, сенсорными сигналами и ощущением себя как личности, читающей этот текст. Такой мозг — возникающий как случайная флуктуация в остальном пустой равновесной Вселенной — называется «больцмановским мозгом» (BB), в честь Людвига Больцмана, который впервые обратил внимание на подобные рассуждения о флуктуациях в 1890-х годах.

Ключевая особенность: больцмановский мозг был бы субъективно неотличим от настоящего мозга. Он «ощущал» бы, что у него есть тело, «помнил» бы детство, «считал» бы, что живёт во Вселенной возрастом 14 миллиардов лет со звёздами и планетами — но всё это не было бы реальным. «Воспоминания» были бы случайными конфигурациями частиц, не связанными причинно с каким-либо настоящим прошлым.

Почему это проблема

Вот тревожный аргумент:
  1. Если Вселенная проводит чрезвычайно долгое время в состоянии (или близком к состоянию) равновесия, флуктуации, порождающие изолированные мозги, будут происходить бесконечно часто.
  2. Создание целой Вселенной с низкой энтропией — 14 миллиардов лет космической эволюции, приводящих к реальному мозгу на реальной планете — несоизмеримо менее вероятно, чем создание одного лишь мозга.
  3. Следовательно, среди всех наблюдателей, имеющих «ваш» текущий опыт, подавляющее большинство — это больцмановские мозги, а не результат космической истории.
  4. Из вероятностного аргумента самопозиционирования следует, что вы, скорее всего, являетесь больцмановским мозгом.
Это означало бы, что ваши воспоминания не отражают реального прошлого, ваши научные данные не фиксируют реальные эксперименты, а Вселенная, которую вы считаете наблюдаемой, не существует в том виде, как вы о ней думаете.

Почему это трудно отвергнуть

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

Второй ответ — «мы знаем, что второе начало термодинамики выполняется, значит, в прошлом энтропия была ниже» — тоже проблематичен. Откуда мы знаем второе начало? Из экспериментальных данных и воспоминаний. Но именно они и ставятся под сомнение: больцмановский мозг обладал бы идентичными (но ложными) записями. Использование второго начала для опровержения гипотезы BB является круговым рассуждением, поскольку сама вера во второе начало опирается на доверие к нашим воспоминаниям.

Связь с космологией

Проблема стала острее с развитием современной космологии. В пространстве де Ситтера (к которому, по-видимому, стремится наша ускоренно расширяющаяся Вселенная) вакуум обладает малой, но ненулевой температурой, а квантовые флуктуации вечны. Некоторые модели инфляции и мультивселенной предсказывают, что больцмановские мозги должны многократно превосходить по числу обычных наблюдателей — что многие физики рассматривают как reductio ad absurdum против таких моделей, поскольку теория, предсказывающая «вы, вероятно, больцмановский мозг», подрывает собственную эмпирическую основу.
vak: (Аристипп)
Arvutimuuseum публикует небольшой исторический архив материалов Volkov Commander.

В репозитории сохранены оригинальные архивные файлы, а также распакованные снимки исходных текстов для удобного просмотра. Сейчас в нем есть:
  • ранняя бинарная версия для справки, сохраненная как оригинальный ZIP-архив;
  • архив исходных текстов Volkov Commander 4.05 и распакованное дерево исходников;
  • архив исходных текстов Volkov Commander 4.99.09 и распакованное дерево исходников.
Оригинальные ZIP-файлы оставлены в репозитории, потому что они сохраняют детали, которые сам Git не хранит, включая исходные временные метки отдельных файлов. Коммиты и теги в Git датированы по временным меткам, найденным в архивах, а распакованные деревья исходных текстов добавлены для удобства.

Публикация сопровождается коротким историческим комментарием Всеволода Волкова. В переписке от 1 мая 2026 года он так описал происхождение Volkov Commander:

> Initially, the program was conceived simply as a joke: a tiny assembler
> program that looked like NC 3.0, whose only function was to list directory
> contents. Then, in my spare time, I added individual functions: copying,
> viewing, and so on. After a while, I had something usable. Moreover, on those
> PC/XT-class computers, the program ran significantly faster and took up less
> precious RAM. I began developing it for my own use. Other users noticed the
> program, and it began to spread around the world. Back then, it didn’t have
> its own name. Users came up with the name Volkov Commander.

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

https://github.com/ddanila/vc
https://arvutimuuseum.ee/ru/sw00006-3/
vak: (Знайка)
Про текстовый редактор Notepad замолвлю слово. Тоже ведь к ретрокомпьютингу относится.

В 1985 году вышел первый Windows 1.0, и в его составе редактор Notepad, заменивший наконец ужасный EDLIN.



Ничего умного тот Notepad не умел, и дожил в таком виде почти до наших дней. Только в 2023-м Микрософт стал добавлять некоторые полезные фичи.

В 2003 году один крутой француз решил, что неплохо бы Notepad всё-таки улучшить. Появился опенсорсный Notepad++, и набрал довольно таки приличную популярность. Но он был сделан только для Windows, и с выходом Visual Studio Code стал угасать.



В 2019 году другой крутой чувак предложил сделать это дело переносимым. Появился проект Notepad Next, умевший всё то же самое, но сделанный на базе Qt. То есть и для Linux и macOS. На днях в новостях мелькнула его новая версия.



Поглядел я на него - вроде по уму всё сделано. Только зачем мне GUI? Я в текстовом терминале живу. А давай-ка переделаю на текстовый интерфейс. Какой у нас есть хороший TUI фреймворк? Народ недавно старый знакомый Turbo Vision отрихтовал. Сказано - сделано. Claude Code изрядно попыхтел, но выдал вполне рабочую версию. Убрал все хвосты от Qt и дописал нужные куски для TVision. Мне пришлось только с цветовой палитрой покумекать. И не все фичи там ещё доступны (макросы, code folding). Но для проекта выходного дня очень неплохо.

Исходники здесь: sergev/notepad-turbo

edlin

2026-05-01 20:53
vak: (Аристипп)
Намедни в новостях промелькнуло, что Микрософт откопал и выложил в открытый доступ доисторические тексты 86-DOS, который позже превратился в MS-DOS. Там не так много, но среди прочего фрагмент EDLIN, текстового редактора той эпохи. То есть EDLIN старше чем сам MS-DOS.

У меня с детства слабость к текстовым редакторам. Никогда не приходилось пользоваться EDLIN, и я подумал, пора бы научиться. Но не ползать же по ассемблерным исходникам, выясняя фичи. Можно запрячь ИИ для благородной цели.

Я взял аутентичные исходники EDLIN, благо Микрософт открыл их два года назад в составе MS-DOS 4.0. Подсунул ассемблерные тексты Курсору и говорю: перепиши на современный Си11. Он пошуршал и переписал. Хорошо, говорю, а теперь изучи как оно работает и документируй. Тоже сделал. И тестами покрыл.

Вот вам готовый проект того самого EDLIN в современном переносимом виде. По сравнению с оригиналом я сделал два простых изменения. Добавил команду H (help), показывающую список команд редактора. И вместо ^Z как конец ввода разрешил просто точку, как в юниксном ed.
  • Репозиторий на Гитхабе: sergev/edlin
  • Руководство пользователя: Manual.md
  • Введение в EDLIN для чайников: Tutorial.md
Пример:
$ edlin main.c 
*93p
93: int main(int argc, char **argv)
94: {
95: char *path = NULL;
96: int binary = 0;
97: if (parse_invocation(argc, argv, &path, &binary) != 0) {
98: msg_ndname();
99: return 1;
100: }
101:
102: Editor ed;
103: editor_init(&ed);
104: ed.disp_rows = env_u("EDLIN_LINES", tty_rows());
105:
106: if (fileio_startup(&ed, path, binary) != 0) {
107: editor_free(&ed);
*_
vak: (Линукс)
Новый гаджет в моей коллекции: наладонник на современном интеловском процессоре. Начиналось как проект на Кикстартере, и успешно состоялось.



Пришёл девайс с предустановленным Windows 11 Pro. Стал я его настраивать, он целый час пыхтел, устанавливая обновления... После чего я всё снёс и поставил Linux.



Это тот же самый Pop!_OS, что я показывал давеча. На основе Debian, с гуями, написанными с нуля на Rust. Всё прекрасно работает: Wi-Fi, Bluetooth, звук, тачпад, тачскрин. Есть порты видео, USB, даже проводной Ethernet. Можно таскать с собой со всеми нужными линуксными тулзами.

Меряем скорость:
DureMark 1.0 Results
=======================
Iterations : 1000000
Execution Time : 7.8 sec
List Workload : 48.8%
Matrix Workload : 14.9%
State Workload : 36.4%
-----------------------
Total Score : 127809.10 DureMark
Статьи:
vak: (Путиномедвед)
Парад победы на красной площади решено проводить малыми группами, по 2-3 человека, короткими перебежками.
vak: (Default)
Для полноты впечатлений я переписал аквариум и на Rust. Заодно будет красивый пример приложения TUI с помощью пакета crossterm. Это один из аналогов curses в мире Rust.

Исходники: sergev/rustyquarium
vak: (Знайка)
ASCII-картинки это отдельное искусство. Один смешной чувак написал скрипт на Перле, изображающий аквариум с рыбками. Другой чувак перепёр его на Питон. Я же решил переделать на Go для простоты.

Исходники на Гитхабе: sergev/goquarium

vak: (Линукс)
Достал с полки старенький макбук пятнадцатилетней давности, поставил на нём последнюю версию Pop OS. Приятно взглянуть. Экранчик потёртый за годы активного ежедневного употребления, но всё в лучшем виде фунциклирует. Даже батарейка пару часов держит.



Чтобы заработал Wi-Fi, пришлось добавить "blacklist b43" в файл /etc/modprobe.d/blacklist.conf. Тогда загрузижается нужная версия драйвера Broadcom BCM4360.

Меряем скорость.
DureMark 1.0 Results
=======================
Iterations : 1000000
Execution Time : 9.6 sec
List Workload : 48.5%
Matrix Workload : 14.2%
State Workload : 37.3%
-----------------------
Total Score : 104591.67 DureMark