Dutch / Nederlands
Site map

I write, therefore I am

With this variation on a famous statement by the philosopher Descartes, I would like to express that the act of writing about what happens in my life is important to me.

Monday, June 8, 2026

Links


Sunday, June 7, 2026

Exhibitions

I first went to the exhibition Herman Nijhof with photographs by Herman Nijhof, who was a Dutch garden and landscape architect, but better known in pop music circles as a photographer. I also looked around a bit at some of the studios of the artists in the building where the exhibitions was held. I met with an old friend in the city and together we went or B93 where we went to the opening of the exhibition Van de plank with photographs and works by Jojanneke Dekens, Loeske Bult, and Anja Wisseborn. Afterwards we also visited the studios of Judith Schepers (from whom I bought a postcard sized reproduction of her charcoal drawing Labyrinth from 2024) and Susan Pinkster.


Saturday, June 6, 2026

Open Studios Enschede

This afternoon, I visited all ten locations of the Open Studios Enschede weekend. I visited the following locations: By the end of the afternoon, I felt that my mind could no longer absorb information. I also realized that I had not visited all the studios that were supposed to be open according to the brochure.


Friday, June , 2026

Two more sprouted plants

This afternoon, I cleaned the drain in the alley, because yesterday there was some flooding in the alley due to some heavy rain showers. After I was done, I discovered two more new plants in the seed tray that contained the magnolia seeds from last year. I decided to plant them in the garden, close to where I planted the other plant. These new plants even looked a bit larger than the first.


Thusday, June 4, 2026

Progress on Task 5

I have complete two sub tasks of Task 5 of the GNU Mes replacement project, namely the implementation for x86_64/amd64 and for arm64/AArch64. The pass1.kaem script of tcc-0.9.27 step had no support for the x86_64/amd64 and arm64/AArch64 targets. I had to fix this and also apply some of the patches for tcc-0.9.26 to get it compiled by the tcc-0.9.26 compiler. After updating the documentation and optimizing the code generation of stack_c_arm64.c a bit, I completed these sub tasks. Next I will have to work on the riscv64 target.

Links


Monday, June 1, 2026

The Mandalorian and Grogu

This afternoon, Conny and I went to see the film The Mandalorian and Grogu. The movie was in the style of the earlier Mandalorian series. It was a fun watch, but not really memorable. We watched this in IMAX 2D. I was a little annoyed by the IMAX 'promo' at the start of the film.


Sunday, May 31, 2026

Progress with 64-bits targets

