vak: (Кризис так себе)
Serge Vakulenko ([personal profile] vak) wrote2026-03-15 03:38 pm

Где-то в параллельном мире

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



+12 )
vak: (Знайка)
Serge Vakulenko ([personal profile] vak) wrote2026-03-15 02:26 pm

Новые книги на моей полке

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

C-Cxx-Programmers-Guide-to-Using-PC-BIOS



И вторая книжка: компактный справочник по биосу.

ny_quant: (Default)
ny_quant ([personal profile] ny_quant) wrote2026-03-15 02:51 pm
Entry tags:

post-exercise hypotension

В результате долгой беседы с чатгпт поставил себе такой диагноз, это в дополнение к умеренной гипертонии в остальное время. Чем это мне грозит так и не понял. Базовая версия - ничем. Но решил пойти поговорить с кардиологом, на всякий случай. Ровно ничего от этой встречи не ожидаю, но мало ли вдруг.
vak: (Робот 1)
Serge Vakulenko ([personal profile] vak) wrote2026-03-14 10:03 pm

Картинки с выставки

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

mark: A photo of Mark kneeling on top of the Taal Volcano in the Philippines. It was a long hike. (Default)
Mark Smith ([staff profile] mark) wrote in [site community profile] dw_maintenance2026-03-14 01:04 pm

Performing some traffic maintenance today

Happy Saturday!

I'm going to be doing a little maintenance today. It will likely cause a tiny interruption of service (specifically for www.dreamwidth.org) on the order of 2-3 minutes while some settings propagate. If you're on a journal page, that should still work throughout!

If it doesn't work, the rollback plan is pretty quick, I'm just toggling a setting on how traffic gets to the site. I'll update this post if something goes wrong, but don't anticipate any interruption to be longer than 10 minutes even in a rollback situation.

vak: (Линукс)
Serge Vakulenko ([personal profile] vak) wrote2026-03-14 03:05 am
vak: (Аристипп)
Serge Vakulenko ([personal profile] vak) wrote2026-03-14 01:50 am

Если открыть слишком много дверей, одна из них обязательно окажется дверью в беду

Многие играли в DOOM когда-то, но мало кто помнит, что там за история. Откуда взялись все те чудища и ужасы? Вот изложение от ИИ в стиле Шехерезады. К вопросу о целебном плове. 😀
...Я оказался на службе у великой корпорации UAC, чьи станции раскинулись на двух лунах Марса — на Фобосе и на его сестре Деймос. И скажу тебе, о терпеливый слушатель, что места эти были холодны и безжизненны, словно забытые стоянки караванов посреди каменной пустыни. Там не росла трава, не пели птицы, и лишь звёзды смотрели на нас с небес, как молчаливые свидетели человеческой дерзости. На этих лунах учёные — люди с глазами красными от бессонницы и умами острыми, как дамасские клинки — занимались делами столь странными, что даже старые мудрецы Самарканда покачали бы головами.

Они строили врата без дверей. И называли их телепортами.

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

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

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

Учёные говорили:
— Это ошибка координат.

Офицеры говорили:
— Всё под контролем.

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

Они открылись туда, куда не следует смотреть даже во сне. В ад.

И вот однажды мне приказали остаться снаружи базы на Фобосе.
— Стой на периметре, — сказали они. — Обычная тревога.

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

Я сидел долго. Холод Фобоса пробирался сквозь броню, как зимний ветер через щели старого караван-сарая. И тогда я понял: если я не войду внутрь, никто уже не войдёт.

Я поднялся. Взял свой пистолет — единственного товарища в ту ночь. И подошёл к шлюзу базы.

Дверь открылась. О слушатель мой, клянусь пылью пустынь и холодом далёких звёзд: лучше бы она не открывалась. В коридорах лежали мёртвые солдаты. Кровь их текла по полу тёмными ручьями, словно арыки в ночном саду. Лампы под потолком мерцали, как свечи в заброшенной мечети. А из глубины станции доносились шаги. Шаги существ, которых не рождала ни земля, ни небо.

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

И если ты спросишь меня, о внимательный слушатель, чем закончится эта история, я отвечу так: история ещё не закончена. Потому что в ту ночь, под холодными звёздами Марса, я сделал первый шаг — шаг прямо в ад.
vak: (Бодхидхарма)
Serge Vakulenko ([personal profile] vak) wrote2026-03-13 12:31 pm

