Previous Up Next

Diary, August 2018

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

Friday, August 3, 2018

Record regional heat wave

Today, the temperature reached 33°C (at 2m) at the official weather station Twenthe. It is the twentythird day that the temperature is above 25°C and there have been (at least) nine days that the temperature reached 30°C. (On four days the weather station was out of order.) The highest temperature was 35.7°C. According to the definition of the Royal Netherlands Meteorological Institute, we have a heat wave when for five days in a row the temperature is above 25°C and at least three days are above 30°C. Never before since the measurements started, has it happened that there was a regional heat wave of 23 days or more. According to the ensemble forecast of the European Centre for Medium-Range Weather Forecasts, there is a more than 50% chance that the temperature will be reach 25°C for another five days, with a great likelihood that on three of these days it will reach 30°C. Sunday, will be the most likely day that the temperature will not reach 25°C. So, the record will either be 24 or 28 days according to the prediction.

Saturday, August 4, 2018

Interval set

Tuesday, July 23, I set myself the challange to implement a set of integer intervals using a balanced tree, and trying to finish the code without drawing trees on paper. I did some drawing on trees for implementing the persistent 'balanced' tree, which I finished last Tuesday, and which I did partially borrow for the implementation in IntervalSet.cpp. In the end, it felt less hard to implement all the methods, than I had thought. The code looks pretty straight forward to me. I did not really optimize the calls to the private methods for balancing the tree. The tree also does not stay optimal balanced after each operation. This is due to the fact that adding or removing a large range, could potentially remove many nodes in the tree, and the implementation does not do a balancing after each node removal. (To keep the tree optimal balanced, it needs to be balanced after each node insertion and removal.)

Thursday, August 9, 2018

29 day long heat wave

Around noon, the temperture reached 25.8°C. For 29 days, the maximum temperature during the day (between 8 and 8) has reached above 25°C, which means that we have had a regional heat wave for 29 days, which breaks the last record of 22 days by a whole week. A second national heat wave also has occured during the same period. The latest forcast for tomorrow predict that the maximum temperature will be about 21°C. About 4.3mm of rain was predicted for today. At 12:51, it started raining after we already had heard some thunder in the distance. At 13:16, the sun started to shine again and the rain stop soon thereafter. Later in the afternoon, there was some rain as well. I wonder if it was 4.3mm in total.

Friday, August 10, 2018

Palindrome dates

Today is a palindrome date when written in the (M)M/(D)D/(YYY)Y format: 8/10/2018. When the (M)M/(D)D/YY format is used, this is also a palindrome date: 8/10/18 and this is the case for all dates up to and including 8/19/18 and also the date 8/1/18.

With respect to palindrome text, I found the interesting article: World's longest palindrome?

Sunday, August 12, 2018

Zomergasten - Marleen Stikker

This evening, I watched Zomergasten, a TV show where a guest can show his favourite fragments and discuss them. This evening, the guest was Marleen Stikker, who is the daughter of the artist-scientist Uipko Gerrit Stikker and Gerda Meijerink. (Marleen and her mother are mentioned in the diaries of Dutch novelist Doeschka Meijsing, because she had a relationship with Meijerink.) Marleen Stikker and Carolien Nevejan founded the Waag: technology & society, which operates at the intersection of science, technology and the arts. They are known for the Fairphone. The fragments that where shown where from: (August 20 update:) See also her own list of the fragments with description and links. The long list of framents the did not make the show.

Tuesday, August 14, 2018


At 9:56, I got the book Het feest der mislukking written, illustrated and published by Nadie van Wijk in June 2018. I bought it for € 15.00. At 10:31:28, I bought the book Solve for Happy: Engineer Your Path to Joy written by Mo Gawdat in English and published by Simon and Schuster in 2018, ISBN:9781501157585, from bookshop Broekhuis for € 7.50.

Thursday, August 16, 2018


In the past weeks, I have been thinking about caching as mechanism to improve program execution. The speed of IParse depends on caching all intermediate results. Lately, I am thinking about using caching in a data oriented programming language with transactions and back-tracking. I realized that in IParse, I simple cache all intermediate results. I wondered how IParse would behave if not all intermediage results are cached. The idea of a cache is to remember some results in a special place, and search that place first, before getting it from the normal place. The idea is that the number of results in the cache is much smaller than the normal place. In hardware the size of a cache is usually fixed. So, if the cache is full, you have to clear some element. A lot of research has be done with respect to picking the result that has to be cleared. For caching algoritms in software, there is often not a hard limit, but if the larger the cache becomes, the longer it takes to determine if it contains a certain result. At some point the time saved to find the result in the cache could be too small to be useful. For example, it is useless to create a cache for multiplication, because multiplying to numbers does not cost much, so trying to remember the result of the last ten multiplications you performed, is probably not going to help you much, because it probably takes longer to search the cache than performing the calculation itself. It is interesting to think about would be a clever algorithm for dynamically adjusting the size of a cache for optimal performance.

