Previous Up No next

Diary, December 2025



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


Monday, December 1, 2025

Advent of Code: Day 1

I woke up early and failed to fall asleep again for the first day of Advent of Code. I solved the two puzzles without much problems. The first part, I did in one try (including compiling correctly) and for the second part, I needed two tries. I already had some idea that my first try of the second part was going to fail, but I nevertheless tried it. Then I resorted to a bit brute force approach for the second part. I also spend some time improving MarkDownC, the literate programming tool I am using.

Book and lithograph

At 15:53, I bought the book The Temporal Void written by Peter F. Hamilton in English, published by Pan Books in 2009, ISBN:9780330443036, from Het Goed for € 2.99 and I bougth a lithograph by Janny Endstra for €9.99.


Tuesday, December 2, 2025

Phoenix BIOS

At TkkrLab there was a box with old PCBs, mostly old motherboards, but also one with 7400-series TTL ICs, donated by someone for everyone who wanted to use them. On one of PCBs, I saw two ICs with the text Phoenix Technologies Ltd, 1987, 1988. The famous Phoenix BIOS, I presume. I found a screwdriver to remove them and took them with me.


Wednesday, December 3, 2025

Advent of Code: Day 3

I have been thinking about the math formulation of this years Advent of Code puzzles just using sets and vectors. For puzzle of today you have to find some sub sequence of 2 and 12 (for the second part) digits, such when interpretted as a number, the value would be maximum. This could be described with:
puzzle(V in Vectors of {1, ,, ,9}, l in {1, .. , sizeof(V)})
= max { value in Nat 
      | exists v in subvectors(V):
           (length(v) = l) and (value, v) in reverse_base_repensation(10)
      }
In this the V argument is the puzzle input represented as a vector of numbers from 1 to 9 (including) and l the required length, which is 2 for the first part and 12 for the second part. The function reverse_base_repensation returns a set with values and vectors representing that value in the given base where the most significant 'digit' is at the first location of the vector. (A more logical choice would be to have the least significant 'digit' first for when you want to define operations on those vectors.) To make this a bijection (if I am not mistaken), the following definition can be used:
reverse_base_repensation(n in Nat)
= { (n in Nat, v in Vectors of {0, .., n-1}
  |     n = sum i in {1, .. , size(v)}: v[i] * n ^ (size(v) - i)
    and not v[size(v)] = 0
  }
(One would still need to proof that this indeed a bijection.) A sub sequence or sub vector is made by taking a specified number of elements from a vector and arranging these in the same order. So, we need a vector with indices taking from the size of the vector in increasing order. One can achieve this by defining a sorting function for the values in a set and an order function.
sorting(S in Sets, order is Sets of Vectors of S) =
= { v is Vectors of S
  |     length(v) = size(S)
    and (forall e in S: exact one i: v[i] == s)
    and (forall i,j: i < j implies (v[i], v[j]) in order))
  }
subvectors(V in Vectors)
= { v 
  | forall s subset {1, .. , size(V)}
       exists a in sorting(s, {(a in Nat, b in Nat) | a => b }):
          forall i in {1, .. ,size(v)}: v[i] = V[a[i]]
  }
There are probably other and better ways to define this with mathematics and with a more mathematical correct notation. (I prefer to use words for mathematical symbols.) It is not tivial write a program that could execute these kind of definitions, because it is not immediately clear which is the correct execution method, let alone to optimize this into a low polynomial algorithm, because this requires reasoning that goes through all the definitions.


Thursday, December 4, 2025

A free space for experimentation

I went to Rijksmuseum Twenthe to see the exhibition Enschede: A free space for experimentation. The exhibition offers an overview of a groundbreaking avant-garde that emerged in the city in the past hundred years with as highlights the periodical 'De Enschedese School' and the AKI between 1980 and 2002. 'De Enschedese School' was a periodical of that was send by mail four to six times per year for a yearly subscription fee, at first only as printed material but later also other forms of art. It was started by Frans Oosterhof. I read in one of the publications (that was folded open under glass) that Wim T. Schippers was also on of the editors. (See for some more information the page about De Doka van Hercules, a comic book losely based on the Dutch literary novel De donkers kamer van Damokles by W.F. Hermans.) However, I agree with Ernst Bergboer, who wrote (in Dutch): "There was no lie in it, but the significance of art, and especially the experimental variants that emerged in Enschede, never penetrated the city". When in 2002 the AKI merged with some other art schools, it became less experimental and more traditional academic. I am not sure whether that should be considered as an improvement.

I found the following works from the exhibition noteworthy:

I also walked through the rest of the museum and saw (among many other things) the exhibition Calculating Empires, which I had seen before, and the following works:


Friday, December 5, 2025

Sauerkraut

Today we opened our first jar of sauerkraut, which we made with white cabbage. There are still jars in the meter cupboard with sauerkraut made from red cabbage and Savoy cabbage. The meter cupboard has a relatively stable temperature due to the district heating pipes. The potatoes (not visible in the photo) are also from Herenboeren Usseler Es. We browned 200 grams of ground beef with an onion and three cloves of garlic. Then mixed in the sauerkraut (500g) and left it simmer over low heat. Just before the potatoes were done, we sautéed a red bell pepper in a little oil and added some Mrs. H.S. Ball Chutney Hot for a sweet and a bit spicy sauce. We mashed the potatoes with a generous splash of milk.


Tuesday, December 9, 2025

Phoenix BIOS (Part 2)

When I was ready to depart from TkkrLab, I noticed that the box with PCB was still there. I causually made a remark about having taken the Phoenix BIOS ICs from one of the other motherboards. Then another member of the hacker space made some remark that he would like to have them as he took the motherboard, which happens to be from a 286 PC, and already had noted that the BIOS ICs were missing. I have promised to return them to him.


Wednesday, December 10, 2025

Enschede 0,7K

In the evening, I paid a short visit to the exhibition Enschede 0,7L at artist collective B93 with photographs by Cyril Wermers and collages by Torino.


Friday, December 12, 2025

Advent of Code

At 6:57:25, I finished this year of Advent of Code. I spend the most time on solving the second part for last Wednesday. My process of solving the second part is recorded on this mark down page. I am a bit proud that I was able to solve this all on my own. I read on reddit that many people solving it with the Z3 Theorem Prover. I felt a bit getting trolled for todays puzzle, because it looked like a very hard puzzle, even for the first part, but it turned to be rather simple in the end. And the second part was just a bonus part for it you had solved all previous parts, just like in the past years. I was a bit afraid that this last puzzle would keep us busy till Christmas.


This months interesting links


Home | November 2025