Previous Up Next

Diary, October 2026



Sun Mon Tue Wed Thu Fri Sat
                  1   2   3
  4   5   6   7   8   9  10
 11  12  13  14  15  16  17
 18  19  20  21  22  23  24
 25  26  27  28  29  30  31


Thursday, October 1, 2026

Expo by Night × Gogbot

This evening, I went to Expo by Night × Gogbot. There were some projections from PLANETART, who also organizes the GOGBOT Festival, I saw the exhibition Paviljoen: Cross Media Design with works by students from the AKI. It was not clear who made which works. I did not attend the opening presentation. (They are often rather boring.) I took a photograph of the 23 names on the window outside. I can hardly believe that all those students are in the exhibition. The following, I figured out:


Friday, October 2, 2026

Authum crocus

On our walk, we sae the flowers shown below. Pl@ntNet gives it a 44% chance for being a Colchicum lusitanum, however that species is not known to grow in the Netherlands. This makes it more likely that it is a Colchicum autumnale, which is still rather rare in the Netherlands. On some map of observations I do see a red circle near where we live.


Saturday, October 3, 2026

Niño 3.4

Niño 3.4 stands for the are around the equator in the Pacific Ocean from 120 to 170° West and 5° South and North of the equator, which is an area of about 6 million square kilometer. The average surface temperature is taken as an indicator for how strong the El Nño is. In last week it is showing temperatures higher than ever on the Daily Sea Surface Temperature of the Climate Reanalyzer website. The temperature is getting close to 30° Celsius, which is 1.2° higher than the last record temperature in 2015 and 3.3° higher than the average in the years 1991 to 2020. The current El Nñno event is expected to peak around November or December. The Daily Sea Surface Temperature, World (the whole world between 60° South and North) is not at a record high but still higher since measurements started in 1981. Surprisingly, the Subpolar North Atlantic area is cooler than average, while being a bit higher during the past summer.

Resizable panels

Some testing with dividing the page in three panels that can be resized. Started with some ideas from Google AI and then figured out a simpler method. I have not yet figured out how to get it working on touch devices.

Left Panel

Drag the grey bar to the right to see me grow and the middle window shrink smoothly.

Middle Panel

Drag the grey bar to the left to see me grow and the left window shrink smoothly.

Drag the grey bar to the right to see me grow and the right window shrink smoothly.

Right Panel

I will scale dynamically based on whatever room is left over over here.

The HTML source for the above is:

<style>
.window-container { display: flex; height: 100pt; overflow: hidden; }
.scroll-window { background: white; padding: 10px; overflow-y: auto; box-sizing: border-box; }
#left-window { width: 33%; min-width: 100px; }
#mid-window { width: 33%; min-width: 100px; }
#right-window { flex: 1; min-width: 100px; }
.resizer { width: 4px; margin-left: 9px; margin-right: 9px; background: #999; cursor: col-resize; transition: background 0.2s; }
.resizer:hover { background: #444; }
</style>

<script>
function initResize1(e) {
    window.addEventListener('mousemove', StartResize1);
    window.addEventListener('mouseup', StopResize1);
}
function StartResize1(e) {
    const leftWindow = document.getElementById('left-window')
    const midWindow = document.getElementById('mid-window')
    leftWindow.style.width = (leftWindow.clientWidth + e.movementX) + "px"
    midWindow.style.width = (midWindow.clientWidth - e.movementX) + "px"
}

function StopResize1() {
    window.removeEventListener('mousemove', StartResize1);
    window.removeEventListener('mouseup', StopResize1);
}

function initResize2(e) {
    window.addEventListener('mousemove', StartResize2);
    window.addEventListener('mouseup', StopResize2);
}

function StartResize2(e) {
    const midWindow = document.getElementById('mid-window')
    midWindow.style.width = (midWindow.clientWidth + e.movementX) + "px"
}

function StopResize2() {
    window.removeEventListener('mousemove', StartResize2);
    window.removeEventListener('mouseup', StopResize2);
}
</script>

<div class="window-container">
    <div id="left-window" class="scroll-window">
        <b>Left Panel</b>
        <p>Drag the grey bar to the right to see me grow and the middle window shrink smoothly.</p>
    </div>
    <div id="dragBar1" class="resizer" onmousedown="initResize1()"></div>
    <div id="mid-window" class="scroll-window">
        <b>Middle Panel</b>
        <p>Drag the grey bar to the left to see me grow and the left window shrink smoothly.</p>
        <p>Drag the grey bar to the right to see me grow and the right window shrink smoothly.</p>
    </div>
    <div id="dragBar2" class="resizer" onmousedown="initResize2()"></div>
    <div id="right-window" class="scroll-window">
        <b>Right Panel</b>
        <p>I will scale dynamically based on whatever room is left over over here.</p>
    </div>
</div>


Sunday, October 4, 2026

FÆES-›!T at Black Brick

At end of the afternoon, I went in to the city. The sun was shining and it was warm authem weather, just over 20° Celsius, I guess. I bought a soft-serve ice cream and walked to Black Brick to see the exhibition that is part of the FÆES-›!T, the yearly Sustainable Fashop Art Event. The exhibition consisted of:


Monday, October 5, 2026

Building live-bootstrap

This Saturday, I am going to give a talk with the title Fast Linux bootstrapping at Hackfest. For that I needed to know how long it takes to run live-bootstrap up to and including TCC-0.9.27. The README is not completely clear how to do it with chroot on Linux. I started with the following commands:

git clone https://github.com/fosslinux/live-bootstrap
cd live-bootstrap
git submodule update --init --recursive

I editted the file steps/manifest and removed everything after the line build: tcc-0.9.27. The reason to do it at this point is to reduce the number of files being downloaded. I continued with the commands:

./download-distfiles.sh
cp -r -t rootfs seed/stage0-posix/*
cp -r -t rootfs seed/*
cp -r steps rootfs
mkdir rootfs/external
cp -r distfiles rootfs/external

(The README does not mention that distfiles should be copied into the directory external.) I created the file rootfs/steps/bootstrap.cfg with the content:

ARCH=amd64
ARCH_DIR=/AMD64
FORCE_TIMESTAMPS=False
CHROOT=True
UPDATE_CHECKSUMS=False
JOBS=1
SWAP_SIZE=0
FINAL_JOBS=1
INTERNAL_CI=False
INTERACTIVE=False
BARE_METAL=False
DISK=sda1
KERNEL_BOOTSTRAP=False
BUILD_KERNELS=False
CONFIGURATOR=False
MIRRORS=file://
MIRRORS_LEN=1

Then issue the command:

time sudo chroot --userspec=${USER}:${USER} rootfs /bootstrap-seeds/POSIX/AMD64/kaem-optional-seed

After 13 minutes and 37 seconds, this terminated with the error:

 +> tcc-mes -c -D HAVE_CONFIG_H=1 -I include -I include/linux/x86_64 -o unified-libc.o unified-libc.c 
assert fail: 0

/usr/bin/tcc-mes abnormal termination, signal number = 11

Then I remembered that the 64 bits Intel x86 target (AMD64) is not supported. I decided to try to build the 32 bits target. For this I changed the first two lines of the file rootfs/steps/bootstrap.cfg into:

ARCH=x86
ARCH_DIR=/x86

and executed the commands:

rm -r rootfs/steps/mes-0.27.1/build
rm -r rootfs/steps/tcc-0.9.26/build
rm -r rootfs/usr
rm -r rootfs/tmp
rm configurator
rm script-generator
rm seed-full.kaem 
time sudo chroot --userspec=${USER}:${USER} rootfs /bootstrap-seeds/POSIX/x86/kaem-optional-seed

This finished succesful in 11 minutes and 38 seconds, which is a bit faster than building for the AMD64 target.


Tuesday, October 6, 2026

Duplicating code

In software engineering there is a rule to avoid duplicated code. An important reason is that if you duplicate some code and something has to be changed about it, it can happen that the change is made to just one of the copies. But there are cases where duplicating code is an option to consider. Sometimes when I am faced with such a situation, it can take me several hours to consider the option to duplicate the code. If you have written some function to interact with a global object and you are now faced with the situation that you also have to interact with another similar global object. To avoid code duplication you can extend all functions with an additional argument to specify with which of the two objects it should interact with. But in the situation that one part of the software always interacts with one of the objects and that another part always interacts with the other object, duplicating the code might be an option to consider, because the value of the additional parameter is always constant from the location where the functions are called. Especially in an environment that is time critical, passing an additional parameter could have a some impact on the performance that could potentially be significant. In some cases, adding a new parameter to a function may also imply you have to add code to check if the parameter has a valid value.

October 7: When developing in C, the C-preprocessor can be used to produce duplicate functions by including a file after some macro symbols have been defined.


Wednesday, October 7, 2026

23.7° Celsius

The temperature at Twente Airport has gone up to 23.7° Celsius, which breaks the previous record of 22.4°C on this date in 1977.


Sunday, October 10, 2026

Hackfest 2026

I went to Hackfest 2026 in Enschede. It was held at a different location then last year. It was at Sickhouse. I attended all the talks and in the breaks I looked around the various stands. At 12:15, I listened to the talk Introduction MsshCore by FrankkieNL. He showed how he uses a WisMesh Tag to connecto to the MeshCore through an app on his smart phone using Bluetooth. At 13:15, I listened to the talk BadgeTalk by Anne Jan Brouwer about all the badges that he was involved with in and about Badge.Team. At 14:15, I gave the talk Fast Linux bootstrapping. Afterwards, some people remarked that I maybe should have explained bootstrapping a bit earlier in the talk. At 15:15, I listened to the talk Printing in Seconds: Volumetric 3D Printing by Annalise Anspach. Quite interesting and many questions ans suggestions were made. At 16:15, I listened to the talks Parametric antenna design and Building with OpenSCAD by Andries Lohmeijer. In between the talks and afterwards, I looked around the stands. Some of these were: I also talked with various people and some old colleagues.

Photographs

I walked to Creative Broedplaats Enschede, who recently moved into a new building, to see the two exhibitions with photographs: A Ballroom of Eros by Anca Axinte and Image of Imagination by Boel Nordenstam.


Tuesday, October 13, 2026

Bring Your Own Beamer

From 19:00 till 23:00, I showed my animation at the Bring Your Own Beamer event at TETEM art space. This is the fourth time I joined this type of event. The previous time was in March 10 earlier this year. This time, I decided The China Labyrinth as a homage to Christian Freeling. I did bring two physical copies of the puzzle with me. One made from wood and one made from perspex. The other artist and/or instalations at this event (if I did not miss one) were


Wednesday, October 14, 2026

Carte Blanche

I went to see the exhibition Carte Blanche at B93. It was a double exhibition. Upstairs, was the work Fragments Unknown by Désiré De Lacy with photographs, projections on sheer curtains she had found on the street, and some audio playback. Quite interesting how she blends images in such a way that you at first do not notice it that they are blended. Downstairs was the exhibition of Guusje Slagter (Instagram). I took one of the cards that were offered with a still from the short film Het menselijk apparaat (The human apparatus).


Sunday, October 18, 2026

Free form solution for The China Labyrinth

It turns out it is not so hard to find a solution for The China Labyrithn puzzle if you do not put restrictions on the border. The solution below was found by two people in about half an hour. The puzzle is made from pieces that I made with a laser cutter on September 22.


Tuesday, October 20, 2026

Neocities: Coding Night

I went to the Neocities: Coding Night - Build your own digital garden event at Sickhouse. A presentation was given by the owner of theAlien Head Shit Kid site on neocities.org. I found a tutorial explaining how to deploy to neocities throught github workflow.

Link: The Annotated VT100 Firmware

I found the link to The Annotated VT100 Firmware interesting because one of the first terminals I worked on was a VT100 compatible terminal. I owned a Teco VA120 terminal, which is now stil at TkkrLab. I also wrote some PASCAL modules for visualizing parsing on a VT100 compatible terminal: The screen management module and the Primitive terminal interface module.


Wednesday, October 21, 2026

Link: Spare room by Denis Iaquinta

Denis Iaquinta posted a link to the Guassian splat Spare room on Reddit to demonstrate his pipe line he has developerd. My first impression was that of a squatted home with aspecially due to the matras laying in the middle of the room. There are a number of interesting object in the room. A painting on the wall, a half finished puzzle on a table, four chair against the wall, a spiral object, a cloth on the wall, a foosball table, eight chairs placed in a cicle (are we going to have session), a cupboard with books inside, just to mention a few. You can look out of the windows on one side of the room, but not on the other side.


Saturday, October 24, 2026

Harvest

Even though it is already the end of October, we are still receiving a generous harvest every Saturday from the Herenboeren Usseler Es cooperative. Today, we were could pick out one pumpkin per 'mouth' from the selection laid out in the polytunnel. took two, because we have a subscription for two mouths.. I also collected two kilo of potatoes, some carrots (at least a kilo), two bunch of green beans (you have to cut of the beans yourself), and two heads of lettuce or endive. I was a bit late and got one of the last heads of head of romaine (if I'm not mistaken) and a large head of endive, of which there were still plenty of left. (Last week I also brought two large heads of endive home of which we gave away the largest.) We ended up having an endive salad tonight using part of one head, simply because it wouldnot fit properly in the fridge otherwise. At the "giveaway table," I also picked up four of the very last tomatoes, three of which are still completely green. We will see if they ripen. If not, we will have to come up with something else to do with them. We also still have a white cabbage and a red cabbage from last weeks harvest. We probably will made sauerkraut from one of them. We already did that this year with four other cabbages.

Going into the city

I went into the city this afternoon. I first visited the exhibition Ontmoetingen en Observaties (which could be transalted to Encounters and Observation) with photographs by Rob ten Tusscher at photo gallery Objektief. Next, I went to Concordia, where I had a second look at the exhibition Paviljoen: Cross Media Design. (There is still no information about who made what.) I did notice some things, I had not seen before.


Tuesday, October 25, 2026

The quality of code

Five days ago, I made the bold statement that the Tiny C Compiler is not an examply of quality code. That got some critical replies. The Tiny C Compiler is written by Fabrice Bellard who wrote some great programs that are widely used. First of all it is important to note that quality is subjective to some degree. In the book Zen and the Art of Motorcycle Maintenance it is argued that 'Quality' is neither subjective nor objective. The Reddit user LordRybec in one of his comments said: 'If the code looks horrible but works extremely well, odds are it's just higher quality than you understand how to understand'. I had said that more people had complained about the quality of the code. In another reply, he said: 'It may be bad (I haven't looked it at it personally), but it may be so ingenious that you just think it is bad when it is actually totally awesome'. A bit further in the discussion, I pointed at the function tal_realloc_impl, which is in the file tcc.c. I had some problem understanding this function when I encountered it during some debug session. If I remember correctly, it was because it seems to be harded-coded for 32-bits architectures with the expression (size + 3) & -4, which rounds the value of size up to the nearest value that is a multiple of four. (The use of -4 presumes two's complement representation of integers, which is the most common used method. To remove that dependency, one could use ~3, but their might be C compilers that are not good at constant folding and would use an additional machine instruction instead.) There is a goto-statement in the body of the function tal_realloc_impl that implements a loop that could have been implemented with a for-statement or while-statement and some restructuring of the code. The code of the Tiny C Compiler contains many goto-statements and I must agree that it often makes faster code. But in some places, such as the function preprocess_skip, I really wonder what is the speed improvement of having a goto-statement to the label _default. Yes, it probably reduces the number of machine instructions in the function, makes the code length a bit shorter, but it probably introduces and additional jump instruction. I too uses goto-statement when implementing iterators as a co-routine. I have noticed that in the code when a comparison is made with a constant, the constant is often placed first, which is not how people usually write code, but it does defend against the common mistake of accidently changing the comparision into an assignment when one types = instead of ==. Most compilers now give a warning when one makes such a mistake. The user LordRybec made some two more additional comments (this and this) about different views of quality. I agree with him that one could also view quality as an external property of the software, how well it works, and not consider the quality of the code itself, especially if it is going to be a finished project. Although I do agree that you should not write code with the view that it will be modified in the future, knowing that one of the most counter product things it to take future features in mind, but there is always a possibility that your project will need modification or extension in the future or will be used for something that you had not participated, especially if you do publish the code. Of course, there could have been a good reason to use a goto in a certain function, but if there is no documentation of the why, it is likely that it is not possible to figure out what the reasoning was behind the choice. This can lead to confusion or result in adapting bad practices by less experienced software developers. I think as an engineer you have some responsibility to encourage good engineering practices among less experieced engineers and that responsibility increased by the number of people who may exposed to the code.

Link: The Exponential Time Hypothesis Is False

OpenAI announced three new results with the blog Working with academic communities to build scientific understanding. One of them is in the field of theoretical computer science and is about the The Exponential Time Hypothesis being false as shown in the pre-print: The Exponential Time Hypothesis Is False and a Lean proof given in A 2o(n) Time Algorithm for 3-SAT. See discussions on Hacker News and Reddit (one of several). The exponential time hypothesis implies P ≠ NP, which means that is now one less route to settle the P versus NP problem one of the greatest unsolved problems in theoretical computer science.


Wednesday, October 28, 2026

Link: The Classification of Finite Simple Groups

Through Hacker News, I found a link to The Classification of Finite Simple Groups, formalized in Lean which is about Classification of finite simple groups. I have been fascinated by group theory from when I first encountered it in high school. I remember seeing an article in the Scientific American about the Monster Group. On my birthday eleven years ago, I got a printed (and outdated) copy of the Atlas of Finite Groups: Maximal Subgroups and Ordinary Characters for Simple Groups. I read the blog about the achievement. They used AI for the formalization. Maybe the people working on Second-generation classification will now also resort to AI and/or formalize their proofs in Lean. urly kale hotchpotch


Saturday, October 31, 2026

Curly kale hotchpotch

We got a little over one kilo of curly kale in the harvest from the Herenboeren Usseler Es cooperative. We used about half of it to have curly kale hotchpotch for dinner. This is the first time this winter and definitely not the last, because we have to finish the other half also.


This months interesting links


Home | September 2026 | November 2026 | Random memories