Saturday, August 18, 2018

The Monads

In the end of the afternoon, I went to Tetem art space, knowing that the had nothing new on display. I spend about ten minutes experiencing The Monads, an installation by Gabey Tjon a Tham. I was all alone and in the right state of mind to enjoy it.


I have been working on a new programming language with a focus on manipulating data. I also had thought about it having a transaction mechanism. Six years ago, I came up with the idea of a back-tracking language, as a generalization of a parsing language, which would reset the value of variables, in case some part of the execution had failed. Actually, this is comparable to how database transactions work: when the transaction commits, the changes are made permanent and when the transaction fails, all changes are rolled-back. I already feel for a long time that the distinction between programming language and database storage system, to be a bit artificial. In the new programming language, it is possible that some operations on a complex value fail, because they cause a inconsistency. First I was thinking that in such a case, the value should not change at all. When thinking about the implementation, which I am working on right now, I realized that I would need an undo mechanism. But then, this afternoon, I realized that that would be similar to a transaction mechanism. Why, in case of a failure, not replace the whole complex value with a value indication failure (and possibly some information about the nature of the cause). Then the transaction mechanism could be used to revert the change, if needed.

Monday, August 20, 2018

Existence proof

Yesterday, I met with a mathematician and I told him about the Irregular Chocolate Bar. He asked me about the existence proof, namely whether for each n there exists at least one solution. I had never thought about such a proof, because of the multitude of solutions that were found by one of the early programs, there was no reason to doubt whether there would be some n for which there would be no solution. But mathematicians are not satified with such a remark, they want to have a proof. I immediately started working on a proof by induction, but it was only this afternoon, when I biked home that I found a way to proof it. So the proof goes as follows: Assume you have a solution P for n-1, can you construct a solution P' for n. Lets define set for any even k larger than 2n, the set Sk as It is clear that this set consists of 2n different positive natural numbers and can be divided into n pairs that add up to k. Now we can construct P'k with: {sp | s∈Sk, p∈P}. If there does not exist any two s1 and s2 in Sk, and p1 and p2, such that s1p1 equals s2p2, than each product of a p and s, results in a unique natural number and we have constructed a solution P'k, which can be partitioned into n set that sum to the same value. It is also clear that for each partitioning of P, a partitioning of P'k exists, where each set adds up to the same value, multiplied with kn. Now we only have to come up with a lower bound for k such that the each multiplication of p and s result in a unique number. For this we have to find some p1 and p2, with p1 smaller than p2, such that p1/p2 is maximal. If the smallest value in Sk multiplied with p2 is larger than the largest value in Sk multiplied with p1, than all values in Sk multiplied with p2 are larger than all values in Sk multiplied with p1. So, all combinations of multiplications lead to unique numbers. Because p1/p2 is maximal, it follows that for all combinations of two values from P all products with the values from Sk are unique. From the equation we can calculate that k needs to be larger than 2n(p1+p2)/(p2-p1) for P'k to be a solution for n. This completes the proof.

It is an open question whether there exists a solution for each n larger than six, such that the numbers of the solution sum up to the LCM of integers upto and including n.

The Nand Game

I played The Nand Game, a game where you learn how a primitive CPU can be constructed from NAND gates. It is based on the ideas from From Nand to Tetris: Building a Modern Computer From First Principles. Similar games with a textual interface are MHRD and Digital Logic Design. I did not complete The Nand Game yet. I finished many of the levels in one try. If I needed a second try it was often that I only had to change some of the connections to the inputs, due not to fully have understood the description. But there were also some levels that I found hard (without reading the hints), mostly due to them being rather contrived, like having to construct the increment with addition, substraction, and inversion. But for the rest it is fun and educational game.

Wednesday, August 22, 2018

Lower bound

I have been thinking about a proof with respect to the Irregular Chocolate Bar problem that there exists a solution for each n larger than six, such that the numbers of the solution sum up to lcm(1,..,n). It seems that for each n there exists a solution for the numbers 1 upto and including k, except for some l, such that these numbers add up to lcm(1,..,n). I modified the program from June 21, 2017 to find some more solutions. For 17 and 18, the program found: 1 upto and including 4950 except for 1485. For 19 to 22 (including), the program found: 1 upto and including 21577 except for 1693. For 23 the program did not finish within a reasonable period. I tried to use the alternative knapsack algorithm that seems faster, but it turned out to be much slower. I have been thinking about a better algorithm for finding a solution.

There are some small values for n for which there is no solution where the values add up to the 'minimal' value, simply because there are not even enough different values for a partitioning in n parts. I wondered if this could also be the case for larger values of n. According to Collary 3 in the paper An identity involving the least common multiple of binomial coefficients and its application by Bakir Farhi that lcm(1,..,n) is bigger or eqaul than 2n-1. This leads to the following table:

  n  lcm(1,..,n)   2^(n-1)   n(2n-1)
  1        1          1         1
  2        2          2         6
  3        6          4        15
  4       12          8        28
  5       60         16        45
  6       60         32        66
  7      420         64        91
  8      840        128       120