Узбекский дум

Вы полагаете, игра DOOM это древний отстой? Однако увлечённые фанаты активно поддерживают его и развивают. К примеру UZDoom: опенсорсная реализация для всех трёх платформ: Linux, Windows и MacOS. Не просто аутентичное повторение, а с кучей современных ништяков: графика высокого разрешения, динамическое освещение, трёхмерные полы, моды, современные рендеры OpenGL и Vulkan. Легко собирается с исходных текстов.

Проект на Гитхабе: UZDoom/UZDoom

А где взять собственно файл игры DOOM.WAD? Легальный способ такой.
  • Купить на gog.com комплект DOOM + DOOM II за $3.99.
  • Получить оттуда файлы setup_the_ultimate_doom_1.9_(28044).exe и setup_final_doom_1.9_(28044).exe.
  • Установить распаковщик, к примеру на маке "brew install innoextract".
  • Распаковать эти файлы с помощью innoextract и извлечь оттуда:
    The Ultimate DOOM/DOOM.WAD
    Final DOOM/Plutonia/PLUTONIA.WAD
    Final DOOM/TNT/TNT.WAD
  • Положить DOOM.WAD и прочие в ~/Library/Application Support/uzdoom/, и при запуске игры выбирать нужный из них.


vak: (Аристипп)
Serge Vakulenko ([personal profile] vak) wrote2026-03-12 03:40 pm

Британские ретро геймеры и их ретро игрушки

Репортаж с ноябрьского ретро компьютерного фестиваля в Кембридже.

ny_quant: (Default)
ny_quant ([personal profile] ny_quant) wrote2026-03-12 02:54 pm
Entry tags:

Средневосточный покер

Во время полночной пресс-конференции бодрый Трамп озвучил причину войны. Ирану предлагали отказаться от создания ядерной бомбы, но те пошли на принцип и не согласились. Казалось бы, могли бы соврать, но нет, решили упереться. Ну и вот. Оккам подсказывает, что так оно и было. Это никак не противоречит тому, что Трампа подзуживали Нетанияху и МБС. А вот Вэнс не хотел, и это само по себе интересно, но решал не он.

Ну что ж, ставки сделаны. "I'll see you and I'll raise you" *

Наша стратегия: Мы их будем мочить с воздуха пока они не капитулируют. Или пока Трамп не объявит их капитуляцию и не закончит войну одним твитом.
Их стратегия: Пусть бомбят, мы потерпим пока у них не кончится терпение. Без экспорта заливной нефти мировая экономика протянет максимум несколько месяцев. Постепенно давление мировых лидеров и - главное - рынков заставит Трампа сдаться.

Важно, что США меньше всех зависят от арабской нефти. Количественно, нам и своей хватает, но наша нефть не той марки, они не то чтобы взаимозаменяемы, поэтому мы и экспортируем их нефть. Что можно сделать накрайняк я не знаю.

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

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

В краткосрочной перспективе, цены на нефть видимо продолжат расти.


I'll see your defective gallbladder and raise you one heart murmur and a kidney stone.
I'll see your gigabyte and raise you a terabyte.
green_fr: (Default)
green_fr ([personal profile] green_fr) wrote2026-03-12 07:24 pm
Entry tags:

Andrée Chedid, «Les quatre morts de Jean de Dieu»

Полочка 024/120. Выбор был достаточно сложным, ничего не бросалось в глаза. Засмотрелся было на талмуд о тысяче страниц под названием «Романы», неизвестного мне автора, но понял, что на такой подвиг я пока что не готов. Прочитал все четвёртые страницы обложки, выбрал в итоге эту книгу. Четыре смерти героя: первый раз он умер, когда после прихода к власти франкистов ему пришлось покинуть родную Испанию, и он постепенно потерял католическую веру, второй — когда рухнула берлинская стена, и ему пришлось пересмотреть свои коммунистические взгляды, третья смерть была тяжёлым инсультом, после которого его спасли, ну а четвёртая и последняя смерть была настоящей. Книга оказалась того же автора, что и «Романы».