Harmen Stoppels submitted some pull request to fix some problems with getting the Tiny C Compiler compiled for some 64-bits targets using the tools I have been developing to replace the GNU Mes compiler that is used in the first stage of the live-bootstrap project. I understand that he used Claude Code to find fixes. The fixes are for compiling the tcc-0.9.26 sources to x86_64 (also know as amd64) and AArch64 (also known as ARM64). However the tcc-0.9.27 sources cannot be compiled yet with the compiled tcc-0.9.26 giving different kind of error messages for both targets. I also did find a bug (Issue #15) in the compiler with respect to the use of the continue statement inside a switch statement that is placed inside a for, while, or do statement. I had 'hacked' the implementation of the switch statement with the do statement of the Stack-C intermediate language. To execute the programs that are compiled for the AArch64 target under Linux one has to install the Arm System emulator of QEMU. When installed this will automatically call the emulator whenever an AArch64 ELF file is executed. Very handy for testing purposes.

Link


Thursday, May 28, 2026

Link


Wednesday, May 27, 2026

Proof for A216522

I am going to give a proof that the sequence A216522: 'Integers of the form 2*x + 3*y with nonnegative x and y, with repetitions,' can be expressed with ceiling(sqrt(12*n + 9)) - 3 with n starting at 0 for the first element in the sequence. Given a certain number, is quite easy to determine in how many ways it can be written as a sum of 2's and 3's. It all comes down to the fact that 6 equals three 2's and two 3's. This means, that for example 18 there are four ways to write it as a sum of 2's and 3's. This leads to the formulea: f(6*k) = k + 1 with k larger or equal to 0, Because, 2, 3, 4, and 5, can only be written in one way as a sum of 2's and 3's, we also know that f(6*k+2), f(6*k+3), f(6*k+4), and f(6*k+5) result in the same value as f(6*k). Because there is no way to write 1 as the sum of 2's and 3's and there is but one way for 7, we can also establish that f(6*k+1) = k. The function f(n) returns the number of times n will occur in the sequence A216522. We can also deduce from this, that the distance where the number f(6*k+6) from where number f(6*k) occurs for the first time in the sequence is k+6. The same is true for f(6*k+6+j) and f(6*k+j) where j is a number from 1 to and including 5.

Define the function g(n) to return the last (zero base) location for which the value n occurs in the sequence A216522, where g(1) is equal to 0 although 1 does not occur in the sequence. We define this as the sum of all values of f(i) with i ranging from 0 to and including n minus 1. When g(6*k+6) is expressed with g(6*k), we get:

g(6*k+6) = f(0) + .. + f(6*k) + f(6*k+1) + .. + f(6*k+6) - 1
g(6*k)   = f(0) + .. + f(6*k)                            - 1
g(6*k+6) = g(6*k)             + f(6*k+1) + .. + f(6(k+1))
g(6*k+6) = g(6*k)             + k + k+1 + k+1 + k+1 + k+1 + (k+1)+1
g(6*k+6) = g(6*k) + 6*k + 6
Similarly we can show that for i from 1 to and including 5 that g(6*k+i+6) is equal to g(6*k+i)+6*k+i+6. These equations can be combined to g(n+6) = g(n)+n+6.

We can verify that ceiling(sqrt(12*n + 9)) - 3 returns the correct values for low values, but that still does not proof it is correct for all values. If we equate this expression (without the rounding up with y and replace the n with x, we can derive the following equations:

    y            = sqrt(12*x + 9) - 3
    y + 3        = sqrt(12*x + 9)
   (y + 3)^2     = 12*x + 9
   (y + 3)^2 - 9 = 12*x
    y^2 + 6*y    = 12*x
    x = y*(y + 6)/12
If we take into account the ceiling function, than for each whole number filled in y this expresses where on or before the value of x occur all values of y in the sequence. For the first six numbers that occur in the A216522 sequence, we get:
 0:   0
 2:   1 + 4/12
 3:   2 + 3/12
 4:   3 + 4/12
 5:   4 + 7/12
 6:   6
From this we can observe that they do match with the position of the last occurence of the value in the sequence. Now, when we substract value for x for n+6 from n, we get:
   (n+6)*((n+6) + 6)/12 - (n)*((n) + 6)/12
   (n+6)*( n+6  + 6)    - (n)*( n  + 6)/12
   (n+6)*((n+12)        - (n+6)*((n)/12
   (n+6)*((n+12 - n)/12
   (n+6)*(12)/12
   n+6
From this we can conclude that g(n) = floor(n*(n+6))/12). Which completes the proof.


Tuesday, May 26, 2026

31.2° Celsius

The temperature at Twente Airport has gone up to 31.2° Celsius, which breaks the previous record of 29.7°C on this date in 2005. This also marks the first tropical day of this year.

Link


Monday, May 25, 2026

On Being Elsewhere

In the afternoon, I visited the exhibition On Being Elsewhere at Concordia. It is a group exhibition with works by Tessa Langeveld, Geertje Brandenburg, and Rossella Nisio. In the description it says something about video installations, but I did not see any moving images and/or videos being displayed. Maybe those were switched off.

28.1° Celsius

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

One little plant

This afternoon, I saw a little plant in one of the two boxes I put all the seeds we harvested last year from our magnolia. Some months ago, I found a lot of fungus on one of the boxes. Some weeks ago, I already empted the contents of one box, because it was totally soaked with water. I did not see any seeds. I had totally no hope for the other box. So, I was a little surprise to see one little plant appear. I am not even sure it is indeed a magnolia plant.


Saturday, May 23, 2026

KunstenLandschap 2026

I biked around the route of KunstenLandschap 2026. At 11:06, I arrived at Rijksmuseum Twenthe where I bought the entrance band and got a map of the route and additional information of the artist and performances. There I first viewed the exhibition Abstracties van het Landschap with collages of landscape photographs by Ger Dekkers. I found the following works noteworthy: Next, I saw: A few months ago, it was still unclear whether the festival could go ahead due to the loss of subsidies. Fortunately, enough private individuals donated, but it is clearly 'smaller' than in previous years, with fewer large installations.

Sequences are different

When I wanted to calculate the area of a hexagon placed on a triangle grid, I decide to split it in two halfs and use inner-product method of calculating the area for the lengths a, b, and c and calculate the points starting at the origin. I was a bit surprised that the are was equal to ab+bc+ac triangles. I verified it to be correct. I also modified the program convexhaxagon.cpp to calculate the first 1000 values (instead of 100 as before) and see how it matches with the A216522 sequence and I discovered that they are different. The first value where the sequence is one smaller than the most compact arrangement is 121. Some of the following are: 163, 211, 235, 265, 292, 325, 355, 391, 424, 463, and 499. Up to 5000 there are 160 differences of one smaller. So, now there is no need anymore to prove that they are the same. But it still surprising that they are so close. It is also noteworthy that the value for the most compact arrangement for 122 is one lower than the one for 121. After some more searching in The On-line Encyclopedia of Integer Sequences, I found sequence A135711: 'Minimal perimeter of a polyhex with n cells'. It calculates the the perimeter along the outside of the hexagons. It states that the formula for this sequence is: a(n) = 2*ceiling(sqrt(12*n-3)). That means it is monotone increasing sequence, which the sequence for the most compact arrangement with the 'convex' requirement is not. It seems that the sequences A216522 and A135711 are related.


Friday, May 22, 2026

Exhibitions

At the end of the afternoon, I visited two exhibitions. The first was the exhibition Friendly Secrecy System curated by Janne Schimmel at Sickhouse. The list of works on display (with videos) see this post on instagram. I am not really into console games. I found the following two works noteworthy:

The second was the exibition Everything In-between with works by second year students from the AKI at Creative Broedplaats Enschede. Not all the works on display had information with them. I saw the following works:

I hope that more information will be added. I will try to visit the exhibition again on a later date.


Thursday, May 21, 2026

Compact shapes of hexagons (Part 2)

Below a visualization of the compact shapes of hexagons with the minimum perimeter with each number of hexagons. I made it to see if there are some obvious patterns, but I could not see one. A problem is that for some sizes there are multiple shapes with the minimum perimeter for that number of hexagons. I still find the connection with the A216522 sequence very mysterious.

This text is displayed if your browser does not support HTML5 Canvas.

The Belly of the Beast

In the afternoon, I saw the exhibition The Belly of the Beast with photographs by Anca Axinte at photo gallery Objektief. In many of the photograph the model holds an object that resembles a heart. The artist wrote about this, translated from Dutch: 'A figure consuming her own stone heart.' The object was hanging from the ceiling in the middle of the room. The text with the exhibition starts with (translated from Dutch): 'There is a primal animalistic force within us, built into our instinct, our ego, and our will to survive. We call it the beast. It acts not out of cruelty, but out of fear, and fear is the absence of love. To live, the beast must consume what it lacks.' A very different exhibition from the previous. Quite interesting.


Wednesday, May 20, 2026

Compact shapes of hexagons

I was wondering if there was a more compact shape to arrange 64 hexagons than the one I have been using for place the pieces from The China Labyrinth. I searched The On-line Encyclopedia of Integer Sequences® with some keywords hoping to find the sequence for the number of compact (convex) shapes for a given number of hexagons. I did not find a sequence related to this. I wrote the program convexhaxagon.cpp to calculate all the shapes up to 99 hexagons. With the numbers, I did find the sequence A116513: 'Number of distinct hexagons of n points chosen from triangular lattice A_2 with sides parallel to the principal axes of that lattice. Degenerate sides (of length 1) are permitted.' This sounds like it is the same, I was looking for. I also searched the sequence of the most compact shapes, which are the shapes with the shortest perimeter. I found the sequence A216522: 'Integers of the form 2*x + 3*y with nonnegative x and y, with repetitions,' that matches the perimeter when measured around the centers of the hexagon for first 99 numbers. Although it is quite likely that the two sequences are the same (beyond the part they are the same), I have no idea how to prove that they are equal.

Christian Freeling

I read that Christian Freeling was found died yesterday at the age of 79. According to a news report in Dutch he was found dead at the bottom of the stairs by a neighbour, who already suspected something might be wrong because his raccoon dog Snowy was left outside during the night. There are reasons to believe that he already died on Monday. Yesterday, I still visited his website with respect to The China Labyrinth. I met in 1981, when I started studying at the university during the game evenings of Fanaat. He introduced me to some of his abstract board games with complete information. We also had some philosphical discussions and was impressed by his intelligence and his ideas.

Links


Tuesday, May 19, 2026

The China Labyrinth: I Ching

This evening, I did some experimentation with the visualization of compact solutions of the The China Labyrinth to connect it with the I Ching. First I decided to adapt the shape of the pieces suitable for a physical puzzle. I also decided to place the hexagrams on them. The upper three lines reference to the top three sides from left-to-right and the lower to the bottom ones also from left-to-right. The I also decided to have the names in Chinese characters as an alternative to be selected. (Note that the selection will become effective for the next solution to be realized.) I am not really happy with the result.

This text is displayed if your browser does not support HTML5 Canvas.


Monday, May 18, 2026

Seven Mystic Questions

I was watching a Dune: Part One first reaction video on YouTube, when I realized that the phrase "Who are you?" that is heard when Paul and Jessica enter the room where the reverend mother Gaius Helen Mohiam is sitting is not found in the book and that it might be taken from the Aql (from the Arabic عَقْل) as found in the appendix "Terminology of the Imperium" where it is defined as: "the test of reason. Originally, the 'Seven Mystic Questions' beginning: 'Who is it that thinks?'" I have always wondered what the other six question could be. I used Google and its AI gave the following list:
  1. Who is it that thinks?
  2. Who is it that loves?
  3. What is the beginning of the end?
  4. Where is the path to truth?
  5. How is the soul weighed?
  6. When does the drop become the ocean?
  7. Why does the universe dream?
It also explained that the first question serves as a gateway into the consciousness and inner-awareness traditions of the Zensunni Wanderers and the Bene Gesserit. It explained that it invites the thinker to look past their day-to-day ego, memories, and personality to identify the true, core source of their consciousness. It mirrors real-world mystical practices, like the Atma Vichara (self-inquiry) found in Advaita Vedanta. I found the sixth question quite interesting when you realize that the story of Dune plays on a dessert planet that has not seen an ocean for a very long time. I asked Google's AI for the origin of the questions and it gave an answer with another set of questions.
  1. Who is it that thinks? (The canon prompt: identifying the observer)
  2. From where do these thoughts arise? (Traces the origin of consciousness).
  3. What is the shape of the mind? (Realizing that thought has no physical form).
  4. Who experiences the senses? (Separating biological input from the soul).
  5. What remains when the thought is gone? (Finding the stillness of pure awareness)
  6. Is the observer separate from the observed? (Dissolving the barrier between self and universe).
  7. Who am I? (The ultimate dissolution of ego).
Although this list is more of the line of self-inquiry, I judge it as less mystic compared to the first list.


Sunday, May 17, 2026

Negative space

This afternoon, I visited the exhibition Negative space at Het Robson (Stichting Vierkant), the first solo exhibition of Kashyap Krishna. Although, I was not able to attend the artist talk he gave later this afternoon, as announced, and hear his story behind the works on display, I was quite impressed by the exhibition also through the titles given to the works. The works are given on negative space page on the website of the artist. I saw the works as they were numbered at the exhibition:
  1. Don't Carry the World Upon your Shoulders
  2. Broken
  3. Dissection of the Objectified Female Human
  4. N01 is trapped
  5. Genocide
  6. Life is loneliness
  7. can he dance?
  8. The Exhibitionist & The Voyeur
  9. Stranded (36×)
  10. what's right (in me) what's left (of me)
  11. U R N01
  12. suicide
  13. ಸಮಾಧಿ | Samādhi (a state of meditative consciousness)
  14. ಅಂತ್ಯಕ್ರಿಯೆ | Antyakriye (funeral)
  15. ಸಂಸಾರ | Saṃsāra (ongoing cycle of life, death, and rebirth)
  16. Markers
  17. Alone
  18. ನಮಸ್ಕಾರ | Namaskāra (a customary Hindu manner of respectfully greeting)
I do not know if the artist attached some particular meaning to this order, but it would not surprise me.


Saturday, May 16, 2026

Link


Friday, May 15, 2026

ಪುರಂದರ ದಾಸ

I found this text (of the title) in the announcement for an artist talk by Kashyap Krishna at the last day of the exhibition Negative space, his first solo exhibition. I wondered what the text meant and discovered it is the name Purandara Dasa, probably refering to Purandara Dasa (c.1470 – c.1564), who was a composer, singer and a Haridasa philosopher from present-day Karnataka, India. The script that is being used is the Kannada script, which is an abugida of the Brahmic family, used to write Kannada, one of the Dravidian languages of South India especially in the state of Karnataka. I have never hear of the Kannada language before, but I understand that is quite an old language.

Asymmetric TSP

I have been thinking about my program to solve the Asymmetric Traveling Salesman Problem that I have been using to find the shortest biking route along MUPIs with posters of AKI students. I have been thinking about the method that I am using to estimate the minimum distance that still needs to be travelled for a partial solution. Now I am adding the shortest route going to and from each node (and divide it by two) for the estimate. But that estimate is not very good, because there are three nodes that are close to eachother, it is very likely that the shortest route going to and from these nodes are all going to eachother, which is not very realistic. I am now thinking about a method that looks at all shortest outgoing routes from each node. (Of course, you could also do this with all ingoing routes.) Summing up all the distances for all those routes, leads to a minimal distance that still needs to be traveled. I guess it will be close to the method I have used so far. Now if there is a node that has two or more of shortest outgoing nodes into it, it is not possible to that the final solution will contain all of these. Only one can be included, meaning that the others have to point to some other node with a longer route. It is possible to calculate which is the minimal value that needs to be added to the already minimal distance. Also when there a cycle of a number of nodes, at least one of the node should have a route going to a node outside of the cycle to break the cycle. Again it is possible to calculate what is the minimal additional cost to break the cycle. It looks like these two do not interfere with eachother. Maybe there are easy ways to improve this even further.

Link


Wednesday, May 13, 2026

Flemish Primitives

I went to see the exhibition Flemish Primitives with photographs (and some items) by Fleur Debruyne at B93. I liked the titles with the works as much as the works themselves and for that reason an essential part of them. The titles of the works in the order I saw them: (I hope I have not made any mistakes in the above titles.)


Tuesday, May 12, 2026

live-bootstrap, Issue 470

I just read Issue 470: 'tcc-mes gets stuck building meslibc in amd64 bootstrap' of the live-bootstrap project. This morning, I pulled the last version of the live-bootstrap repository and started to build it for the x86_64 (also know as amd64) target, I got the same error as mentioned in one of the comments (the latest at this point of writing), which occurs when when unified-libc.c is compiled with tcc-mes. I thought I was doing something wrong myself, but it seems that this is a know limitation. The reason I wanted to build it for the x86_64 target is that I am stuck with respect trying to compile the Tiny C Compiler (the version used in live-bootstrap) with the compiler I am developing to replacing the GNU Mes compiler. I am gettings as far as to compile tcc-boot0, but when I execute tcc-boot0, it immediately crashes with a segmentation fault. I am getting exactly the same binaries when I replace calls with my compiler with the GNU C compiler (gcc). I asked for some advice on the #bootstrappable IRC channel at Libera.Chat and Ben Siraphob send a patch to fix the problem with the incorrect relocations in the executable preventing the immediate crash. But now it seems to crash in another location when I call it to compile some code. I will have to look into this further. Maybe I should have a look at a recent version of the Tiny C Compiler, such as the one at repo.or.cz / tinycc.git.

Link


Monday, May 11, 2026

Links


Sunday, May 10, 2026

Links


Saturday, May 9, 2026

Maker Festival Twente

I went to Maker Festival Twente. I first saw the exhibition at Tetem Art Space with the installation Synthetic Halo by Kurina Sohn, which generates sounds and graphics based on the brainwaves detected by an EEG sensor. I also subjected myself to the installation. I heard various kinds of sounds. Only afterwards, I looked at the explaination of the various sounds. I am not sure if I identified all the sounds on the explaination. Next, I joined the free embroidery workshop using TurtleStitch. I decided to program it without reading the manual after someone showed me some elementary steps. It took me some time out that drag and drop is the primary method of creating the Scratch based programs. In my first program that was executed on an embroidery machine I had added some movement, not realizing that it introduced a line as well. I was told that the machine automatically centers the output generated by the program. The second second program, saved in the file SimpleFractal.xml, in which I also increased the size a bit, resulted in a nice result. Both were executed with pink wire on a purple sample of felt. I looked around the area at all the stands and also wanted to have a look inside the Luminarium by Architects of Air, but when I was told I had to buy a ticket for 5.00 €, I declined. At the end, I talked with two people (students) from the AKI, I was given a copy of AKI ArtEZ FINALS 2025, the last one they had with them. It is sealed in plastic and I might decided not to open it.


Friday, May 8, 2026

Taken

I came across the page Taken, which shows information that a webpage receives from the client. When I looked in the source code of the page, I discovered that the page was not generated by the server, but that the information was retrieved with JavaScript. Of course, this allows the code to make some kind of request to a server using this information and thus being used to track someone. As far as I can see, this page does not do it. So, although it seems that the page knows a lot about you, the information shown never reaches the website but stays local. In the text box below, some information is shown that is can easily be retrieved with JavaScript embedded in this page. Again, this is purely local. This is a static website and no information is send to a server and the website does not use cookies.


Thursday, May 7, 2026

De Vrijhof

This morning, I saw two exhibitions at De Vrijhof, a building at the University of Twente, which is the cultural centre and houses the central library. First I saw the exhibition with thirteen gouaches by Klaas Versteegen. The second was the exhibition See What We Make. I found the sculpture by Sophia de Vries and Jet van de Werf noteworthy and also the paintings by Tessa van Belois, Carlijn Tempelaars, Joanita Leferink, Mirka Tako Morocho and Emile Hollander.

Links


Sunday, May 3, 2026

Links


Friday, May 1, 2026

Book

It was only yesterday evening late that I discovered that the Book fair Glanerbrug already had started day before yesterday. In the past years, I usually went on the first day of the book fair. I went this afternoon. I did not find many interesting books and I also noticed that the prices have come closer to the prices in thrift stores. At 13:59, I bought the book Information is Beautiful written by David McCandless in English and published by Collins in 2009, ISBN:9780007294664, for € 2.00. There is a website related to the book.

Dry weather

I downloaded some data about the precipitation deficit in the Netherlands from the Dutch page Data neerslagtekort of the Royal Netherlands Meteorological Institute to calculate on ever day since April 1, in what percentage of the driest years we are. The numbers for the past weeks are:
    date   value    max      %
-------------------------------
20260424:   52.3   67.2    2.8%
20260425:   55.6   69.8    2.7%
20260426:   59.1   73.1    2.6%
20260427:   61.8   76.6    2.1%
20260428:   65.6   77.3    1.5%
20260429:   69.7   80.3    1.2%
20260430:   73.8   84.3    0.7%
The value in the second colomn is the current precipitation deficit in mm. The value in the third column is the highest value on record. The value in the third column is an estimation of the driest year we are in based on the distribution of measuremenst from 1906 to and including last year, a total of 120 years. Some rain has been predicted for the coming days, so hopefully it might drop a bit in the coming days. I used the following code to process the int_nl.dat file:
#include <stdio.h>

int main(int argc, char* argv[])
{
    char buffer[200];
    while (fgets(buffer, 199, stdin))
        if (buffer[0] == '1' || buffer[0] == '2')
        {
            buffer[8] = '\0';
            double val;
            sscanf(buffer + 9, "%lf", &val);
            printf("%s %05.1lf\n", buffer + 4, val);
        }
    return 0;
}
And the following code to process the sorted output of the above using the contents of the file rdev_tijdreeks.txt with the latest numbers:
#include <stdio.h>
#include <string.h>

int main(int argc, char *argv[])
{
    FILE *f = fopen("rdev_tijdreeks.txt", "r");
    char buffer[100];
    fgets(buffer, 99, f);
    char buffer2[100];
    fgets(buffer2, 99, stdin);
    while (fgets(buffer, 99, f))
    {
        double val;
        sscanf(buffer + 9, "%lf", &val);
        double prec = -1;
        double prev = 0;
        int years = 0;
        for (;; years++)
        {
            if (strncmp(buffer + 4, buffer2, 4) != 0)
                break;
            double val2;
            sscanf(buffer2 + 5, "%lf", &val2);
            if (val2 >= val && prec < 0.0)
            {
                double diff = val2 - prev;
                prec = (double)years + (diff > 0 ? (val-prev)/(val2-prev) : 0);
            }
            prev = val2;
            fgets(buffer2, 99, stdin);
            if (feof(stdin))
                buffer2[0] = '\0';
        }
        if (prec < 0.0)
            prec = years;
        buffer[8] = '\0';
        printf("%s: %6.1lf %6.1lf %6.1lf%%\n",
               buffer, val, prev, 100 - 100*prec/years);
    }
    return 0;
}


Wednesday, April 29, 2026

Fixed bug in C compiler

I finally fixed the bug in tcc_cc.c, the C compiler in my replacement stage0 of live-bootstrap that I have been struggling with in the past weeks. It turned out that the bug was in the preprocessor that did not handle the following code correctly:
#define VAR_A 1
#define VAR_X VAR_A
#if VAR_A == VAR_X
#endif
It is important to realize, that the following, should return the same result:
#define VAR_X VAR_A
#define VAR_A 1
#if VAR_A == VAR_X
#endif
This shows that macro definitions are only expanded when they are used. This is the same for the expressions for the #if directive as it everywhere else. In the iterator solution I implemented, I decided to have the expansion iterator only work after the condition iterator (that evaluates the various #if directives), because otherwise it would also expand all branches that are not needed and it would have something to not expand the macro definitions. (Maybe there is an elagent way to implement it, but I have not looked into it yet.) This meant I would have to implement something for the macro symbols in the expression and assuming that the full expansion rules would not be needed. I simply added some code repeatedly expand macro definitions in the expressions with two lines of code. This again shows that the implementation of the C preprocessor is far from trivial. I am sure that my implementation in tcc_cc.c is not compliant with the standard. There is still some other bug to be solved as I am no getting error messages about 'Invalid relocation entry.'


Monday, April 28, 2026

Sci-Bot: hamiltonian cycles

Yesterday, I tried out Sci-Bot with the question: 'hamiltonian cycles.' I found the result quite interesting and decided to keep the results in a local copy. Because the saved file contained UTF-8 characters, I wrote the program UTF8toHTML.cpp to convert these characters to HTML escape sequences. It looks like the AI bot is no longer workable without creating an account.

Links


Monday, April 27, 2026

Link


Sunday, April 26, 2026

Link


Saturday, April 25, 2026

Link


Friday, April 24, 2026

Link


Thursday, April 23, 2026

Still the same error message

I am still getting the same error message with the 64 bits version of my replacement stage0 of live-bootstrap when I am using the interpreter that I wrote for Stack-C, the intermediate language that the compiler uses. In the past weeks, I worked on getting the interpreter working for the 64 bits version of Stack-C and I also implemented a debugging mode allowing to set breakpoints and step through the execution. Getting it to work took more time than I had expected. Now that they show the same behaviour, it is safe to conclude that the bug is likely not in the programs used to generate an executable from the Stack-C file but in the compiler itself or how the compiler is called (with respect to environment variables). The message both versions return is:
lib/linux/x86_64-mes-gcc/crt1.c:55: error: non-zero addend on REL architecture


Wednesday, April 22, 2026

Link


Monday, April 20, 2026

Links


Sunday, April 19, 2026

Infinite mazes

I have been thinking some more about generating infinite mazes since I wrote about it on the second of this month. If you always generate the chunks in the same order, it is sufficient to remember which walls are connected on the perimeter in order to avoid areas that cannot be connected and that there are no cycles. However, generating the chunks in the same order is not very efficient. Whenever two or more walls on the outside are connected, one has to decided which one will be going to infinity or in other words for each wall we need to indicate in which direction we have to walk, while touching the wall, to arrive at the other side of the wall. In the other direction this will never be the case. I think this will work, but I get the impression it will result in some bias. Because walls going outside of the border can never return into it. A way to counter this, is also to determine how walls outside the border have to be connected. In interesting question is how many of these should be connected to avoid another bias? I fear that some serious mathematics is required to establish this. Maybe is also depends on the shape of the perimeter.

Link


Thursday, April 16, 2026

Rijksmuseum Twenthe

Today, Conny and I visited Rijksmuseum Twenthe. We first saw the exhibition Pekka Halonen. An Ode to Finland with paintings by Pekka Halonen. I found the following works noteworthy: Really a lot of very impressive paintings. After this we saw the exhibition: Edwina van Heek: Silent force behind Rijksmuseum Twenthe, which honours that a hunderd years ago Edwina van Heek-Burr Ewing signed the deed of donation by which she donated a new museum building and an accompanying art collection to the Dutch State. Some of the works on display:

Next we saw the exhibition Many Loving Arms with works by Bas Kosters. I did not have high expectations of this exhibition, but I was quite impressed by it. I found the following works noteworthy (if I have not mixed up the wall labels):

We saw the exhibition Calculating Empires again. Conny took the picture below of me paging through the book Calculating Empires. On the wall I found the words Incompleteness and Undecidable but I could not quickly find it in the book. I wondered whether it is possible to buy the book, but (at home) I could not find it.


Tuesday, April 14, 2026

Link


Sunday, April 12, 2026

Links


Tuesday, April 8, 2026

Exhibitions

This afternoon, I visited the exhibition Over Water with photographs by Joop Overkleeft. It has a series about soldiers placing a Bailey bridge and some from his digital graphics.

Next, I went to Concordia and watched the Idem et Idem exhibition again. One of the artists was present and I talked a little about her project. I also saw the video with the work of Kore Danaë Plunkett that that I cannot remember seeing the last time (probably because it was not projected). It was kind of a recording of a performance by her. The translation of the description of her work is: "My life is defined by duality and contradictions, as a result of my limitations. Chain armor and two-dimensional work are the spaces in which I explore these characteristic aspects of my identity."

In the evening, I went to the exhibition RE:-)CONNECT at B93 with works by second and third year students of the AKI. There were individual works by the following students on display:

They also had some collective works in coorporation with Tessa de Roo. There were two screen print collective works and two collages of works on the wall. I found those quite interesting. I talked with one of the students about this because you do not often see that artists worked together on an art work. I understood that it had come quite natural when they started working with screen printing.

Link


Tuesday, April 7, 2026

All flowers open

It looks like all flowers on our magnolia have opened. The first flowers opened on March 18. The leaves of most of those first flowers turned brown due to frost and have partly fell down already. The latest of the flowers that opened are on the side of the house, which receive far less sunshine than the side where the first flowers opened. We did get flowers for quite a long period this year. The flowers spread a lovely fragrance.

Link


Monday, April 6, 2026

Unexpected error messages

Since I finished replacing stage0 of live-bootstrap for x86 (32 bits) two months ago, I have been working on the x86 64 bits version. I heve now come as far as being able to compile the Tiny C Compiler sources, but the resulting compiler when compiling some sources gives some unexpected error messages, which seem to be correct (see commit 96ad3732). This will require some clever debugging. Maybe, should first test this compiler on some other sources.


Friday, April 3, 2026

Links


Thursday, April 2, 2026

Infinite mazes

I have been thinking about the construction of infinite mazes. When I say maze, I mean a maze on a infinite square grid (in all directions) where there is some way to calculate if there is a wall on each line segement of the grid and that the mazes is 'prefect' in the sense that the mazes has no cycles and that each square can be traveled to from every other square. The page Maze Classification give some algorithms for creating finite mazes on a rectangle (or square) of a square grid. There are only two algoritms: Wilson's algorithm and Aldous-Broder algorithm. For animations of these algorithms see the page Maze Algorithms. There is a simple method for generating infinite mazes from finite mazes of some fixed size n. The idea is to place grids of size n side to side on the grid. Asuming that the walls on the outside are all closed, it does not meet the requirement of a perfect maze. The idea is to create a maze of size n×n with 'rooms' of size n and have the openings determine where to add an opening between the mazes of size n. This should be repeated for every power of n. Asuming that the generation starts at the origin, one only has to generate this for a limited number of powers, depending on how far one moves from the origin. This technique is also explained on the page Making an Infinite Maze. This method does not really result in random mazes, because these kind of mazes will contain very long walls that are getting longer and longer the further one gets from the origin, which is rather rare in truely random mazes. How can be improve on this assuming that we start generating the maze from the center and do want to store as less as possible information, potentially being able to regenerate parts of the maze on demand? In some game, for example, the user would only see a limited part of the maze from above, or till a wall (or a certain distance) when from the inside. One idea is to generate the maze in chunks of n by n squares. In such a chunk it should not always be the case that there should be a path between all the squares. The idea is to start with an infinite grid that has no walls and start randomly adding walls inside a certain chunk as long as each sqaure still has a path to the 'outside'. If an additional chunk needs to be added, it will also be allowed to put walls on the 'sides' where the chunks touches chunks that already have been filled. Although this seems a good approach, it seems that it will reduce a different maze depending on the order in which the chunks are added. Even if everytime the same random sequence is used for each chunk, there is still a problem for the walls that needed to be placed on where the chunks meet. A solution could be to always generate the chunks in a 'fixed' order. If the order is truely fixed, for example in s spiral order around the center, one would have to generate more and more chunks if one is moving away from the center. A solution to this to introduce a dependend relation to the grid of chunks, were a chunk can only be generated when all the chunks it depended on are already generated. Maybe there is a way to define the dependend relation (with all other than the origin chunk depending on the origin chunk directly or indirectly) such that only a limited number of chunks need to be generated, possibly linear to the 'distance' to the origin.


Wednesday, April 1, 2026

Introduction

Diaries
June 2026
May 2026
April 2026
March 2026
February 2026
January 2026
2025
2024
2023
-- contact --
RSS feed

Family

Frans
Conny
Annabel
Andy
Li-Xia
Others
Pictures

Collecting

Books
Maps
Bookshelves
Art works
Computers
Cameras
Trips
Flights
Weddings
Funerals
Reading
Movies
Useless lists

Hacking

My life as a hacker
Signature programs
Software enginering
The Art of Programming
HTML to LaTeX
JavaScript
eXtreme Programming
Programs

Puzzles

Hamilton cycles
cutting sticks
Califlower fractal
more...


SARS-CoV-2

Tracking
Trends
Prediction
nextstrain.org/ncov



Email

The email address below, may only be used for private communications. This email address may not be put on any mailing list. I do not want to receive emails with advertisements of any kind nor be contacted to sell me anything. I will regard such email as spam and delete them without replying. My email address is:

Privacy statement

This is a static website with no contact form and no way to add comments. It has no advertisements and no trackers. It does not use cookies. I am not using any method to analyse traffic to this website nor keeping any logs. I am not collecting personal data besides what is published on this website. If you want me to remove any personal data (including your name or link to your website), please contact me by above email address and I will make all effort to remove the data as soon as possible. I am private person and this website does not serve any economic purpose. All costs for maintenance are paid by myself. I do not receive any payments. The website is ad-free and does not have sponsored links. I am not interested in improving its search rank.

Site statistics

If I did not count wrong, this site consists of 1095 HTML-files with a total size of 40,359,647 characters, having 85,022 internal links and 20,886 external links to (more than) 6,087 websites. (At least 859 of the external links are broken.) Furthermore, it contains 258 C/C++ program files with a total size of 6,032,731 characters, 12 MySample scripts with a total size of 93,127 characters, 3 PASCAL program files with a total size of 35,259 characters. and 2 Python program files with a total size of 3,764 characters. There are 71 text files with a total size of 812,796 characters. With respect to images, this site containts 1382 JPEG images (total size 63,683,763 bytes), 148 GIF images (total size 3,818,253 bytes), 95 PNG images (total size 2,302,310 bytes), and 2 BMP images (total size 3,727 bytes). With respect to sounds, it contains 14 WAV files with a total size of 389,002 bytes and 2 MP3 files with a total size of 8,717,982 bytes. It also contains 43 PostScript files (total size 308,387 bytes), 2 LaTeX files (total size 132,020 characters), 29 PDF files (total size 91,298,168 characters), 22 zip files (total size 2,487,335 bytes), 3 gzipped tar files (total size 52,345 bytes), 45 SGF files with a total size of 85,019 bytes, 174 KML files with a total size of 7,456,749 bytes, 1 bundle files with a total size of 99,918 bytes, and 2 EXE files with a total size of 38,340 bytes. It also uses 24 JavaScript files with a total size of 3,761,415 bytes, This leads to a total size of 232,577,175 bytes.

Copyright

Creative Commons License

I, Frans hold the copyrights of this and all other pages on this website. For this website a Creative Commons License is applicable. You may not use this work for commercial purposes. I consider all computer programs to be copyrighted by me under the GNU General Public License, unless stated explicitly otherwise. All quotes (text and program fragments) from other sources are excluded from this, and should be considered as copyrighted by their authors.