It is clear that the fourth column will be lower than the third column for n larger or equal than eight. Note that the four cases where lcm(1,..,n) is smaller than n(2n-1), match with the cases where there is no 'minimal' solution.

Friday, August 24, 2018


I think I found a proof or at least a proof sketch to show that there does exist a solution for the Irregular Chocolate Bar problem with size lcm(1,..,n) for large enough n. For given n, there is a possible solution S consisting of 1 upto and including some k without some l, such that the numbers add up to lcm(1,..,n). (It is possible that l is 0.) To prove that this possible solution is indeed a solution, we need to show that for every i larger than n/2 and smaller and equal to n, the solution can be partitioned into i parts, where the numbers in each part add up to lcm(1,..,n)/i. Now trying each i, we can define for j from 1 to i Sj as smallest subset of the largest numbers from S, such that the sum of numbers in Sj is larger than lcm(1,..,n).j/i. It is clear that Sj is subset of Sj+1. The question is: Can we construct a partitioning consisting of p1 to pi, such that pj for j smaller than i only consists of numbers from Si+1? If this is the case, we have a correct partitioning, assuming that the partitioning of pi-1 and pi with the remaining numbers will be no problem, because all the smallest numbers from S will be available. Now, take the subset of the largest numbers from S such that the sum is equal or smaller than lcm(1,..,n)/i. If it is equal, we have constructed p1. If the remainder is not in S2, we find the largest number in the subset that can be replaced by a smaller number in S, but not in the subset, and replace it. This will make the remainder larger. We repeat this process until the remainder is S2. It seems that for large enough n this can indeed be done. Once we have constructed p1, we can continue constructing p2 by repeating this process with S/p1, which is a subset of S3. I think, I will write a program, that implements this algorithm, to see if it indeed works. If it does not work for some small value of n, the proof might be incorrect, and there is no reason to work out the details.

Sunday, August 26, 2018

Fractal Jigsaw

In the past week, someone reported problems with the program for generating Fractal Jigsaw puzzles. It appeared that the used_pieces subcommando returned rubbish, due to a glaring bug in an initialization function. (I must have forgotten to test the whole sequence of subcommands, for which I stand guilty.) This morning, I improved the program to report minimal and maximal values for the used_pieces subcommand in case the conditions are too strong and no results are returned. (I have also fixed the bug in the two earlier versions, I published, not to cover up, but to prevent people downloading the older version getting stuck as well without realizing that it is due to a bug.)

Tuesday, August 28, 2018


At 9:45, I bought the book De Stijl - 100 jaar inspiratie: de Nieuwe Beelding en de internationale kunst 1917-2017 written by Anton Anthonissen and Evert van Straaten in Dutch and published by Waanders Uitgevers in 2016, ISBN:9789462620858, from charity shop Het Goed for € 9.95.

Wednesday, August 29, 2018


At 10:23, I bought the book Verzameld Werk: Examen 2005 / Collected Work: Graduation 2005 written by Hans van Kooten (and others) in Dutch and English, and published by Hogeschool voor de Kunsten Utrecht in 2005 from charity shop Het Goed for € 2.50.

Generating elements of a group

In the beginning of 1981, I thought about writing a program to generate the elements of a (mathematical) group using it basic identity rules. I wrote whole sheets full with expression, but could not find an easy algorithm. This evening, I realized that this can be done with the rule that if XY=W and YZ=V than XV=WZ. One way to prove this is to append Z to XY=W resulting in XYZ=WZ and then replace the occurence of YZ in the left-hand by V, resulting in XV=WZ.

Thursday, August 30, 2018


I went to TextielMuseum in Tilburg with Peter Struycken, who worked in the TextielLab from in the years 2002 to 2005, and in cooperation produced a number of wall carpets. We met with a number of people who knew him from that period. We also looked at the exhibitions Simply Scandinavian | Nordic Design 1945 -2018 and Colour & Abstraction | Generations in Dialogue at the museum. The last exhibition also included the carpet Boulez - 22 - 30 mei 04 - 06 maart 05 - 03 by Peter Struycken and also sample with all different colours that he created to test out the possibilities. Left of the wallcarpet is the work Abstract Browsing 17 08 10X by Rafaël Rozendaal. We also met with him, because we was creating colour samples on one of the weaving machines in the Lab. He too has made the transition from computer generated images to wall carpets. Peter and I also liked the wall carpets by Reinoud van Vught. Although they are less colourful than the works by Peter, they are similar with respect to patterns.

Afterwards, we went to De Pont Museum of Contemporary Art, which is only ten minutes walking from TextielMuseum. I liked the works by:

The most important thing I learned, while looking around with Peter, is that I should ask the why question more often. Why did an artist make something? Why do I (dis)like it? Why does it interest or bore me?

This months interesting links

Home | July 2018 | September 2018 | Random memories