Ожидаемого «семейного эпоса на фоне проходящего XX века» я не получил. То есть, формально да, всё так и есть, но внимание автора совсем не на внешних событиях, а только на внутренних переживаниях, которые как-то связаны с этими внешними событиями, но очень-очень по касательной.
Read more... )
vak: (Житель планеты Узм)
Serge Vakulenko ([personal profile] vak) wrote2026-03-11 10:31 pm

Серьёзный реверс инжиниринг

Был сегодня на тусовке, где один крутой чувак рассказывал про свою нетривиальную затею. Он взял плату логического анализатора HP Agilent 16717 и полностью восстановил её схему. Методом послойного ручного сошкуривания. Плата многослойная, конечно.

Вот пара внутренних слоёв с основными соединениями.



Изначальная плата:



Весь девайс:



Полную схему можно взять здесь: hp16717.pdf

Все файлы проекта: github.com/schlae/hp16717
vak: (Аристипп)
Serge Vakulenko ([personal profile] vak) wrote2026-03-11 11:19 am

В память Тони Хоара

Красивая визуализация трёх методов сортировки: пузырьковой, Шелла и быстрой.

Когда-то я умел воспроизвести сортировку Шелла за минуту по памяти - на Фортране. Помогало на студенческих олимпиадах по программированию.

vak: (Украина)
Serge Vakulenko ([personal profile] vak) wrote2026-03-10 12:20 pm
Entry tags:

Украина уничтожает российскую электронику

Говорят, по заводу «Кремний Эл» в Брянске прилетело десять ракет, все попали. Осторожно со звуком на втором видео: у аборигенов нецензурные эмоции.





vak: (Default)
Serge Vakulenko ([personal profile] vak) wrote2026-03-09 06:23 pm

Чем не флопик

На самом деле это флешка. Точнее корпус для NVMe накопителя.

ny_quant: (Default)
ny_quant ([personal profile] ny_quant) wrote2026-03-09 06:56 pm
Entry tags:

Anti-Citrini

Цитадель ответила

Скопирую лишь заключительный параграф. Выделения их.

For AI to produce a sustained negative demand shock, the economy must see a material acceleration in adoption, experience near-total labor substitution, no fiscal response, negligible investment absorption, and unconstrained scaling of compute. It is also worth recalling that over the past century, successive waves of technological change have not produced runaway exponential growth, nor have they rendered labor obsolete. Instead, they have been just sufficient to keep long-term trend growth in advanced economies near 2%. Today’s secular forces of ageing populations, climate change and deglobalization exert downward pressure on potential growth and productivity, perhaps AI is just enough to offset these headwinds. The macroeconomy remains governed by substitution elasticities, institutional response, and the persistent elasticity of human wants.
green_fr: (Default)
green_fr ([personal profile] green_fr) wrote2026-03-09 09:16 am
Entry tags:

Musée maritime et portuaire de Dunkerque

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

В музее текст иногда на трёх языках, иногда только на французском, но с QR-кодами для английского и фламандского переводов. Молодцы!

Прямо у входа в музей стоит якорь. Смотрите, говорит висящая рядом табличка, это британский якорь, британская компания Byers, британский город Sunderland. Этот якорь был на британском корабле королевского флота Великобритании. И таки да, ещё до Гитлера люди знали свастику — в разных культурах она обозначала удачу и вечность. Но нет, не помогло. Рьяные антифашисты со слабым пониманием сопромата всё равно попытались зацарапать свастику. В результате чего только привлекли к ней внимание :-)


Read more... )
vak: (Бодхидхарма)
Serge Vakulenko ([personal profile] vak) wrote2026-03-08 12:56 pm
Entry tags:

Время не вечно

Не перевелись ещё часы на земле калифорнийской? Ан нет, уже перевелись. 😀
vak: (Житель планеты Узм)
Serge Vakulenko ([personal profile] vak) wrote2026-03-07 01:55 pm
Entry tags:

circt-verilog

