<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom"><title>Marcin Juszkiewicz</title><link href="https://marcin.juszkiewicz.com.pl/" rel="alternate"/><link href="https://marcin.juszkiewicz.com.pl/feed/" rel="self"/><id>https://marcin.juszkiewicz.com.pl/</id><updated>2026-03-10T18:53:00+01:00</updated><entry><title>RISC-V is sloooow</title><link href="https://marcin.juszkiewicz.com.pl/2026/03/10/risc-v-is-sloooow/" rel="alternate"/><published>2026-03-10T18:53:00+01:00</published><updated>2026-03-10T18:53:00+01:00</updated><author><name>Marcin Juszkiewicz</name></author><id>tag:marcin.juszkiewicz.com.pl,2026-03-10:/2026/03/10/risc-v-is-sloooow/</id><summary type="html">143 vs 36 minutes is far too big&amp;nbsp;difference</summary><content type="html">&lt;p&gt;About 3 months ago &lt;a href="/2025/12/04/from-the-diary-of-aarch64-porter-risc-v/"&gt;I started working with &lt;span class="caps"&gt;RISC&lt;/span&gt;-V port of Fedora
Linux&lt;/a&gt;.
Many things happened during that&amp;nbsp;time.&lt;/p&gt;
&lt;!--MORE--&gt;

&lt;h3&gt;Triaging&lt;/h3&gt;
&lt;p&gt;I went through &lt;a href="https://abologna.gitlab.io/fedora-riscv-tracker/"&gt;the Fedora &lt;span class="caps"&gt;RISC&lt;/span&gt;-V tracker&lt;/a&gt;
entries, triaged most of them (at the moment 17 entries left in &lt;span class="caps"&gt;NEW&lt;/span&gt;) and tried
to handle whatever&amp;nbsp;possible.&lt;/p&gt;
&lt;h3&gt;Fedora&amp;nbsp;packaging&lt;/h3&gt;
&lt;p&gt;My usual way of working involves fetching sources of a Fedora package&amp;nbsp;(&lt;code&gt;fedpkg
clone -a&lt;/code&gt;) and then building it&amp;nbsp;(&lt;code&gt;fedpkg mockbuild -r fedora-43-riscv64&lt;/code&gt;). After
some time, I check did it built and if not then I go through build logs to find
out&amp;nbsp;why.&lt;/p&gt;
&lt;p&gt;Effect? At the moment,
&lt;a href="https://src.fedoraproject.org/user/hrw/requests"&gt;86 pull requests sent for Fedora packages&lt;/a&gt;.
From heavy packages like the &amp;#8220;llvm15&amp;#8221; to simple ones like the &amp;#8220;iyfct&amp;#8221; (some
simple game). At the moment most of them were merged, and most of these got
built for the Fedora 43. Then we can build them as well as we follow
&amp;#8216;f43-updates&amp;#8217; tag on the Fedora&amp;nbsp;koji.&lt;/p&gt;
&lt;h3&gt;Slowness&lt;/h3&gt;
&lt;p&gt;Work on packages brings the hard, sometimes controversial, topic: speed. Or
rather lack of&amp;nbsp;it.&lt;/p&gt;
&lt;p&gt;You see, the &lt;span class="caps"&gt;RISC&lt;/span&gt;-V hardware at the moment is slow. Which results in terrible
build times &amp;#8212; look at details of the binutils 2.45.1-4.fc43 package I took from
koji (&lt;a href="https://koji.fedoraproject.org/koji/buildinfo?buildID=2894403"&gt;Fedora&lt;/a&gt;
and &lt;a href="https://riscv-koji.fedoraproject.org/koji/buildinfo?buildID=60248"&gt;&lt;span class="caps"&gt;RISC&lt;/span&gt;-V Fedora&lt;/a&gt;):&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Architecture&lt;/th&gt;
&lt;th&gt;Cores&lt;/th&gt;
&lt;th&gt;Memory&lt;/th&gt;
&lt;th&gt;Build time&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;aarch64&lt;/td&gt;
&lt;td&gt;12&lt;/td&gt;
&lt;td&gt;46 &lt;span class="caps"&gt;GB&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;36 minutes&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;i686&lt;/td&gt;
&lt;td&gt;8&lt;/td&gt;
&lt;td&gt;29 &lt;span class="caps"&gt;GB&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;25 minutes&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;ppc64le&lt;/td&gt;
&lt;td&gt;10&lt;/td&gt;
&lt;td&gt;37 &lt;span class="caps"&gt;GB&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;46 minutes&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;riscv64&lt;/td&gt;
&lt;td&gt;8&lt;/td&gt;
&lt;td&gt;16 &lt;span class="caps"&gt;GB&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;143 minutes&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;s390x&lt;/td&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;td&gt;45 &lt;span class="caps"&gt;GB&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;37 minutes&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;x86_64&lt;/td&gt;
&lt;td&gt;8&lt;/td&gt;
&lt;td&gt;29 &lt;span class="caps"&gt;GB&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;29 minutes&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;That was StarFive VisionFive 2 board, while it has other strengths (such as
upstreamed drivers), it is not the fastest available one. I asked around and one
of porters did a built on Milk-V Megrez &amp;#8212; it took 58&amp;nbsp;minutes.&lt;/p&gt;
&lt;p&gt;Also worth mentioning is that the current build of &lt;span class="caps"&gt;RISC&lt;/span&gt;-V Fedora port is done
with disabled &lt;span class="caps"&gt;LTO&lt;/span&gt;. To cut on memory usage and build&amp;nbsp;times.&lt;/p&gt;
&lt;p&gt;&lt;span class="caps"&gt;RISC&lt;/span&gt;-V builders have four or eight cores with 8, 16 or 32 &lt;span class="caps"&gt;GB&lt;/span&gt; of &lt;span class="caps"&gt;RAM&lt;/span&gt; (depending
on a board). And those cores are usually compared to Arm Cortex-A55 ones. The
lowest cpu cores in today&amp;#8217;s Arm&amp;nbsp;chips.&lt;/p&gt;
&lt;p&gt;The UltraRISC &lt;span class="caps"&gt;UR&lt;/span&gt;-&lt;span class="caps"&gt;DP1000&lt;/span&gt; SoC, present on the Milk-V Titan motherboard should
improve situation a bit (and can have 64 &lt;span class="caps"&gt;GB&lt;/span&gt; ram). Similar with SpacemiT K3-based
systems (but only 32 &lt;span class="caps"&gt;GB&lt;/span&gt; ram). Both will be an improvement, but not the final&amp;nbsp;solution.&lt;/p&gt;
&lt;h3&gt;Hardware needs for Fedora&amp;nbsp;inclusion&lt;/h3&gt;
&lt;p&gt;We need hardware capable of building above &amp;#8220;binutils&amp;#8221; package below one hour.
With &lt;span class="caps"&gt;LTO&lt;/span&gt; enabled system-wide etc. to be on par with the other architectures.
This is the speed-related&amp;nbsp;requirement.&lt;/p&gt;
&lt;p&gt;There is no point of going for inclusion with slow builders as this will make
package maintainers complain. You see, in Fedora build results are released into
repositories only when all architectures finish. And we had maintainers
complaining about lack of speed of AArch64 builders in the past. Some developers
may start excluding &lt;span class="caps"&gt;RISC&lt;/span&gt;-V architecture from their packages to not have to&amp;nbsp;wait.&lt;/p&gt;
&lt;p&gt;And any future builders need to be rackable and manageable like any other boring
server (put in a rack, connect cables, install, do not touch any more). Because
no one will go into a data centre to manually reboot an &lt;span class="caps"&gt;SBC&lt;/span&gt;-based&amp;nbsp;builder.&lt;/p&gt;
&lt;p&gt;Without systems fulfilling both requirements, we can not even plan for the
&lt;span class="caps"&gt;RISC&lt;/span&gt;-V 64-bit architecture to became one of official, primary architectures in
Fedora&amp;nbsp;Linux.&lt;/p&gt;
&lt;h3&gt;I still use &lt;span class="caps"&gt;QEMU&lt;/span&gt; for local&amp;nbsp;testing&lt;/h3&gt;
&lt;p&gt;Such long build times make my use of &lt;span class="caps"&gt;QEMU&lt;/span&gt; useful.
&lt;a href="/2025/06/27/bought-myself-an-ampere-altra-system/"&gt;My AArch64 desktop&lt;/a&gt; has 80
cores, so with the use of &lt;span class="caps"&gt;QEMU&lt;/span&gt; userspace riscv64 emulation, I can build the
&amp;#8220;llvm15&amp;#8221; package in about 4 hours. Compare that to 10.5 hours on a Banana Pi
&lt;span class="caps"&gt;BPI&lt;/span&gt;-F3 builder (it may be quicker on a P550&amp;nbsp;one).&lt;/p&gt;
&lt;figure id="__yafg-figure-1"&gt;
&lt;img alt="busy btop" src="/files/2026/03/btop-700x.jpg" title="btop shows 80 cores being busy"&gt;
&lt;figcaption&gt;btop shows 80 cores being busy&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;And &lt;span class="caps"&gt;LLVM&lt;/span&gt; packages make real use of both available cores and memory. I am
wondering how fast would it go on 192/384 cores of Ampere One-based&amp;nbsp;system.&lt;/p&gt;
&lt;p&gt;Still, I used &lt;span class="caps"&gt;QEMU&lt;/span&gt; for local builds/testing only. Fedora, like several other
distributions, does native builds&amp;nbsp;only.&lt;/p&gt;
&lt;h3&gt;Future&amp;nbsp;plans&lt;/h3&gt;
&lt;p&gt;We plan to start building Fedora Linux 44. If things go well, we will use the
same kernel image on all of our builders (the current ones use a mix of kernel
versions). &lt;span class="caps"&gt;LTO&lt;/span&gt; will still be&amp;nbsp;disabled.&lt;/p&gt;
&lt;p&gt;When it comes to lack of speed&amp;#8230; There are plans to bring new, faster builders.
And probably assign some heavier packages to&amp;nbsp;them.&lt;/p&gt;</content><category term="misc"/><category term="fedora"/><category term="risc-v"/><category term="development"/><category term="qemu"/><category term="virtualization"/></entry><entry><title>Books I read in 2025</title><link href="https://marcin.juszkiewicz.com.pl/2025/12/30/books-i-read-in-2025/" rel="alternate"/><published>2025-12-30T23:06:00+01:00</published><updated>2025-12-30T23:06:00+01:00</updated><author><name>Marcin Juszkiewicz</name></author><id>tag:marcin.juszkiewicz.com.pl,2025-12-30:/2025/12/30/books-i-read-in-2025/</id><summary type="html">Reading is fun. All those new&amp;nbsp;worlds/stories&amp;#8230;</summary><content type="html">&lt;p&gt;I enjoy reading and I am known for being a fast reader. In 2025, I read one
hundred&amp;nbsp;books&amp;#8230;&lt;/p&gt;
&lt;!--MORE--&gt;

&lt;p&gt;So what kind of books did I read? Mostly science-fiction, but also some
biographies, thrillers and a few random&amp;nbsp;ones.&lt;/p&gt;
&lt;h3&gt;Space&amp;nbsp;operas&lt;/h3&gt;
&lt;p&gt;As in previous years, I continued reading the &amp;#8220;Undying Mercenaries&amp;#8221; series by
&lt;span class="caps"&gt;B.V.&lt;/span&gt; Larson. It is an easy to read series &amp;#8212; I can read a book in the evening
and forget what was there during&amp;nbsp;sleep.&lt;/p&gt;
&lt;p&gt;There was &lt;a href="https://en.wikipedia.org/wiki/The_Murderbot_Diaries"&gt;&amp;#8220;The Murderbot Diaries&amp;#8221;&lt;/a&gt;
by Martha Wells. Mostly because there was an announcement of a &lt;span class="caps"&gt;TV&lt;/span&gt; series (which 
(surprise, surprise) turned out to be worse than the books). I read the first
five books in Polish and the last two in English, as they had not been published
yet. If you plan to read them, I recommend the &amp;#8220;1, 2, 3, 4, 6, 5, 7&amp;#8221; order as
&amp;#8220;System Collapse&amp;#8221; (7th book) starts at the end of &amp;#8220;Network Effect&amp;#8221; (5th one),
while &amp;#8220;Fugitive Telemetry&amp;#8221; is more a single story happening before &amp;#8220;Network
Effect&amp;#8221;&amp;nbsp;one.&lt;/p&gt;
&lt;p&gt;I started reading &lt;a href="https://en.wikipedia.org/wiki/Craig_Alanson#Expeditionary_Force_(ExForce)"&gt;&amp;#8220;Expeditionary Force&amp;#8221;&lt;/a&gt;
by Craig Alanson. It was an interesting space opera, but became boring at some
point so I ended on &amp;#8220;Aftermath&amp;#8221; (the 17th book). How long you can keep up with a
series where humans keep playing with other galactic civilisations, all thanks
to the help of an ancient &lt;span class="caps"&gt;AI&lt;/span&gt;?&lt;/p&gt;
&lt;p&gt;After many years, I collected all parts of &lt;a href="https://en.wikipedia.org/wiki/Sector_General"&gt;&amp;#8220;Sector General&amp;#8221;&lt;/a&gt;
by James White. All twelve books. It was fun to read but it feels old.
And recently &lt;a href="https://www.eyrie.org/~eagle/reviews/books/1-5344-0303-5.html"&gt;Russ Allbery mentioned&lt;/a&gt;
&amp;#8220;Machine&amp;#8221; and &amp;#8220;Ancestral Night&amp;#8221; by Elisabeth Bear as a modern series with
similar&amp;nbsp;vibe.&lt;/p&gt;
&lt;p&gt;When it comes to old authors, I also read &amp;#8220;To the Stars&amp;#8221; series by Harry&amp;nbsp;Harrison.&lt;/p&gt;
&lt;p&gt;The other series was &amp;#8220;Shadow Raptors&amp;#8221; by Sławomir Nieściur. Common theme:
humans fighting some other species. In&amp;nbsp;space.&lt;/p&gt;
&lt;h3&gt;Military&amp;nbsp;fiction&lt;/h3&gt;
&lt;p&gt;Another space series was &lt;a href="https://en.wikipedia.org/wiki/Stark%27s_War"&gt;&amp;#8220;Stark&amp;#8217;s War&amp;#8221;&lt;/a&gt;
by John G. Hemry (as Jack Campbell). A war on the Moon over the control of&amp;nbsp;resources.&lt;/p&gt;
&lt;p&gt;There were two series by Vladimir Wolff: &amp;#8220;Nowy porządek świata&amp;#8221; (&amp;#8220;A new world
order&amp;#8221;) and &amp;#8220;Armaggedon&amp;#8221;. It is hard to tell how they differ cause they share
some ideas. The world as we know it ends, old forces vanish, and new ones
appear. It is fun to read about a &amp;#8220;near future&amp;#8221; where Poland becomes a new
global force, while the United States vanishes due to a virus killing nearly
entire&amp;nbsp;population.&lt;/p&gt;
&lt;p&gt;The &lt;a href="https://en.wikipedia.org/wiki/All_You_Need_Is_Kill"&gt;&amp;#8220;All You Need Is Kill&amp;#8221;&lt;/a&gt;
by Hiroshi Sakurazaka shows how much story can be changed before film adaptation
is created (the &amp;#8220;Edge of Tomorrow&amp;#8221; was based on this book). Highly&amp;nbsp;recommend.&lt;/p&gt;
&lt;h3&gt;Other&amp;nbsp;fiction&lt;/h3&gt;
&lt;p&gt;There were books by Andrzej Kwiecień &amp;#8212; &amp;#8220;Metamorf&amp;#8221; and &amp;#8220;Dori&amp;#8221;. Some kind of
cyberpunk stories in a world where androids can take human&amp;#8217;s form and
personality. Light&amp;nbsp;read.&lt;/p&gt;
&lt;p&gt;&lt;span class="dquo"&gt;&amp;#8220;&lt;/span&gt;Kaori&amp;#8221; by Marta Sobiecka was a cyberpunk crime story. Reading reviews does not
remind me a book, which shows that it was mediocre&amp;nbsp;one.&lt;/p&gt;
&lt;p&gt;Other cyberpunk was set of stories called &amp;#8220;Cyberpunk Girls&amp;#8221;. Some were good,
some were&amp;nbsp;not.&lt;/p&gt;
&lt;p&gt;Another collection was the &amp;#8220;Frostpunk, Antologia&amp;#8221; &amp;#8212; a set of four stories in
the steampunk world of the Frostpunk game (which I have never&amp;nbsp;played).&lt;/p&gt;
&lt;p&gt;And while we are around alternative world of &lt;span class="caps"&gt;XXI&lt;/span&gt; century I have to mention
&amp;#8220;Ciepło-zimno&amp;#8221; by Joanna Mazur. Deeper in climate change, with nine months long
summer, no electricity during some parts of a day, main character is a freelance
worker, happy to have some work at&amp;nbsp;all.&lt;/p&gt;
&lt;p&gt;There was &amp;#8220;Czarownica znad Kałuży&amp;#8221; postapo story by Artur Olchowy. Small village
in a middle of nowhere, with &amp;#8220;a witch&amp;#8221; living just outside of it. And one day a
priest arrives and tries to change the way those people live. It was an
interesting read, despite common oversimplifications (as usual in postapo&amp;nbsp;stories).&lt;/p&gt;
&lt;p&gt;Then was Blake Crouch with his &lt;a href="https://en.wikipedia.org/wiki/Dark_Matter_(Crouch_novel)"&gt;&amp;#8220;Dark matter&amp;#8221;&lt;/a&gt; 
and &lt;a href="https://en.wikipedia.org/wiki/Recursion_(Crouch_novel)"&gt;&amp;#8220;Recursion&amp;#8221;&lt;/a&gt; books.
Both are about travelling to the other versions of the world. In &amp;#8220;Dark matter&amp;#8221;
those are parallel universes, where the main character can meet the other
selves. &amp;#8220;Recursion&amp;#8221; loops the live of the main character to his younger self.
Both were a good&amp;nbsp;read.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://en.wikipedia.org/wiki/Good_Omens"&gt;&lt;span class="dquo"&gt;&amp;#8220;&lt;/span&gt;Good Omens&amp;#8221;&lt;/a&gt; by Terry Pratchett and
Neil Gaiman was a must after watching &lt;span class="caps"&gt;TV&lt;/span&gt;&amp;nbsp;series.&lt;/p&gt;
&lt;p&gt;&lt;span class="dquo"&gt;&amp;#8220;&lt;/span&gt;Senni zwycięzcy&amp;#8221; by Marek Oramus about multi-generation spaceship flying
towards the Earth. Society there is in terrible state and there are mysterious
people with paranormal abilities trying to change things. And it turns out to be
transmitted as some sick reality &lt;span class="caps"&gt;TV&lt;/span&gt;. Good book from&amp;nbsp;1970s.&lt;/p&gt;
&lt;p&gt;And &amp;#8220;Triplet&amp;#8221; by Timothy Zahn. Fantasy book in&amp;nbsp;space.&lt;/p&gt;
&lt;h3&gt;Literary Role-Playing Game&amp;nbsp;(LitRPG)&lt;/h3&gt;
&lt;p&gt;Some time ago, someone suggested me to check books by Василий Маханенко (Vasily
Mahanenko in one transcription, Wasilij Machanienko in the other). His &amp;#8220;Way of
Shaman&amp;#8221; series was an interesting one. Kind of reading how someone plays the
game instead of watching it on Twitch or&amp;nbsp;Youtube.&lt;/p&gt;
&lt;h3&gt;History&lt;/h3&gt;
&lt;p&gt;Between science fiction books I smuggled some history ones. Mostly around the
Second World&amp;nbsp;War.&lt;/p&gt;
&lt;p&gt;There was &amp;#8220;Wojna oczami wroga, sojusznicy Hitlera&amp;#8221; by Grzegorz Bobrek. A book
showing &lt;span class="caps"&gt;WW2&lt;/span&gt; from a view of German allies: Italy, Hungary, Romania or Japan. And
Germany itself. Was boring at some points but if someone wants to see the other
view, I recommend this&amp;nbsp;book.&lt;/p&gt;
&lt;p&gt;Friedrich Sander&amp;#8217;s book titled &amp;#8220;Blood, Dust and Snow: Diaries of a Panzer
Commander in Germany and on the Eastern Front, 1938-1943&amp;#8221; was another one
showing &lt;span class="caps"&gt;WW2&lt;/span&gt; from the German&amp;nbsp;side.&lt;/p&gt;
&lt;p&gt;The &amp;#8220;Operation Paperclip&amp;#8221; by Annie Jacobsen is about secret &lt;span class="caps"&gt;US&lt;/span&gt; project of
gathering as much of German research and scientists as possible during the end
of &lt;span class="caps"&gt;WW2&lt;/span&gt;. If you were deemed valuable enough, you were moved to the &lt;span class="caps"&gt;USA&lt;/span&gt; with a new
identity as long as you were ready to work for &amp;#8220;your new&amp;nbsp;country&amp;#8221;.&lt;/p&gt;
&lt;p&gt;The &amp;#8220;Ludzie na mydło&amp;#8221; (&amp;#8220;Humans for soap&amp;#8221;) by Tomasz Bonek is about German
anatomists turning human corpses into school material. And that soap made from
human fat was more of a side effect of that work rather than primary&amp;nbsp;purpose.&lt;/p&gt;
&lt;p&gt;There was also something not about &lt;span class="caps"&gt;WW2&lt;/span&gt;: 
&lt;a href="https://en.wikipedia.org/wiki/The_Hot_Zone"&gt;&amp;#8220;The Hot Zone&amp;#8221;&lt;/a&gt; by Richard Preston.
Worth reading book about the Ebola&amp;nbsp;virus.&lt;/p&gt;
&lt;h3&gt;The end of the&amp;nbsp;world&lt;/h3&gt;
&lt;p&gt;There were some books which can be described as &amp;#8220;the end of the world we&amp;nbsp;know&amp;#8221;.&lt;/p&gt;
&lt;p&gt;&lt;span class="dquo"&gt;&amp;#8220;&lt;/span&gt;The End of Men&amp;#8221; by Christina Sweeney-Baird shows the world where 90% of men
died due to unknown disease. When vaccination arrives, international travel is
allowed only between countries with 99.9% of population being vaccinated. And
that book was written &lt;strong&gt;before&lt;/strong&gt; &lt;span class="caps"&gt;COVID&lt;/span&gt;-19 pandemic. Very interesting position to&amp;nbsp;read.&lt;/p&gt;
&lt;p&gt;The &lt;a href="https://en.wikipedia.org/wiki/Blackout_(Elsberg_novel)"&gt;&amp;#8220;Blackout: Tomorrow Will Be Too Late&amp;#8221;&lt;/a&gt;
by Mark Elsberg was another book in this category. Imagine Europe without
electricity. Which means no water, no fuel, no food, no hospitals, no
communication etc.. All because of a&amp;nbsp;cyberattack.&lt;/p&gt;
&lt;h3&gt;Biographies&lt;/h3&gt;
&lt;p&gt;I read some biographies during&amp;nbsp;2025.&lt;/p&gt;
&lt;p&gt;There was &amp;#8220;The Outsider: My Life in Intrigue&amp;#8221; by Frederick Forsyth. From the
youngest pilot in &lt;span class="caps"&gt;RAF&lt;/span&gt;, to journalist, almost a spy and the author. Quick read,
despite 368&amp;nbsp;pages.&lt;/p&gt;
&lt;p&gt;And then were books about Jan Himilsbach (&amp;#8220;Ja to chętnie napiłbym się kawy&amp;#8221;) and
Zdzisław Maklakiewicz (&amp;#8220;Zaczęło się od tego, że jestem brzydki&amp;#8230;&amp;#8221;). Both by
Ryszard Abraham. Add &amp;#8220;Rejs na krzywy ryj&amp;#8221; by Anna Poppek and you have three
interesting books about famous Polish duo and the film which started their
common career. I was also reading stories written by Jan Himilsbach but did not
finished it in 2025 so it was not&amp;nbsp;counted.&lt;/p&gt;
&lt;p&gt;The book by Chrysta Bilton &amp;#8220;A Normal Family: The Surprising Truth About My Crazy
Childhood (And How I Discovered 35 New Siblings)&amp;#8221; was a fun read. Author
described her crazy childhood and later finding out that author&amp;#8217;s father was a
sperm donor. Which ended with her &amp;#8220;expanded family&amp;#8221; of 35 brothers and&amp;nbsp;sisters&amp;#8230;&lt;/p&gt;
&lt;p&gt;Another book from this category was &amp;#8220;American Sniper&amp;#8221; by Chris Kyle, Scott
McEwen and Jim&amp;nbsp;DeFelice.&lt;/p&gt;
&lt;h3&gt;Journalism&lt;/h3&gt;
&lt;p&gt;A few books here. Starting with &amp;#8220;&lt;span class="caps"&gt;ZATO&lt;/span&gt;&amp;#8221; by Alice Lugen &amp;#8212; a book about closed
cities in Soviet Union (and later Russia). Very good read, describing how Soviet
maps were falsified to hide those cities even from neighbours, how life there
was different&amp;nbsp;etc.&lt;/p&gt;
&lt;p&gt;&lt;span class="dquo"&gt;&amp;#8220;&lt;/span&gt;Głusza&amp;#8221; by Anna Goc described world of deaf people. Their language, culture and
problems. How world of &amp;#8220;those who hear&amp;#8221; tries to force them &amp;#8220;to fit&amp;#8221;. Highly&amp;nbsp;recommend.&lt;/p&gt;
&lt;p&gt;Edyta Żemła in &amp;#8220;Armia w ruinie&amp;#8221; described how Polish Armed Forces changed during
last years. To&amp;nbsp;worse.&lt;/p&gt;
&lt;p&gt;&lt;span class="dquo"&gt;&amp;#8220;&lt;/span&gt;Miła robótka&amp;#8221; by Ewa Stusińska describes how everything around sex and porn
arrived in Poland during 1990s. From &lt;span class="caps"&gt;VHS&lt;/span&gt; films to sex toys. How people started
explore new areas of sexual&amp;nbsp;freedom.&lt;/p&gt;
&lt;p&gt;&lt;span class="dquo"&gt;&amp;#8220;&lt;/span&gt;Breasts&amp;#8221; by Corien van Zweden is a wonderful book about breasts. Their role,
how they change during life and what breast cancer can mean. Highly recommend.
Even if you lack them&amp;nbsp;yourself.&lt;/p&gt;
&lt;p&gt;And the last entry: &amp;#8220;Pogo&amp;#8221; by Jakub Sieczko describes life of an ambulance&amp;nbsp;workers.&lt;/p&gt;
&lt;h3&gt;Summary&lt;/h3&gt;
&lt;p&gt;It might look that I had a lot of free time in 2025, because reading all those
books takes&amp;nbsp;time.&lt;/p&gt;
&lt;p&gt;I mostly read in the evening. Lying in bed, with my Onyx Nova2 e-book reader.
Sometimes during day (there was lot of reading during time &lt;a href="/2025/06/11/i-have-a-problem-with-arm/"&gt;when I had a problem
with my arm&lt;/a&gt;).&lt;/p&gt;
&lt;p&gt;In those one hundred books, I read a few of them in English. Rest was in Polish
(I had to look out for English titles for most of this&amp;nbsp;post).&lt;/p&gt;
&lt;p&gt;How many books I will read inn 2026? No idea. Probably&amp;nbsp;fewer.&lt;/p&gt;</content><category term="misc"/><category term="books"/><category term="onyx"/><category term="life"/></entry><entry><title>From the diary of AArch64 porter — RISC-V</title><link href="https://marcin.juszkiewicz.com.pl/2025/12/04/from-the-diary-of-aarch64-porter-risc-v/" rel="alternate"/><published>2025-12-04T18:47:00+01:00</published><updated>2025-12-04T18:47:00+01:00</updated><author><name>Marcin Juszkiewicz</name></author><id>tag:marcin.juszkiewicz.com.pl,2025-12-04:/2025/12/04/from-the-diary-of-aarch64-porter-risc-v/</id><summary type="html">I started working on Fedora packaging for the 64-bit &lt;span class="caps"&gt;RISC&lt;/span&gt;-V architecture&amp;nbsp;port.</summary><content type="html">&lt;p&gt;Wait, what? &lt;span class="caps"&gt;RISC&lt;/span&gt;-V? In &amp;#8216;the diary of &lt;strong&gt;AArch64&lt;/strong&gt; porter&amp;#8217;? &lt;span class="caps"&gt;WTH&lt;/span&gt;?&lt;/p&gt;
&lt;!--MORE--&gt;

&lt;p&gt;Yes, I started working on Fedora packaging for the 64-bit &lt;span class="caps"&gt;RISC&lt;/span&gt;-V architecture&amp;nbsp;port.&lt;/p&gt;
&lt;h3&gt;All started with discussion about&amp;nbsp;Mock&lt;/h3&gt;
&lt;p&gt;About a week ago, one of my work colleagues asked me about &lt;a href="/2016/04/15/how-to-speed-up-mock/"&gt;my old post about
speeding up Mock&lt;/a&gt;. We had a discussion, I
pointed him to the Mock documentation, and gave some&amp;nbsp;hints.&lt;/p&gt;
&lt;p&gt;It turned out that he was working on &lt;span class="caps"&gt;RISC&lt;/span&gt;-V related changes to Fedora packages.
As I had some spare cycles, I decided to take a look. And I&amp;nbsp;sank&amp;#8230;&lt;/p&gt;
&lt;h3&gt;State of the &lt;span class="caps"&gt;RISC&lt;/span&gt;-V Fedora&amp;nbsp;port&lt;/h3&gt;
&lt;p&gt;The 64-bit &lt;span class="caps"&gt;RISC&lt;/span&gt;-V port of Fedora Linux is going quite well. There are over 90%
of Fedora packages already built for that architecture. And there are several
packages with the riscv64 specific changes, such&amp;nbsp;as:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;patches adding &lt;span class="caps"&gt;RISC&lt;/span&gt;-V&amp;nbsp;support&lt;/li&gt;
&lt;li&gt;disabling some parts of test&amp;nbsp;suites&lt;/li&gt;
&lt;li&gt;disabling some build options due to bootstrapping of some languages being in
  progress (like&amp;nbsp;Java)&lt;/li&gt;
&lt;li&gt;disabling of debug information due to some toolchain issues (there is a
  work-in-progress now to solve&amp;nbsp;them)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Note that these changes are temporary. There are people working on solving
toolchain issues, languages are being bootstrapped (there was a review of Java
changes earlier this week), patches are being integrated upstream and in Fedora,
and so&amp;nbsp;on.&lt;/p&gt;
&lt;p&gt;There is &lt;a href="https://abologna.gitlab.io/fedora-riscv-tracker/"&gt;the Fedora &lt;span class="caps"&gt;RISC&lt;/span&gt;-V tracker&lt;/a&gt;
website showing the progress of the&amp;nbsp;port:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;package&amp;nbsp;name&lt;/li&gt;
&lt;li&gt;current status (new, triaged, patch posted, patch merged,&amp;nbsp;done)&lt;/li&gt;
&lt;li&gt;version in &lt;span class="caps"&gt;RISC&lt;/span&gt;-V port&amp;nbsp;Koji&lt;/li&gt;
&lt;li&gt;version in Fedora Koji (F43 release is tracked&amp;nbsp;now)&lt;/li&gt;
&lt;li&gt;version in CentOS Stream&amp;nbsp;10&lt;/li&gt;
&lt;li&gt;notes&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This is a simple way to check what to work on. And there are several packages,
not built yet due to use of &amp;#8220;ExclusiveArch&amp;#8221; setting in&amp;nbsp;them.&lt;/p&gt;
&lt;h3&gt;My&amp;nbsp;work&lt;/h3&gt;
&lt;p&gt;The quick look at work needed reminded me of the 2012-2014 period, when I worked
on the same stuff but for AArch64 ports (OpenEmbedded, Debian/Ubuntu,
Fedora/&lt;span class="caps"&gt;RHEL&lt;/span&gt;). So I had a knowledge, I knew the tools and started&amp;nbsp;working.&lt;/p&gt;
&lt;p&gt;In the beginning, I went through entries in the tracker and tried to triage as
many packages as possible, so it will be more visible which ones need work and
which can be ignored (for now). The tracker went from seven to over eighty
triaged packages in a few&amp;nbsp;days.&lt;/p&gt;
&lt;p&gt;Then I looked at changes done by current porters. Which usually meant David
Abdurachmanov. I used his changes as a base for the changes needed for Fedora
packaging, while trying to minimise the amount of them to the minimum&amp;nbsp;required.&lt;/p&gt;
&lt;p&gt;I did over twenty pull requests to Fedora packages during a week of&amp;nbsp;work.&lt;/p&gt;
&lt;h3&gt;Hardware?&lt;/h3&gt;
&lt;p&gt;But which hardware did I use to run those hundreds of builds? Was it HiFive Premier
P550? Or maybe Milk-V Titan or another &lt;span class="caps"&gt;RISC&lt;/span&gt;-V &lt;abbr title="Seriously Broken Computer"&gt;&lt;span class="caps"&gt;SBC&lt;/span&gt;&lt;/abbr&gt;?&lt;/p&gt;
&lt;p&gt;Nope. I used my 80-core, Altra-based, AArch64 desktop to run all those builds.
With the &lt;span class="caps"&gt;QEMU&lt;/span&gt; userspace&amp;nbsp;helper.&lt;/p&gt;
&lt;p&gt;You see, Mock allows to run builds for foreign architectures &amp;#8212; all you need is
the&amp;nbsp;proper &lt;code&gt;qemu-user-static-*&lt;/code&gt; package and you are ready to&amp;nbsp;go:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;$ fedpkg mockbuild -r fedora-43-riscv64
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;You can extract the &amp;#8220;fedora-43-riscv64&amp;#8221; Mock config from the
&lt;a href="http://fedora.riscv.rocks:3000/rpms/mock-core-configs/src/branch/main-riscv64/mock-riscv64-configs.patch"&gt;mock-riscv64-configs.patch&lt;/a&gt;
hosted on Fedora &lt;span class="caps"&gt;RISC&lt;/span&gt;-V port forge. I hope that these configuration files may be
found in the &amp;#8220;mock-core-configs&amp;#8221; in Fedora&amp;nbsp;soon.&lt;/p&gt;
&lt;p&gt;At some point I had&amp;nbsp;337 &lt;code&gt;qemu-user-static-riscv&lt;/code&gt; processes running at same
time. And you know what? It was &lt;strong&gt;still faster than a native build on 64-bit
&lt;span class="caps"&gt;RISC&lt;/span&gt;-V hardware&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;But, to be honest, I only compared a few builds, so it may be better with other
builders. Fedora &lt;span class="caps"&gt;RISC&lt;/span&gt;-V Koji uses wide list of &lt;abbr title="Seriously Broken Computers"&gt;SBCs&lt;/abbr&gt; to build&amp;nbsp;on:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Banana Pi &lt;span class="caps"&gt;BPI&lt;/span&gt;-F3&lt;/li&gt;
&lt;li&gt;Milk-V&amp;nbsp;Jupiter&lt;/li&gt;
&lt;li&gt;Milk-V&amp;nbsp;Megrez&lt;/li&gt;
&lt;li&gt;SiFive HiFive Premier&amp;nbsp;P550&lt;/li&gt;
&lt;li&gt;StarFive VisionFive&amp;nbsp;2&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Also note that using &lt;span class="caps"&gt;QEMU&lt;/span&gt; is not a solution for building a distribution. I used
it only to check if package builds, and then scrap the&amp;nbsp;results.&lt;/p&gt;
&lt;h3&gt;Future&lt;/h3&gt;
&lt;p&gt;Will I continue working on the &lt;span class="caps"&gt;RISC&lt;/span&gt;-V port of Fedora Linux? Probably yes. And,
at some point, I will move to integrating those changes into CentOS Stream&amp;nbsp;10.&lt;/p&gt;
&lt;p&gt;For sure I do not want to invest in &lt;span class="caps"&gt;RISC&lt;/span&gt;-V hardware. Existing models are not
worth the money (in my opinion), incoming ones are still old (&lt;span class="caps"&gt;RVA20&lt;/span&gt;/&lt;span class="caps"&gt;RVA22&lt;/span&gt;) and
they are slow. Maybe in two, three years there will be something fast&amp;nbsp;enough.&lt;/p&gt;</content><category term="misc"/><category term="aarch64"/><category term="development"/><category term="fedora"/><category term="risc-v"/><category term="virtualization"/><category term="qemu"/></entry><entry><title>Wałek na Inpost</title><link href="https://marcin.juszkiewicz.com.pl/2025/11/12/walek-na-inpost/" rel="alternate"/><published>2025-11-12T19:47:00+01:00</published><updated>2025-11-12T19:47:00+01:00</updated><author><name>Marcin Juszkiewicz</name></author><id>tag:marcin.juszkiewicz.com.pl,2025-11-12:/2025/11/12/walek-na-inpost/</id><summary type="html">Dostałem ciekawą ofertę&amp;nbsp;kupna.</summary><content type="html">&lt;p&gt;Dawno nie pisałem tutaj po polsku ale dzisiaj &amp;#8220;pani Antonina&amp;#8221; próbowała kupić ode mnie&amp;nbsp;telefon.&lt;/p&gt;
&lt;!--MORE--&gt;

&lt;h3&gt;Wprowadzenie&lt;/h3&gt;
&lt;p&gt;Nabyłem w okazyjnej cenie telefon Xiaomi Redmi Note 14 Pro+ 5G. A że nie mam
potrzeby go używać to postanowiłem go&amp;nbsp;sprzedać.&lt;/p&gt;
&lt;p&gt;Na początek wrzuciłem go na Facebook Marketplace. Bo wiecie: &amp;#8220;za darmo&amp;#8221;. No tak
sobie tam leżał, co jakiś czas ktoś pytał czy aktualne lub zadawał więcej&amp;nbsp;pytań.&lt;/p&gt;
&lt;p&gt;Po czym dzisiaj pojawiła się &amp;#8220;pani Antonina&amp;#8221; (w cudzysłowie bo to przejęte konto
raczej). Na początek zadała klasyczne pytania o aktualność oferty, stan telefonu&amp;nbsp;itp&amp;#8230;&lt;/p&gt;
&lt;h3&gt;A może być&amp;nbsp;InPostem?&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Czy jest możliwość wysyłki kurierem Inpost po wcześniej wpłacie na konto?
Zamówię kuriera i pokryję koszty&amp;nbsp;wysyłki.&lt;/p&gt;
&lt;p&gt;Lub paczkomatom zapłacę&amp;nbsp;+20.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Nie wiem jak Wy, ja lubię usługi InPostu. W promieniu 15 minut piechotą mam
pewnie z 10 ich &amp;#8220;automatów paczkowych&amp;#8221;. Więc owszem, czemu by nie miało&amp;nbsp;być.&lt;/p&gt;
&lt;p&gt;Parę minut później dostałem&amp;nbsp;info:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Gotowe. Zaplaciłam na InPost powinieneś otrzymać list na swój adres&amp;nbsp;maila.&lt;/p&gt;
&lt;p&gt;Sprawdź swoją skrzynkę mail&amp;nbsp;proszę.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;I okazała potwierdzenie&amp;nbsp;przelewu:&lt;/p&gt;
&lt;figure id="__yafg-figure-1"&gt;
&lt;img alt="potwierdzenie przelewu" src="/files/2025/11/potwierdzenie-700x.jpg" title="potwierdzenie przelewu"&gt;
&lt;figcaption&gt;potwierdzenie przelewu&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;I tu już zaczęło&amp;nbsp;śmierdzieć&amp;#8230;&lt;/p&gt;
&lt;h3&gt;Potwierdzenie&amp;nbsp;przelewu&lt;/h3&gt;
&lt;p&gt;Uznałem, że nie wiem, może i potwierdzenie z banku Pekao &lt;span class="caps"&gt;SA&lt;/span&gt; tak powinno
wyglądać. Popytałem znajomych, czy ktoś ma tam&amp;nbsp;konto.&lt;/p&gt;
&lt;p&gt;Dostałem informację, że zawsze jest data &lt;strong&gt;i godzina&lt;/strong&gt; wystawienia dokumentu.
Zawsze jest numer rachunku nadawcy, dane właściciela rachunku&amp;nbsp;itp.&lt;/p&gt;
&lt;p&gt;Na potwierdzeniu powyżej jest jeszcze kilka innych błędów ale co ja będę
naprowadzać&amp;nbsp;scammerów&amp;#8230;&lt;/p&gt;
&lt;h3&gt;Mail&lt;/h3&gt;
&lt;p&gt;Skoro była prośba o sprawdzenie skrzynki to sprawdziłem. Nie było nic. No to
zaglądam GMailowi do spamu, a tam owszem jest mail &amp;#8220;od&amp;nbsp;InPostu&amp;#8221;.&lt;/p&gt;
&lt;p&gt;O ile InPost używa adresów email w&amp;nbsp;domenie &lt;code&gt;tp5142.com&lt;/code&gt; :D&lt;/p&gt;
&lt;figure id="__yafg-figure-2"&gt;
&lt;img alt="pierwszy spam" src="/files/2025/11/spam1.jpg" title="pierwszy spam: InPost Pay - podsumowanie"&gt;
&lt;figcaption&gt;pierwszy spam: InPost Pay - podsumowanie&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;Link &amp;#8220;Otwórz panel InPost Pay&amp;#8221; to 320 znaków prowadzących do jeszcze innej
domeny. Poza adresem był blok&amp;nbsp;&amp;#8220;&lt;code&gt;onload=eval(decodeURIComponent(atob(ZNACZKI)))&lt;/code&gt;&amp;#8221;.
Po zdekodowaniu otrzymałem kolejny&amp;nbsp;&amp;#8220;&lt;code&gt;eval(decodeURIComponent(atob(InneZnaczki)))&lt;/code&gt;&amp;#8221;
który dał mi&amp;nbsp;url:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;h00ps://confirm-orderNUMERKI.xyz/LosoweZnaczki=InneLosoweZnaczki&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Tu już zacząłem szukać po sieci artykułów w temacie &amp;#8220;wałek na&amp;nbsp;InPost&amp;#8221;&amp;#8230;&lt;/p&gt;
&lt;h3&gt;Dziwne&amp;nbsp;literki&lt;/h3&gt;
&lt;p&gt;Tymczasem &amp;#8220;pani&amp;nbsp;Antonina&amp;#8221;:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;To jest numer śledzenia przesyłki kսrіеrѕkіеј. Zaplaciłam na ǏnΡost. Proszę
odebrać pieniądze na konto przez&amp;nbsp;zamówienie.&lt;/p&gt;
&lt;p&gt;Tam jest przycisk Dalej i wybierz bank i wprowadź dane, aby zweryfikować i
otrzymać pieniądze. Po potwierdzeniu zaⅿóԝіеոіа kսrіеr zadzwoni się w celu
dogadania kiedy przyjechać i pod jaki&amp;nbsp;adres.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Nie wiem czy widzicie to co ja: &amp;#8220;Ǐ&amp;#8221; w &amp;#8220;ǏnΡost&amp;#8221; to nie jest nasze &amp;#8220;I&amp;#8221; tylko &amp;#8220;duże
łacińskie i z caronem&amp;#8221;. Przyznaję, że nie wiem w jakim języku używa się tej&amp;nbsp;litery.&lt;/p&gt;
&lt;p&gt;Do tego &amp;#8220;m&amp;#8221; w &amp;#8220;zaⅿóԝіеոіа&amp;#8221; też nie jest naszym &amp;#8220;m&amp;#8221; tylko &amp;#8220;Small Roman Numeral
One Thousand&amp;#8221; czyli &amp;#8220;małe rzymskie oznaczenie liczby&amp;nbsp;tysiąc&amp;#8221;.&lt;/p&gt;
&lt;p&gt;Oba znaczki złapałem bo mi edytor podświetlił słowa z nimi jako&amp;nbsp;błędne.&lt;/p&gt;
&lt;h3&gt;Drugi&amp;nbsp;mail&lt;/h3&gt;
&lt;p&gt;W międzyczasie dostałem jeszcze jednego maila &amp;#8212; ten przeszedł filtry
antyspamowe. Tym razem adres nadawcy był zbudowany z losowych literek w&amp;nbsp;domenie
&lt;code&gt;zohomail.in&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Nic tylko czytać i klikać co&amp;nbsp;nie?&lt;/p&gt;
&lt;figure id="__yafg-figure-3"&gt;
&lt;img alt="drugi spam" src="/files/2025/11/spam2.jpg" title="drugi spam: Odbierz etykietę nadawczą"&gt;
&lt;figcaption&gt;drugi spam: Odbierz etykietę nadawczą&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;Tym razem link prowadzi prosto&amp;nbsp;do
&lt;code&gt;h00ps://elektrizitaet-muenchen.com/LosoweLiterki&lt;/code&gt; który także kieruje do znanego
już&amp;nbsp;adresu:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;h00ps://confirm-orderNUMERKI.xyz/LosoweZnaczki=InneLosoweZnaczki&lt;/code&gt;&lt;/p&gt;
&lt;h3&gt;Koniec&amp;nbsp;zabawy&lt;/h3&gt;
&lt;p&gt;Na tym etapie uznałem, że postaram się być&amp;nbsp;miły:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Przepraszam bardzo, ale na tym kończymy - nie mam zamiaru klikać podejrzanych
linków w podejrzanych&amp;nbsp;mailach.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Na co&amp;nbsp;dostałem:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;O czym ty mówisz? Moje pieniądze już są na stronie, zaufałam Ci. Potwierdź
proszę zаⅿóԝіеոіе , mam nadzieję na Twoją&amp;nbsp;uczciwość.&lt;/p&gt;
&lt;p&gt;Pieniądze już zostały pobrane i nie da się cofnąć transakcji, bo to był
pobraniowy&amp;nbsp;przelew&lt;/p&gt;
&lt;p&gt;Nieprzyjęcie pobrania to kradzież. InPost pracuje do 22:00  jeśli nie
przyjmiesz, pieniądze po prostu przepadną i się spalą, i to będzie traktowane
jako&amp;nbsp;kradzież&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Przyznaję, ciekawe podejście do sprawy. Później jeszcze była wiadomość głosowa
męskim głosem strasząca policją&amp;nbsp;itp.&lt;/p&gt;
&lt;h3&gt;Koniec&lt;/h3&gt;
&lt;p&gt;Zgłosiłem &amp;#8220;panią Antoninę&amp;#8221; i podzieliłem się historią ze znajomymi. Ktoś rzucił
pomysłem posta na bloga. Więc macie&amp;nbsp;historię.&lt;/p&gt;</content><category term="misc"/><category term="życie"/><category term="inpost"/><category term="wałek"/></entry><entry><title>From the diary of AArch64 porter — ID registers</title><link href="https://marcin.juszkiewicz.com.pl/2025/11/12/from-the-diary-of-aarch64-porter-id-registers/" rel="alternate"/><published>2025-11-12T09:19:00+01:00</published><updated>2025-11-12T09:19:00+01:00</updated><author><name>Marcin Juszkiewicz</name></author><id>tag:marcin.juszkiewicz.com.pl,2025-11-12:/2025/11/12/from-the-diary-of-aarch64-porter-id-registers/</id><summary type="html">Checking &lt;span class="caps"&gt;CPU&lt;/span&gt; features can be time&amp;nbsp;consuming.</summary><content type="html">&lt;p&gt;People are used to looking at &amp;#8220;Features&amp;#8221; field in&amp;nbsp;the &lt;code&gt;/proc/cpuinfo&lt;/code&gt; file under
Linux. But does it show everything about the &lt;span class="caps"&gt;CPU&lt;/span&gt; cores present in the&amp;nbsp;system?&lt;/p&gt;
&lt;!--MORE--&gt;

&lt;h3&gt;What &lt;span class="caps"&gt;ID&lt;/span&gt;&amp;nbsp;registers?&lt;/h3&gt;
&lt;p&gt;AArch64 CPUs have a set of &amp;#8220;identification registers&amp;#8221; which are named
&amp;#8220;ID_AA64*_EL1&amp;#8221;, where &amp;#8220;*&amp;#8221; can&amp;nbsp;be:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;span class="caps"&gt;AFR&lt;/span&gt;  &amp;#8212; Auxiliary Feature&amp;nbsp;Registers&lt;/li&gt;
&lt;li&gt;&lt;span class="caps"&gt;DFR&lt;/span&gt;  &amp;#8212; Debug Feature&amp;nbsp;Registers&lt;/li&gt;
&lt;li&gt;&lt;span class="caps"&gt;FPFR&lt;/span&gt; &amp;#8212; Floating-Point Feature&amp;nbsp;Registers&lt;/li&gt;
&lt;li&gt;&lt;span class="caps"&gt;ISAR&lt;/span&gt; &amp;#8212; Instruction Set Attribute&amp;nbsp;Registers&lt;/li&gt;
&lt;li&gt;&lt;span class="caps"&gt;MMFR&lt;/span&gt; &amp;#8212; Memory Model Feature&amp;nbsp;Registers&lt;/li&gt;
&lt;li&gt;&lt;span class="caps"&gt;PFR&lt;/span&gt;  &amp;#8212; Processor Feature&amp;nbsp;Registers&lt;/li&gt;
&lt;li&gt;&lt;span class="caps"&gt;SMFR&lt;/span&gt; &amp;#8212; &lt;span class="caps"&gt;SME&lt;/span&gt; Feature &lt;span class="caps"&gt;ID&lt;/span&gt;&amp;nbsp;Registers&lt;/li&gt;
&lt;li&gt;&lt;span class="caps"&gt;ZFR&lt;/span&gt;  &amp;#8212; &lt;span class="caps"&gt;SVE&lt;/span&gt; Feature &lt;span class="caps"&gt;ID&lt;/span&gt;&amp;nbsp;Registers&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;They can be used to check which features are present in a given &lt;span class="caps"&gt;CPU&lt;/span&gt; core. Their
presence depends on things like age, generation, revision, and the design of the&amp;nbsp;SoC.&lt;/p&gt;
&lt;h3&gt;Introductions of&amp;nbsp;registers&lt;/h3&gt;
&lt;p&gt;As the AArch64 architecture was progressing, more and more identification
registers were needed to describe &lt;span class="caps"&gt;CPU&lt;/span&gt; core&amp;nbsp;features.&lt;/p&gt;
&lt;p&gt;From a quick look through Arm docs, I compiled a simple table of&amp;nbsp;chronology:&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;span class="caps"&gt;ID&lt;/span&gt; register&lt;/th&gt;
&lt;th&gt;Architecture version&lt;/th&gt;
&lt;th&gt;Year&lt;/th&gt;
&lt;th&gt;First Arm core&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;ID_AA64DFR0_EL1&lt;/td&gt;
&lt;td&gt;v8.0-A&lt;/td&gt;
&lt;td&gt;2011/2012&lt;/td&gt;
&lt;td&gt;Cortex-A53, Cortex-A57&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;ID_AA64PFR0_EL1&lt;/td&gt;
&lt;td&gt;v8.0-A&lt;/td&gt;
&lt;td&gt;2011/2012&lt;/td&gt;
&lt;td&gt;Cortex-A53, Cortex-A57&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;ID_AA64ISAR0_EL1&lt;/td&gt;
&lt;td&gt;v8.0-A&lt;/td&gt;
&lt;td&gt;2011/2012&lt;/td&gt;
&lt;td&gt;Cortex-A53, Cortex-A57&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;ID_AA64MMFR0_EL1&lt;/td&gt;
&lt;td&gt;v8.0-A&lt;/td&gt;
&lt;td&gt;2011/2012&lt;/td&gt;
&lt;td&gt;Cortex-A53, Cortex-A57&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;ID_AA64AFR0_EL1&lt;/td&gt;
&lt;td&gt;v8.0-A&lt;/td&gt;
&lt;td&gt;2013/2014&lt;/td&gt;
&lt;td&gt;Cortex-A53, Cortex-A73&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;ID_AA64AFR1_EL1&lt;/td&gt;
&lt;td&gt;v8.0-A&lt;/td&gt;
&lt;td&gt;2013/2014&lt;/td&gt;
&lt;td&gt;Cortex-A53, Cortex-A73&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;ID_AA64DFR1_EL1&lt;/td&gt;
&lt;td&gt;v8.0-A&lt;/td&gt;
&lt;td&gt;2013/2014&lt;/td&gt;
&lt;td&gt;Cortex-A53, Cortex-A73&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;ID_AA64PFR1_EL1&lt;/td&gt;
&lt;td&gt;v8.0-A&lt;/td&gt;
&lt;td&gt;2013/2014&lt;/td&gt;
&lt;td&gt;Cortex-A53, Cortex-A73&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;ID_AA64ISAR1_EL1&lt;/td&gt;
&lt;td&gt;v8.0-A&lt;/td&gt;
&lt;td&gt;2013/2014&lt;/td&gt;
&lt;td&gt;Cortex-A53, Cortex-A73&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;ID_AA64MMFR1_EL1&lt;/td&gt;
&lt;td&gt;v8.0-A&lt;/td&gt;
&lt;td&gt;2013/2014&lt;/td&gt;
&lt;td&gt;Cortex-A53, Cortex-A73&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;ID_AA64MMFR2_EL1&lt;/td&gt;
&lt;td&gt;v8.2-A&lt;/td&gt;
&lt;td&gt;2016&lt;/td&gt;
&lt;td&gt;Cortex-A55, Cortex-A75&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;ID_AA64ZFR0_EL1&lt;/td&gt;
&lt;td&gt;v8.2-A (&lt;span class="caps"&gt;SVE&lt;/span&gt;)&lt;/td&gt;
&lt;td&gt;2017&lt;/td&gt;
&lt;td&gt;Fujitsu &lt;span class="caps"&gt;A64FX&lt;/span&gt;, Cortex-A710&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;ID_AA64MMFR3_EL1&lt;/td&gt;
&lt;td&gt;v8.3-A&lt;/td&gt;
&lt;td&gt;2017&lt;/td&gt;
&lt;td&gt;Cortex-X4&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;ID_AA64ISAR2_EL1&lt;/td&gt;
&lt;td&gt;v8.5-A&lt;/td&gt;
&lt;td&gt;2018&lt;/td&gt;
&lt;td&gt;Cortex-A520&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;ID_AA64ISAR3_EL1&lt;/td&gt;
&lt;td&gt;v8.5-A&lt;/td&gt;
&lt;td&gt;2018&lt;/td&gt;
&lt;td&gt;Cortex-A520&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;ID_AA64MMFR4_EL1&lt;/td&gt;
&lt;td&gt;v8.7-A&lt;/td&gt;
&lt;td&gt;2021&lt;/td&gt;
&lt;td&gt;Cortex-A715&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;ID_AA64SMFR0_EL1&lt;/td&gt;
&lt;td&gt;v9.0-A (&lt;span class="caps"&gt;SME&lt;/span&gt;)&lt;/td&gt;
&lt;td&gt;2021&lt;/td&gt;
&lt;td&gt;Neoverse V1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;ID_AA64FPFR0_EL1&lt;/td&gt;
&lt;td&gt;v9.5-A&lt;/td&gt;
&lt;td&gt;2023&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;ID_AA64PFR2_EL1&lt;/td&gt;
&lt;td&gt;v8.9-A/9.5-A&lt;/td&gt;
&lt;td&gt;2023&lt;/td&gt;
&lt;td&gt;C1&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;I am not 100% sure about years and architecture versions. Not every document has
all versions available on the Arm developer&amp;nbsp;website.&lt;/p&gt;
&lt;p&gt;It also shows that the Cortex-A53 was a very popular core design &amp;#8212; it had
multiple revisions, which added several&amp;nbsp;features.&lt;/p&gt;
&lt;h3&gt;How to read&amp;nbsp;those?&lt;/h3&gt;
&lt;p&gt;In my opinion, the easiest way is to use my &lt;a href="https://github.com/hrw/edk2-armcpuinfo/"&gt;ArmCpuInfo tool&lt;/a&gt;.
It runs on any &lt;span class="caps"&gt;EFI&lt;/span&gt; environment (&lt;span class="caps"&gt;EDK2&lt;/span&gt;, U-Boot, and so on), reads the &lt;span class="caps"&gt;ID&lt;/span&gt; registers
and prints their meaning.
I &lt;a href="/2023/05/03/arm-cpu-info-efi-application/"&gt;wrote about it some time ago&lt;/a&gt;.&lt;/p&gt;
&lt;h3&gt;Empty&amp;nbsp;registers&lt;/h3&gt;
&lt;p&gt;A &lt;span class="caps"&gt;TRM&lt;/span&gt; document may list an &lt;span class="caps"&gt;ID&lt;/span&gt; register, explain all its fields, and it still can
look like something to ignore because it only contains zeros. Like the
ID_AA64MMFR3_EL1 register in
&lt;a href="https://developer.arm.com/documentation/107734/0002/AArch64-registers/AArch64-Identification-registers-summary/ID-AA64MMFR3-EL1--AArch64-Memory-Model-Feature-Register-3"&gt;the Neoverse-V3 &lt;span class="caps"&gt;TRM&lt;/span&gt;&lt;/a&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;SpecFPACC&lt;/li&gt;
&lt;li&gt;&lt;span class="caps"&gt;ADERR&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span class="caps"&gt;SDERR&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span class="caps"&gt;RPZ&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span class="caps"&gt;ANERR&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span class="caps"&gt;SNERR&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;D128_2&lt;/li&gt;
&lt;li&gt;D128&lt;/li&gt;
&lt;li&gt;&lt;span class="caps"&gt;MEC&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span class="caps"&gt;AIE&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span class="caps"&gt;S2POE&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span class="caps"&gt;S1POE&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span class="caps"&gt;S2PIE&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span class="caps"&gt;S1PIE&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span class="caps"&gt;SCTLRX&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span class="caps"&gt;TCRX&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;All those fields have descriptions and they mean something. At the same time,
they all have a 0b0000 value. I assume that the value of some fields may change
when the SoC vendor pays more and begins designing its own version of a &lt;span class="caps"&gt;CPU&lt;/span&gt; core
based on Arm&amp;#8217;s&amp;nbsp;design.&lt;/p&gt;
&lt;h3&gt;Strange&amp;nbsp;cases&lt;/h3&gt;
&lt;p&gt;Cortex-A75 present in the MediaTek Helio G70 SoC reports &lt;span class="caps"&gt;SSBS&lt;/span&gt; (Speculative Store
Bypass Safe) feature under&amp;nbsp;Linux:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;processor       : 6
BogoMIPS        : 26.00
Features        : fp asimd evtstrm aes pmull sha1 sha2 crc32 atomics fphp
                  asimdhp cpuid asimdrdm lrcpc dcpop asimddp asimddp sha512 ssbs
CPU implementer : 0x41
CPU architecture: 8
CPU variant     : 0x3
CPU part        : 0xd0a
CPU revision    : 1
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;But to read it, you need the ID_AA64PRF1_EL1
register, which is not mentioned in
&lt;a href="https://developer.arm.com/documentation/100403/"&gt;the Cortex-A75 technical reference manual (&lt;span class="caps"&gt;TRM&lt;/span&gt;)&lt;/a&gt;.
It is present in the newer versions of 
&lt;a href="https://developer.arm.com/documentation/100442/"&gt;the Cortex-A55 &lt;span class="caps"&gt;TRM&lt;/span&gt;&lt;/a&gt;,
and both &lt;span class="caps"&gt;CPU&lt;/span&gt; core models are present in the Helio G70&amp;nbsp;SoC.&lt;/p&gt;
&lt;p&gt;&lt;span class="caps"&gt;SSBS&lt;/span&gt; (and &lt;span class="caps"&gt;SSBS2&lt;/span&gt;) were introduced into Arm v8.5 and then added to v8.0 to allow
every &lt;span class="caps"&gt;CPU&lt;/span&gt; core to have it&amp;nbsp;implemented.&lt;/p&gt;
&lt;h3&gt;Let me list it for&amp;nbsp;you&lt;/h3&gt;
&lt;p&gt;As you may know, I have &lt;a href="https://gpages.juszkiewicz.com.pl/arm-socs-table/arm-cpu-cores.html"&gt;a page about &lt;span class="caps"&gt;ARM&lt;/span&gt; &lt;span class="caps"&gt;CPU&lt;/span&gt; cores&lt;/a&gt;
where I list some basic information. Last weekend I added showing of potential
&lt;span class="caps"&gt;CPU&lt;/span&gt; features to it. Small&amp;nbsp;example:&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;span class="caps"&gt;CPU&lt;/span&gt;&amp;nbsp;core&amp;nbsp;name&lt;/th&gt;
&lt;th&gt;features&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Cortex-A53&lt;/td&gt;
&lt;td&gt;&lt;span class="caps"&gt;AA32EL0&lt;/span&gt;, &lt;span class="caps"&gt;AA32EL1&lt;/span&gt;, &lt;span class="caps"&gt;AA32EL2&lt;/span&gt;, &lt;span class="caps"&gt;AA32EL3&lt;/span&gt;, &lt;span class="caps"&gt;AA64EL0&lt;/span&gt;, &lt;span class="caps"&gt;AA64EL1&lt;/span&gt;, &lt;span class="caps"&gt;AA64EL2&lt;/span&gt;, &lt;span class="caps"&gt;AA64EL3&lt;/span&gt;, &lt;span class="caps"&gt;AES&lt;/span&gt;, &lt;span class="caps"&gt;ASID16&lt;/span&gt;, AdvSIMD, &lt;span class="caps"&gt;CRC32&lt;/span&gt;, Debugv8, DoubleLock, &lt;span class="caps"&gt;FP&lt;/span&gt;, MixedEnd, MixedEndEL0, &lt;span class="caps"&gt;PMULL&lt;/span&gt;, PMUv3, &lt;span class="caps"&gt;SHA1&lt;/span&gt;, &lt;span class="caps"&gt;SHA256&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Cortex-A520&lt;/td&gt;
&lt;td&gt;&lt;span class="caps"&gt;AA64EL0&lt;/span&gt;, &lt;span class="caps"&gt;AA64EL1&lt;/span&gt;, &lt;span class="caps"&gt;AA64EL2&lt;/span&gt;, &lt;span class="caps"&gt;AA64EL3&lt;/span&gt;, &lt;span class="caps"&gt;AES&lt;/span&gt;, &lt;span class="caps"&gt;AFP&lt;/span&gt;, AMUv1, &lt;span class="caps"&gt;ASID16&lt;/span&gt;, AdvSIMD, &lt;span class="caps"&gt;BBM&lt;/span&gt;, &lt;span class="caps"&gt;BF16&lt;/span&gt;, &lt;span class="caps"&gt;BTI&lt;/span&gt;, &lt;span class="caps"&gt;CCIDX&lt;/span&gt;, &lt;span class="caps"&gt;CONSTPACFIELD&lt;/span&gt;, &lt;span class="caps"&gt;CRC32&lt;/span&gt;, CSV2_2, &lt;span class="caps"&gt;CSV3&lt;/span&gt;, &lt;span class="caps"&gt;DGH&lt;/span&gt;, &lt;span class="caps"&gt;DIT&lt;/span&gt;, &lt;span class="caps"&gt;DPB2&lt;/span&gt;, Debugv8p4, DotProd, &lt;span class="caps"&gt;E0PD&lt;/span&gt;, &lt;span class="caps"&gt;ECBHB&lt;/span&gt;, ECV_POFF, &lt;span class="caps"&gt;EVT&lt;/span&gt;, &lt;span class="caps"&gt;FCMA&lt;/span&gt;, &lt;span class="caps"&gt;FGT&lt;/span&gt;, &lt;span class="caps"&gt;FHM&lt;/span&gt;, &lt;span class="caps"&gt;FP&lt;/span&gt;, &lt;span class="caps"&gt;FP16&lt;/span&gt;, &lt;span class="caps"&gt;FRINTTS&lt;/span&gt;, FlagM2, &lt;span class="caps"&gt;HAFDBS&lt;/span&gt;, &lt;span class="caps"&gt;HCX&lt;/span&gt;, &lt;span class="caps"&gt;HPDS2&lt;/span&gt;, &lt;span class="caps"&gt;HPMN0&lt;/span&gt;, &lt;span class="caps"&gt;I8MM&lt;/span&gt;, &lt;span class="caps"&gt;IDST&lt;/span&gt;, &lt;span class="caps"&gt;IESB&lt;/span&gt;, &lt;span class="caps"&gt;JSCVT&lt;/span&gt;, &lt;span class="caps"&gt;LOR&lt;/span&gt;, &lt;span class="caps"&gt;LRCPC&lt;/span&gt;, &lt;span class="caps"&gt;LRCPC2&lt;/span&gt;, &lt;span class="caps"&gt;LSE&lt;/span&gt;, &lt;span class="caps"&gt;LSE2&lt;/span&gt;, &lt;span class="caps"&gt;MTE3&lt;/span&gt;, MixedEnd, MixedEndEL0, &lt;span class="caps"&gt;PACQARMA3&lt;/span&gt;, &lt;span class="caps"&gt;PAN3&lt;/span&gt;, PAuth2, &lt;span class="caps"&gt;PMULL&lt;/span&gt;, PMUv3p7, RASv1p1, &lt;span class="caps"&gt;RDM&lt;/span&gt;, &lt;span class="caps"&gt;S2FWB&lt;/span&gt;, &lt;span class="caps"&gt;SB&lt;/span&gt;, &lt;span class="caps"&gt;SHA1&lt;/span&gt;, &lt;span class="caps"&gt;SHA256&lt;/span&gt;, &lt;span class="caps"&gt;SHA3&lt;/span&gt;, &lt;span class="caps"&gt;SHA512&lt;/span&gt;, &lt;span class="caps"&gt;SM3&lt;/span&gt;, &lt;span class="caps"&gt;SM4&lt;/span&gt;, &lt;span class="caps"&gt;SPECRES&lt;/span&gt;, &lt;span class="caps"&gt;SSBS2&lt;/span&gt;, &lt;span class="caps"&gt;SVE&lt;/span&gt;, &lt;span class="caps"&gt;SVE2&lt;/span&gt;, SVE_AES, SVE_BitPerm, SVE_PMULL128, SVE_SHA3, SVE_SM4, &lt;span class="caps"&gt;TLBIOS&lt;/span&gt;, &lt;span class="caps"&gt;TLBIRANGE&lt;/span&gt;, &lt;span class="caps"&gt;TRBE&lt;/span&gt;, &lt;span class="caps"&gt;TRF&lt;/span&gt;, &lt;span class="caps"&gt;TTCNP&lt;/span&gt;, &lt;span class="caps"&gt;TTL&lt;/span&gt;, &lt;span class="caps"&gt;TTST&lt;/span&gt;, &lt;span class="caps"&gt;UAO&lt;/span&gt;, &lt;span class="caps"&gt;VHE&lt;/span&gt;, &lt;span class="caps"&gt;VMID16&lt;/span&gt;, &lt;span class="caps"&gt;XNX&lt;/span&gt;, &lt;span class="caps"&gt;XS&lt;/span&gt;, nTLBPA&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;There may be some mistakes in the table &amp;#8212; I strongly advise checking Technical
Reference Manuals (TRMs) to be sure. Please report any error &amp;#8212; I will take a
look at fixing&amp;nbsp;them.&lt;/p&gt;</content><category term="misc"/><category term="aarch64"/><category term="python"/><category term="development"/><category term="edk2"/><category term="linux"/></entry><entry><title>Finished Factorio: Space Age under 40 hours</title><link href="https://marcin.juszkiewicz.com.pl/2025/10/22/finished-factorio-space-age-under-40-hours/" rel="alternate"/><published>2025-10-22T19:53:00+02:00</published><updated>2025-10-22T19:53:00+02:00</updated><author><name>Marcin Juszkiewicz</name></author><id>tag:marcin.juszkiewicz.com.pl,2025-10-22:/2025/10/22/finished-factorio-space-age-under-40-hours/</id><summary type="html">I need to find some other game to&amp;nbsp;play.</summary><content type="html">&lt;p&gt;Factorio: Space Age added new achievements, so I no longer had 100% done. So,
some time ago, I started &amp;#8220;finish &lt;span class="caps"&gt;SA&lt;/span&gt; under 40 hours&amp;#8221; challenge to get back to
fully finished game&amp;nbsp;state.&lt;/p&gt;
&lt;!--MORE--&gt;

&lt;h3&gt;Gathering of&amp;nbsp;hints&lt;/h3&gt;
&lt;p&gt;Before starting, I decided to check how people approached this achievement. One of
solutions was the 
&lt;a href="https://www.reddit.com/r/factorio/comments/1gsza9m/express_delivery_a_brief_guide_for_the_best/"&gt;&amp;#8216;Express Delivery: a brief guide for the best achievement in the game. Ask me anything!&amp;#8217;&lt;/a&gt;
post by &amp;#8220;Intrepid_Teacher1597&amp;#8221; on Reddit. With clean split to&amp;nbsp;parts:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Nauvis&lt;/li&gt;
&lt;li&gt;Vulkanus&lt;/li&gt;
&lt;li&gt;Fulgora&lt;/li&gt;
&lt;li&gt;Gleba&lt;/li&gt;
&lt;li&gt;Nauvis (to redesign using technologies from other&amp;nbsp;planets)&lt;/li&gt;
&lt;li&gt;Aquillo&lt;/li&gt;
&lt;li&gt;Solar&amp;#8217;s&amp;nbsp;Edge&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I went through my old blueprints, refreshed my
&lt;a href="https://factorioprints.com/view/-OEYpgwrnR1zCwk_r2JF"&gt;&amp;#8216;Microfactories for Space Age&amp;#8217;&lt;/a&gt;
set from some old savegame and started&amp;nbsp;playing.&lt;/p&gt;
&lt;p&gt;I opted for rich resource settings and made islands on Fulgora large enough to
not have issues with space. Later, it turned out that I did not looked closely
at how Aquillo would&amp;nbsp;look&amp;#8230;&lt;/p&gt;
&lt;h3&gt;Nauvis&lt;/h3&gt;
&lt;p&gt;I do not like the first hours in Factorio. No bots means everything needs to be
built by hand. The awful part. So, I used 
&amp;#8216;&lt;a href="https://factorioprints.com/view/-LvWjwX1U25krBg-auKR"&gt;Brian&amp;#8217;s bootstrap&lt;/a&gt;&amp;#8216;
by Brian White, as in some of my previous games, to make it as compact and
quick as&amp;nbsp;possible.&lt;/p&gt;
&lt;p&gt;Once I had bots I designed Nauvis base using blueprints from my previous game.
Which turned out to be a bad idea as it quickly showed that there would be
serious lockdowns&amp;nbsp;later.&lt;/p&gt;
&lt;p&gt;So I moved back a bit and redesigned using 
&lt;a href="https://factorioprints.com/view/-OXRxN4v1U8dwIjSO4l4"&gt;Nilaus cityblocks 2.0&lt;/a&gt;
blueprints. Quick, simple and organised. Probably should have started with&amp;nbsp;them.&lt;/p&gt;
&lt;h3&gt;Space platform and&amp;nbsp;ships&lt;/h3&gt;
&lt;p&gt;To get to space you need space science. A simple
&amp;#8216;&lt;a href="https://factorioprints.com/view/-OO75wt7RLuAYOSbYspD"&gt;75 &lt;span class="caps"&gt;SPM&lt;/span&gt; space platform&lt;/a&gt;&amp;#8216;
by Brandon Lam was enough for a start. I did some edits to it later as some
inserters required adding conditions to keep the platform&amp;nbsp;operational.&lt;/p&gt;
&lt;p&gt;For inner planets transport I wanted something small. The
&amp;#8216;&lt;a href="https://www.factorio.school/view/-OZ67t6Gl8HF8cDK56Bf"&gt;Early Game Ship&lt;/a&gt;&amp;#8216; by
Ian Coleman was enough for most of the time. At some point, I enlarged storage
space a bit and built a second one. One was used for transporting science packs
and the other for&amp;nbsp;deliveries.&lt;/p&gt;
&lt;h3&gt;Vulkanus&lt;/h3&gt;
&lt;p&gt;Landed, built a small base and went&amp;nbsp;hunting.&lt;/p&gt;
&lt;p&gt;Small demolishers are easy to kill when you have 50 gun turrets and a few
thousand red ammo. Set a 5x10 block of turrets on your territory next to the
border, fill them with ammo, use some decoys to make the demolisher angry and
walk away. At some point, you get notification and a new territory. Repeat a few
times and there will be more than needed space for&amp;nbsp;expansion.&lt;/p&gt;
&lt;p&gt;Got tungsten ore, setup a bus, a set of my microfactories making things, 300+
megawatts of power from sulfuric acid and was ready to go to the next&amp;nbsp;planet.&lt;/p&gt;
&lt;p&gt;Lava is a beautiful resource &amp;#8212; infinite amounts of molten iron/copper make
things so much&amp;nbsp;easier.&lt;/p&gt;
&lt;h3&gt;Fulgora&lt;/h3&gt;
&lt;p&gt;The recycling planet. The usual process: land, walk around, find a large island,
put few hundred accumulators for power and start&amp;nbsp;building.&lt;/p&gt;
&lt;p&gt;Again I used my microfactories set and something like six thousand accumulators
for&amp;nbsp;power.&lt;/p&gt;
&lt;p&gt;Several recycler blocks to get basic components (like plates) and Fulgora is a
place where you can build so many&amp;nbsp;things&amp;#8230;&lt;/p&gt;
&lt;p&gt;Fulgora and Vulkanus were my main sources for several components for the other&amp;nbsp;planets.&lt;/p&gt;
&lt;h3&gt;Gleba&lt;/h3&gt;
&lt;p&gt;I am not a fan of Gleba. It is too biological for me. Spoilage everywhere,
nutrients&amp;nbsp;everywhere&amp;#8230;&lt;/p&gt;
&lt;p&gt;In the beginning, I planned to use my microfactories. But kick-starting it took a
bit too much time so I went back and used the
&lt;a href="https://factorioprints.com/view/-OHIIG6j6nkHquAEnPWg"&gt;Gleba starter factory&lt;/a&gt;
instead. One complex block, built by bots, delivers everything I needed. This
blueprint is expected to be replaced by the main base but it was enough for my&amp;nbsp;challenge.&lt;/p&gt;
&lt;h3&gt;Nauvis&amp;nbsp;again&lt;/h3&gt;
&lt;p&gt;While bots were building factory on Gleba I started redesigning base on Nauvis.
Drilling machines from Vulkanus instead of electric miners gave me much more
resources. And they stack items on belts once you research Gleba&amp;nbsp;technologies.&lt;/p&gt;
&lt;p&gt;Melting iron/copper ore solved another problem as liquids transfer faster than
belts. Furthermore foundries from Vulkanus allow to produce several things
without any intermediate steps (direct steel, pipes, wheels or copper&amp;nbsp;wire).&lt;/p&gt;
&lt;p&gt;Add &lt;span class="caps"&gt;EM&lt;/span&gt; plants from Fulgora and you get electronic chips (green, red, blue ones)
in much bigger amounts than before. For example: my cityblock was making two red
belts of electronic chips (that&amp;#8217;s 60/s). After the redesign, it was 280/s on two
green belts (required stack inserters to pass 75/s limit of one green&amp;nbsp;belt).&lt;/p&gt;
&lt;p&gt;Modules, &lt;span class="caps"&gt;LDS&lt;/span&gt;, and so on are also much faster. The old hub/mall &amp;#8220;making
everything&amp;#8221;, can get upgrades, such foundries making wheels and pipes directly
from molten iron instead of using iron&amp;nbsp;plates.&lt;/p&gt;
&lt;h3&gt;Long distance space&amp;nbsp;ship&lt;/h3&gt;
&lt;p&gt;At that stage I also finished building space ship for next stage. I used &amp;#8216;&lt;a href="https://factorioprints.com/view/-OYAqqPwZ736BzmjcKav"&gt;Easy
normal quality Edge ship&lt;/a&gt;&amp;#8216;
by Wobbleland as a base for&amp;nbsp;it.&lt;/p&gt;
&lt;p&gt;After some trial flights, I edited it to have a bit more cargo space. I cut ship
in half, added some extra storage, and it became my only long distance&amp;nbsp;ship.&lt;/p&gt;
&lt;h3&gt;Aquillo&lt;/h3&gt;
&lt;p&gt;The frozen hell. Planet where all you have is an ammoniacal ocean with some
small islands here and there. Things freeze if you do not heat them, bots
discharge five times quicker than usual&amp;nbsp;etc.&lt;/p&gt;
&lt;p&gt;This is a place where you need to be properly prepared. Mech armor is mandatory,
along with 4 portable fission reactors and &lt;span class="caps"&gt;MK2&lt;/span&gt; or &lt;span class="caps"&gt;MK3&lt;/span&gt; batteries with &lt;span class="caps"&gt;MK2&lt;/span&gt;
roboports. Anything below that, and your bots are useless and for most of the
time you run without any power in the&amp;nbsp;armour.&lt;/p&gt;
&lt;p&gt;Careful design is a must. I landed, tried to set up base and started adding what
I had forgotten to take with me into my notes. Restarted and landed again. And
again.&amp;nbsp;And&amp;#8230;&lt;/p&gt;
&lt;p&gt;Then I took some time and designed whole base with the main bus idea. To not
have to rely on bots for the most of the&amp;nbsp;base.&lt;/p&gt;
&lt;p&gt;First, I built some small starter to get water from ice (from ammoniacal
solution) so I could have power. And two nuclear reactors to provide heat among
heating towers powered by rocket fuel (which I took with me from&amp;nbsp;Fulgora).&lt;/p&gt;
&lt;p&gt;Then, I built the main bus piece by piece up to cryogenic science packs and the
space port. It took some time to squeeze everything close to each other. Then
cut it into pieces and restarted game from landing point. I have to admit &amp;#8212; it
looks nice at&amp;nbsp;night:&lt;/p&gt;
&lt;figure id="__yafg-figure-1"&gt;
&lt;img alt="Aquillo at night" src="/files/2025/10/aquillo-700x.jpg" title="Aquillo at night"&gt;
&lt;figcaption&gt;Aquillo at night&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;Once production of science packs started I delivered them to Nauvis and started
researching the final&amp;nbsp;technologies:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;quantum&amp;nbsp;computing&lt;/li&gt;
&lt;li&gt;fusion&amp;nbsp;power&lt;/li&gt;
&lt;li&gt;promethium&amp;nbsp;science&lt;/li&gt;
&lt;li&gt;railgun&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Brought all components required for quantum processors and built enough of them
to make two railguns for my space&amp;nbsp;ship.&lt;/p&gt;
&lt;h3&gt;Solar&amp;#8217;s&amp;nbsp;Edge&lt;/h3&gt;
&lt;p&gt;With about two hours left before the 40 hours limit my ship was ready to fly to
Solar&amp;#8217;s Edge (which is the requirement to finish the game). Loaded with yellow
magazines, yellow rockets and railgun ammo it went from Vulkanus to Aquillo,
mounted the missing railguns and went away, to Solar&amp;#8217;s&amp;nbsp;Edge.&lt;/p&gt;
&lt;p&gt;It was a one-way trip as all I needed was to get there, without having to go back.
The railgun ammo ended just before the end, there were fewer than a hundred
rockets left as&amp;nbsp;well.&lt;/p&gt;
&lt;p&gt;But it was enough to finish the game. Now I have 100% of achievements&amp;nbsp;again:&lt;/p&gt;
&lt;figure id="__yafg-figure-2"&gt;
&lt;img alt="100% of achievements done" src="/files/2025/10/100.png" title="100% of achievements done"&gt;
&lt;figcaption&gt;100% of achievements done&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;That &amp;#8220;finish under 40 hours&amp;#8221; game started three months ago and took over 4.6 &lt;span class="caps"&gt;GB&lt;/span&gt;
of storage for save&amp;nbsp;files.&lt;/p&gt;
&lt;h3&gt;What&amp;#8217;s&amp;nbsp;next?&lt;/h3&gt;
&lt;p&gt;I should put Factorio away for a year or so. Because for me, &lt;a href="/2025/03/04/factorio-is-a-drug/"&gt;Factorio is
a drug&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Otherwise, I will start adding mods and try to get this base expanded, redone &amp;#8220;in
a proper way&amp;#8221; and so&amp;nbsp;on.&lt;/p&gt;</content><category term="misc"/><category term="factorio"/><category term="games"/></entry><entry><title>The end of my prepaid</title><link href="https://marcin.juszkiewicz.com.pl/2025/10/20/the-end-of-my-prepaid/" rel="alternate"/><published>2025-10-20T18:05:00+02:00</published><updated>2025-10-20T18:05:00+02:00</updated><author><name>Marcin Juszkiewicz</name></author><id>tag:marcin.juszkiewicz.com.pl,2025-10-20:/2025/10/20/the-end-of-my-prepaid/</id><summary type="html">Time to end that numbers&amp;nbsp;madness</summary><content type="html">&lt;p&gt;My phone number started in the previous millennium. It began with the Era
operator as a postpaid customer, then I moved it to Plus (still postpaid) and 14
years ago I became a prepaid customer with Orange. This is going to change&amp;nbsp;again.&lt;/p&gt;
&lt;!--MORE--&gt;

&lt;h3&gt;Beginning&lt;/h3&gt;
&lt;p&gt;I do not remember why I went with prepaid instead of postpaid all those 14 years
ago. Maybe conditions were better, or&amp;nbsp;something.&lt;/p&gt;
&lt;p&gt;I chose the &amp;#8216;Orange Free na Kartę&amp;#8217; offer, where I went through the options and
enabled everything that made sense to me. And disabled&amp;nbsp;otherwise.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;More data with every top-up?&amp;nbsp;Checked.&lt;/li&gt;
&lt;li&gt;More data with every monthly packet?&amp;nbsp;Checked&lt;/li&gt;
&lt;li&gt;Cost limit for the international roaming?&amp;nbsp;Checked&lt;/li&gt;
&lt;li&gt;No expiration of data as long as there is money on the account?&amp;nbsp;Checked&lt;/li&gt;
&lt;li&gt;No calls to 0-700 numbers?&amp;nbsp;Checked&lt;/li&gt;
&lt;li&gt;No text messages to paid numbers?&amp;nbsp;Checked&lt;/li&gt;
&lt;li&gt;etc.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Funny&amp;nbsp;numbers&lt;/h3&gt;
&lt;p&gt;Months turned into years. Better &amp;#8220;calls + data&amp;#8221; packages were introduced,
and I switched to a monthly&amp;nbsp;one.&lt;/p&gt;
&lt;p&gt;At some point, I collected 1 &lt;span class="caps"&gt;TB&lt;/span&gt; of data to use, then a second, a third, and
additional 2 &lt;span class="caps"&gt;TB&lt;/span&gt; of data came from regular&amp;nbsp;top-ups.&lt;/p&gt;
&lt;p&gt;I went through my archive of text messages and generated this chart showing
progress since 2018. The 1 &lt;span class="caps"&gt;TB&lt;/span&gt; jump this year was due to some offer&amp;nbsp;change.&lt;/p&gt;
&lt;figure id="__yafg-figure-1"&gt;
&lt;img alt="The amount of available data in time" src="/files/2025/10/wykres.jpg" title="The amount of available data in time"&gt;
&lt;figcaption&gt;The amount of available data in time&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;Over 8 &lt;span class="caps"&gt;TB&lt;/span&gt; of data to use means &amp;#8220;some kind of&amp;#8221; unlimited data transfers, right?
I have no idea how much time it would take to make use of it with normal use.
I asked a friend, and he told me that, according to the operator data, I had used
226 &lt;span class="caps"&gt;GB&lt;/span&gt; in Poland and 14.2 &lt;span class="caps"&gt;GB&lt;/span&gt; abroad during the last&amp;nbsp;year.&lt;/p&gt;
&lt;p&gt;There were some funny moments, like the one where I was going abroad and noticed
that, on my new phone, I did not have any offline music for a flight. And I was
in a bus from Szczecin to Berlin already. Fetching a few &lt;span class="caps"&gt;GB&lt;/span&gt; of music took a few
minutes &amp;#8212; managed to grab all I wanted before crossing border (the &lt;span class="caps"&gt;GSM&lt;/span&gt; coverage
in Germany, next to Polish border, was&amp;nbsp;poor).&lt;/p&gt;
&lt;p&gt;All that was due to the options I chose 14 years ago and the wise selection of
&amp;#8220;calls+data&amp;#8221; monthly&amp;nbsp;packets.&lt;/p&gt;
&lt;h3&gt;What&amp;#8217;s&amp;nbsp;next?&lt;/h3&gt;
&lt;p&gt;I am moving to a postpaid service, still with Orange. The first year will be
free as it gets connected with my Internet-at-home bill, and the next year would
cost me less than I am currently paying. It still offers unlimited
calls/messages, &amp;#8220;only&amp;#8221; 300 &lt;span class="caps"&gt;GB&lt;/span&gt; of data per month and 27 &lt;span class="caps"&gt;GB&lt;/span&gt; of &lt;span class="caps"&gt;EU&lt;/span&gt; roaming. The
last one may look small compared to 226 &lt;span class="caps"&gt;GB&lt;/span&gt; I have now, but it is still more than
I normally use per&amp;nbsp;month.&lt;/p&gt;</content><category term="misc"/><category term="phone"/></entry><entry><title>Mechanicon 2025</title><link href="https://marcin.juszkiewicz.com.pl/2025/10/15/mechanicon-2025/" rel="alternate"/><published>2025-10-15T09:37:00+02:00</published><updated>2025-10-15T09:37:00+02:00</updated><author><name>Marcin Juszkiewicz</name></author><id>tag:marcin.juszkiewicz.com.pl,2025-10-15:/2025/10/15/mechanicon-2025/</id><summary type="html">Keyboards, so many&amp;nbsp;keyboards!</summary><content type="html">&lt;p&gt;Last Saturday, I attended Mechanicon in Frankfurt. It was an event related to
mechanical keyboards, gathering over 600 visitors, which made it the biggest
event of its kind in&amp;nbsp;Europe.&lt;/p&gt;
&lt;!--MORE--&gt;

&lt;h3&gt;Why&lt;/h3&gt;
&lt;p&gt;I started thinking of making or purchasing a mechanical keyboard a long time
ago. And half a year ago &lt;a href="/2025/03/09/i-built-my-first-mechanical-keyboard/"&gt;I finally built my own&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;But having one does not mean that is the end of the story. There are so many
different layouts, options, and ideas within keyboard communities that trying
them all on my own would take me years. So, I decided that it would be easier to
attend a gathering of mechanical keyboard users/nerds and check what they had&amp;nbsp;made.&lt;/p&gt;
&lt;p&gt;I was told by a few people that I should go to Frankfurt for
&lt;a href="https://mechanicon.io/"&gt;Mechanicon&lt;/a&gt;. So I&amp;nbsp;did.&lt;/p&gt;
&lt;h3&gt;My&amp;nbsp;keyboards&lt;/h3&gt;
&lt;p&gt;I have decided to take two of my mechanical keyboards with&amp;nbsp;me:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Alicja&lt;/li&gt;
&lt;li&gt;Alpha60&lt;/li&gt;
&lt;/ul&gt;
&lt;figure id="__yafg-figure-1"&gt;
&lt;img alt="My keyboards" src="/files/2025/10/mykbds-700x.jpg" title="My keyboards"&gt;
&lt;figcaption&gt;My keyboards&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;The first one is my daily keyboard &amp;#8212; the one with a slightly modified Adelheid
layout, hand-wired, with two encoders. I described it in one of my older blog&amp;nbsp;posts.&lt;/p&gt;
&lt;p&gt;The second one is a typical 60% model, but with the keys set in alphabetical
order. So, &amp;#8220;End&amp;#8221; comes after &amp;#8220;E&amp;#8221; and before the &amp;#8220;Esc&amp;#8221;&amp;nbsp;key.&lt;/p&gt;
&lt;p&gt;I bought it as a broken one (for parts, as I only needed one key). My daughter
wanted to play with the keycaps and asked if she could put them in the
alphabetical order. I agreed and later joked that it can be made into a working&amp;nbsp;keyboard.&lt;/p&gt;
&lt;p&gt;Months passed and I found time for it a week before Mechanicon. I removed the
&lt;span class="caps"&gt;PCB&lt;/span&gt; and wired the entire keyboard by hand. As with Alicja, I used the Ultimate
Pico as the microcontroller with &lt;span class="caps"&gt;QMK&lt;/span&gt;&amp;nbsp;firmware.&lt;/p&gt;
&lt;h3&gt;Mechanicon&amp;nbsp;2025&lt;/h3&gt;
&lt;p&gt;In the morning, I packed both my keyboards into my backpack and went for a walk.
After having breakfast on the way (shakshouka and coffee), I arrived about an
hour too&amp;nbsp;early.&lt;/p&gt;
&lt;p&gt;I took a table, placed both keyboards on display with A4 information sheets, and
went to see who was already&amp;nbsp;there.&lt;/p&gt;
&lt;p&gt;I spoke with Cherry &lt;span class="caps"&gt;MX&lt;/span&gt; folks, saw their collection of industrial keyboards and
discussed the 27.5 kg monster they had on their stand. There was a small album
with pictures showing the build process. Nice&amp;nbsp;stuff.&lt;/p&gt;
&lt;figure id="__yafg-figure-2"&gt;
&lt;img alt="27.5 kg keyboard made from a steel block" src="/files/2025/10/27.5kg-700x.jpg" title="27.5 kg keyboard made from a steel block"&gt;
&lt;figcaption&gt;27.5 kg keyboard made from a steel block&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;Khor had cables of many kinds and sold several other accessories. They made the
official badge for Mechanicon and for some past&amp;nbsp;events.&lt;/p&gt;
&lt;figure id="__yafg-figure-3"&gt;
&lt;img alt="Mechanicon badge next to Bologna badge" src="/files/2025/10/badges-700x.jpg" title="Mechanicon badge next to Bologna badge"&gt;
&lt;figcaption&gt;Mechanicon badge next to Bologna badge&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;Cerakey had keyboards with ceramic keycaps and ceramic wrist&amp;nbsp;pads.&lt;/p&gt;
&lt;figure id="__yafg-figure-4"&gt;
&lt;img alt="Keyboard with ceramic keycaps and such wrist pad" src="/files/2025/10/cerakey-700x.jpg" title="Keyboard with ceramic keycaps and such wrist pad"&gt;
&lt;figcaption&gt;Keyboard with ceramic keycaps and such wrist pad&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;As more and more people were arriving, I went back to the keyboard showcase room
to see what others had&amp;nbsp;brought.&lt;/p&gt;
&lt;figure id="__yafg-figure-5"&gt;
&lt;img alt="Mechanicon showcase room" src="/files/2025/10/showroom-700x.jpg" title="Mechanicon showcase room (photo by aCErb)"&gt;
&lt;figcaption&gt;Mechanicon showcase room (photo by aCErb)&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;h3&gt;Keyboards&lt;/h3&gt;
&lt;p&gt;Put a few hundred mechanical keyboard nerds in one room and you will not know
where to look. There were so many different layouts, designs, accessories,&amp;nbsp;cases&amp;#8230;&lt;/p&gt;
&lt;h4&gt;Alice&lt;/h4&gt;
&lt;p&gt;As my daily keyboard is based on a variant of &lt;span class="caps"&gt;TGR&lt;/span&gt; Alice I looked especially for
any similar models. There were a few Alice ones, some Arisu variants and some in
a similar shape. No one had an Adelheid or Red Herring based&amp;nbsp;keyboard.&lt;/p&gt;
&lt;figure id="__yafg-figure-6"&gt;
&lt;img alt="TGR Alice" src="/files/2025/10/alice-700x.jpg" title="TGR Alice"&gt;
&lt;figcaption&gt;&lt;span class="caps"&gt;TGR&lt;/span&gt; Alice&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure id="__yafg-figure-7"&gt;
&lt;img alt="Alice Duo" src="/files/2025/10/aliceduo-700x.jpg" title="Alice Duo"&gt;
&lt;figcaption&gt;Alice Duo&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;h4&gt;Split and minimalistic&amp;nbsp;ones&lt;/h4&gt;
&lt;p&gt;Nowadays, when you do a web search for an ergonomic keyboard, you mostly get
links to split or minimalistic keyboards. Just the names change from year to
year. Or the amount of keys. Or the way they connect to each&amp;nbsp;other.&lt;/p&gt;
&lt;p&gt;The same was here: flat keyboards or ones with different types of mounts
allowing the keyboard to be set at any angle. There were also vertical split
keyboards. Some even had a trackball, but it did not look ergonomic to&amp;nbsp;me.&lt;/p&gt;
&lt;figure id="__yafg-figure-8"&gt;
&lt;img alt="Split keyboard" src="/files/2025/10/split01-700x.jpg" title="Split keyboard"&gt;
&lt;figcaption&gt;Split keyboard&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure id="__yafg-figure-9"&gt;
&lt;img alt="Similar split keyboard with tilt mounts and low profile keys" src="/files/2025/10/split02-700x.jpg" title="Similar split keyboard with tilt mounts and low profile keys"&gt;
&lt;figcaption&gt;Similar split keyboard with tilt mounts and low profile keys&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure id="__yafg-figure-10"&gt;
&lt;img alt="Minimalistic one" src="/files/2025/10/split04-700x.jpg" title="Minimalistic one"&gt;
&lt;figcaption&gt;Minimalistic one&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure id="__yafg-figure-11"&gt;
&lt;img alt="Butterfly style keyboard - just 20 keys" src="/files/2025/10/split03-700x.jpg" title="Butterfly style keyboard - just 20 keys"&gt;
&lt;figcaption&gt;Butterfly style keyboard - just 20 keys&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure id="__yafg-figure-12"&gt;
&lt;img alt="Vertical split keyboard with trackball" src="/files/2025/10/split-trackball-700x.jpg" title="Vertical split keyboard with trackball"&gt;
&lt;figcaption&gt;Vertical split keyboard with trackball&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;h4&gt;&lt;span class="caps"&gt;PC105&lt;/span&gt;&amp;nbsp;family&lt;/h4&gt;
&lt;p&gt;As usual, there was a lot of &amp;#8220;standard&amp;#8221; keyboards and their variants. From
normal &lt;span class="caps"&gt;PC105&lt;/span&gt; ones to 60% ones with everything around them: 60%, 65%, &lt;span class="caps"&gt;TKL&lt;/span&gt;, ones
with an extra row above function keys, ones with extra columns on the left,
right, and so&amp;nbsp;on.&lt;/p&gt;
&lt;p&gt;Boring ones&amp;nbsp;;D&lt;/p&gt;
&lt;h4&gt;Funny&amp;nbsp;entries&lt;/h4&gt;
&lt;p&gt;The person next to me had a lamp in a shape of a key &amp;#8212; a nice-looking&amp;nbsp;one.&lt;/p&gt;
&lt;p&gt;Someone prepared keyboard from chocolate. At first, I thought that it was a case
and keycaps made to look edible, but an hour later I saw a knife next to it and
part of the keyboard had already been eaten. This was a good chocolate&amp;nbsp;mix.&lt;/p&gt;
&lt;figure id="__yafg-figure-13"&gt;
&lt;img alt="Chocolate one" src="/files/2025/10/chocolate-700x.jpg" title="Chocolate one"&gt;
&lt;figcaption&gt;Chocolate one&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;h3&gt;Freebies&lt;/h3&gt;
&lt;p&gt;There was a place called &amp;#8220;&lt;span class="caps"&gt;PCB&lt;/span&gt; Exchange&amp;#8221; where anyone could drop unneeded
items for others to take. I looked at the options and took a Hummingbird one.
Later, I realised that it requires different type of switch to what I&amp;nbsp;have&amp;#8230;&lt;/p&gt;
&lt;p&gt;At one stand, there was a &amp;#8220;Free Shit&amp;#8221; box. I spoke with the owner and got a bag
with one hundred used switches and another with an interesting keycaps&amp;nbsp;set.&lt;/p&gt;
&lt;p&gt;On one stand, we were talking about hand wiring, and I was shown a tool: a plate
fork. It was a tool I did not know, yet it is so useful! In short, it is a tool
to insert between a switch and a keycap to be able to take the keycap out
without moving the switch. This is very useful when your switches are only held
in the keyboard by&amp;nbsp;luck.&lt;/p&gt;
&lt;figure id="__yafg-figure-14"&gt;
&lt;img alt="Plate fork" src="/files/2025/10/platefork-700x.jpg" title="Plate fork"&gt;
&lt;figcaption&gt;Plate fork&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;At some stands there was an opportunity to take some random switches. I joked
that it may be possible to make a keyboard where every switch is of a different
kind. Maybe one day, just for&amp;nbsp;fun.&lt;/p&gt;
&lt;p&gt;As I mentioned used keycaps at some stand, I was given a tool to open switches
for maintenance. Another thing I did not expect to ever&amp;nbsp;need.&lt;/p&gt;
&lt;h3&gt;Summary&lt;/h3&gt;
&lt;p&gt;Going to Mechanicon was a very good decision. I particularly enjoyed the
look on the faces of people when they saw my hand-wired keyboard! Or when they
tried to enter their name on a 60% keyboard with alphabetical order&amp;nbsp;:D&lt;/p&gt;
&lt;p&gt;I have several ideas for my next keyboard project. Perhaps I will go with
&lt;a href="https://github.com/mtl/keyboard-pcbs"&gt;Amoeba mini-PCBs&lt;/a&gt; (there are many
versions of them in repository forks). I need to look into designing a 3D model
for an encoder knob, as I saw several interesting designs during the event. And
I need to design a case so the keyboard will not be so&amp;nbsp;floppy.&lt;/p&gt;
&lt;p&gt;There was also an idea of creating a small keyboard where every switch will be a
different&amp;nbsp;one.&lt;/p&gt;
&lt;p&gt;You can see more photos in
&lt;a href="https://photos.app.goo.gl/DSNP783gvnN68vXa8"&gt;my Mechanicon 2025 album&lt;/a&gt;.&lt;/p&gt;</content><category term="misc"/><category term="keyboard"/><category term="conferences"/></entry></feed>