Попробовал я собрать симулятор Верилога от ИИ - увы. На маке сборка валится в конце, на нестыковке между Си++17 и Си++20. Какие-то проблемы в скриптах cmake, подозреваю. На Линуксе получилось собрать circt-verilog. Но это только фрондэнд от LLVM. А симулятор circt-sim не компилируется: недостаёт какого-то метода.
circt/lib/Dialect/Sim/Transforms/ProceduralizeSim.cpp: In member function ‘llvm::LogicalResult {anonymous}::ProceduralizeSimPass::proceduralizePrintOps(mlir::Value, llvm::ArrayRef)’:
circt/lib/Dialect/Sim/Transforms/ProceduralizeSim.cpp:213:33: error: no matching function for call to ‘circt::sim::PrintFormattedProcOp::create(mlir::OpBuilder&, mlir::Location, mlir::Value&)’
  213 |     PrintFormattedProcOp::create(builder, printOp.getLoc(), procPrintInput);
      |     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Искусство по прежнему в большом долгу...

Но фрондэнд давайте попробуем. Возьмём простой счётчик для примера:
module counter (
    input  logic       clk,
    input  logic       reset,
    output logic [7:0] count
);
    always_ff @(posedge clk or posedge reset) begin
        if (reset)
            count <= 8'b0;
        else
            count <= count + 9'd1;
    end
endmodule
Превратим Верилог в промежуточное представление:
$ circt-verilog counter.sv
module {
  llvm.func @__moore_signal_event_in_slot(i32, !llvm.ptr) -> i1
  llvm.func @__moore_wait_event(i32, !llvm.ptr)
  hw.module @counter(in %clk : !hw.struct<value: i1, unknown: i1>, in %reset : !hw.struct<value: i1, unknown: i1>, out count : !hw.struct<value: i8, unknown: i8>) attributes {circt.default_time_units = -9 : i32, vpi.all_vars = {clk = 1 : i32, count = 8 : i32, reset = 1 : i32}} {
    %0 = llhd.constant_time <0ns, 0d, 1e>
    %c-1_i8 = hw.constant -1 : i8
    %c0_i8 = hw.constant 0 : i8
    %c1_i8 = hw.constant 1 : i8
    %1 = hw.aggregate_constant [0 : i8, -1 : i8] : !hw.struct<value: i8, unknown: i8>
    %true = hw.constant true
    %2 = hw.aggregate_constant [0 : i8, 0 : i8] : !hw.struct<value: i8, unknown: i8>
    %value = hw.struct_extract %clk["value"] : !hw.struct<value: i1, unknown: i1>
    %unknown = hw.struct_extract %clk["unknown"] : !hw.struct<value: i1, unknown: i1>
    %3 = comb.xor %unknown, %true : i1
    %4 = comb.and bin %value, %3 : i1
    %value_0 = hw.struct_extract %reset["value"] : !hw.struct<value: i1, unknown: i1>
    %unknown_1 = hw.struct_extract %reset["unknown"] : !hw.struct<value: i1, unknown: i1>
    %5 = comb.xor %unknown_1, %true : i1
    %6 = comb.and bin %value_0, %5 : i1
    %count = llhd.sig %1 : !hw.struct<value: i8, unknown: i8>
    %7:2 = llhd.combinational -> !hw.struct<value: i8, unknown: i8>, i1 {
      %10 = llhd.prb %count : !hw.struct<value: i8, unknown: i8>
      %value_3 = hw.struct_extract %10["value"] : !hw.struct<value: i8, unknown: i8>
      %unknown_4 = hw.struct_extract %10["unknown"] : !hw.struct<value: i8, unknown: i8>
      %11 = comb.add %value_3, %c1_i8 : i8
      %12 = comb.icmp ne %unknown_4, %c0_i8 : i8
      %13 = comb.replicate %12 : (i1) -> i8
      %14 = comb.xor %13, %c-1_i8 : i8
      %15 = comb.and %11, %14 : i8
      %16 = hw.struct_create (%15, %13) : !hw.struct<value: i8, unknown: i8>
      llhd.yield %16, %true : !hw.struct<value: i8, unknown: i8>, i1
    }
    %8 = seq.to_clock %4
    %count_2 = seq.firreg %7#0 clock %8 reset async %6, %2 preset 255 {name = "count"} : !hw.struct<value: i8, unknown: i8>
    llhd.drv %count, %count_2 after %0 : !hw.struct<value: i8, unknown: i8>
    %9 = llhd.prb %count : !hw.struct<value: i8, unknown: i8>
    hw.output %9 : !hw.struct<value: i8, unknown: i8>
  }
}
Ничо так вроде, годно на первый взгляд.