Previous Up Next

Diary, December 2024



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


Sunday, December 1, 2024

Advent of Code

Yesterday, I made some preperations to join Advent of Code this year and try to get up at six in the morning every day till Christmas. I am going to use the literature programming with MarkDownC again. My progress can be followed in the repository AdventOfCode2024. Some people on the leader board:

Going into the city

I first went to the Media Markt show where I came across a PNY 512GB Attaché 4 USB 3.1 flash drive for just € 17.99. I could not resist the offer and decided to buy it. (The other product for which I came to the shop, happened much cheaper than I had expected.) Next, I went to bookshop Broekhuis where at 15:23:47, I bought the book Ooggetuigen: bezoekers vertellen over de collectie van het Bonnefanten written by Maria Barnas, Abdelkader Benali, and Sarah van Binsbergen, written in Dutch, and published by Bodosz Uitgevers in 2020, ISBN:9789082313116, for € 8.95. From there, I went to Rijksmuseum Twenthe, which had an open day with free entry. I first went to see the exhibition Chasing The Dot again and I sat for some time in the installation Chasing The Dot. I took some pictures of the books of Philip Vermeulen that were on display. I noticed that some had been moved. I looked around the back of the museum that was closed the last time we were there. I did not find the Falaises près de Pourville painting by Monet. It is possible that it has been loaned for an exhibition. I also came across the Beam Waver work by David Scheidler that is part of the exhibition Gogbot x RMT. I missed the two times before I saw this exhibition because it is a bit in a corner where it was not visible. I also saw that the exhibition PLANETART ARCHIVES X Kees de Groot 1978-2003 had been removed. They were selling posters and books at strongly reduced prices. I bought a reproduction of Falaises près de Pourville for one Euro.


Tuesday, December 4, 2024

Collector of things

I finished reading the book jurriaan van den berg: verzamelaar van dingen with text and illustrations by Linda Rusconi about her father Jurriaan van de Berg who was a collector of modern jewerly. 'Verzamelaar van dingen' is Dutch for 'Collector of things.' I started reading the book on November 28 after I received it on October 31. I really enjoyed it. I found it a very interesting and touching book.


Saturday, December 7, 2024

Do Not Believe in Us

In the afternoon, I went into the city. I first went to TETEM art space where I saw the exhibition Pearl of the Past with works by Lea van Vlodrop. I saw her work the first time on Saturday, July 6 at the AKI Finals exhibition. Next, I went to Fotogalerie Objektief, where I saw the exhibition Morgen ligt de vis erin (Dutch for Tomorrow the fish will be in) with photographs by Emiel Muijderman from his nieuws and report photography. I finally, went to the opening of the exhibition Do Not Believe in Us: Celebrating 25 years of low res hardcore images with works by The C-Men, the duo existing of Julian van Aalderen (Website in Dutch) and Sjors Trimbach (Website in Dutch). The C-Men are a VJ-duo making use of Amiga computers. The works on display are: In the shop I bought from the 'Brokjes serie 1' the '02 Alien' for € 10.00.


Sunday, December 8, 2024

Advent of Code: 14 seconds

In the past days of solving the Advent of Code coding challenges, I have been rather successfull in finding the answers when I try to find the answers in one try (including compiling the program correctly). To achieve this, I spend some time reviewing my code before compiling and running it. Several times when doing this I found syntax errors and bugs in my code.

Today, the first correct solution to the first part of the puzzle was submitted after 14 seconds by Jeroen de Bruin. On his GitHub page he writes: 'Improving my Python skills using AI.' It looks like he used an AI agent to help solving the puzzle, and in the short time it took him to submit the answer, he probably used the program that the AI generated. It might be the case that some of the other top five submitters also have been us an AI for finding their solution. In the About page of Advent of Code it says:

Can I use AI to get on the global leaderboard? Please don't use AI / LLMs (like GPT) to automatically solve a day's puzzles until that day's global leaderboards are full. By "automatically", I mean using AI to do most or all of the puzzle solving, like handing the puzzle text directly to an LLM. The leaderboards are for human competitors; if you want to compare the speed of your AI solver with others, please do so elsewhere. (If you want to use AI to help you solve puzzles, I can't really stop you, but I feel like it's harder to get better at programming if you ask an AI to do the programming for you.)
The fifth submitter for the first part of the puzzle is Foromo Daniel Soromou, who just took 35 second for the first part of the puzzle and than 61 seconds to find the solution for the second part of the puzzle. The second part is a rather simple adjustment of the first part. Although I have to admit it also took me a second try to find the solution due to not reading the puzzle description in detail, which removes an exclusion condition explicitly stated in the first part of the puzzle. He has not yet published his programs, so, we cannot see how he got from the first to the second part of the puzzle. It looks like he does not have extremely short submit times, so, probably he is just very good at these kind of challenges. Some of the top people in the global leaderboard up until today (that I have not mentioned before) are:


Wednesday, December 11, 2024

Carte Blanche

I went to the opening of two exhibitions at the artist collective B93: A day in a lifetime with photographs by Paul Hendriksen and Farewell to 't Winkel with photographs by Martin Klein Schaarsberg, which is about his parents leaving the 't Winkel where he grew up. Paul Hendriks had one of his photographs of a view from the beach towards the sea split into twenty prints showing a part of the original photograph. I thought about which of the individual photographs I liked most and selected the fourth photograph from the left in the second row from the top.


Thursday, December 12, 2024

Enschede Lights Up

In the evening, I went into the city to see the Enschede Lights Up event. I saw the following projections or installations: I was too late to see Curious about the DNA of Enschede? by Total-Image. At several places there was mentioning of the year 700, because in the year 1325, Enschede was granted town privileges. There will be a lot of celebrations in the coming year of which the official opening is next Sunday.


Saturday, December 14, 2024

A picture of a Christmas tree

The second part of todays puzzle from Advent of Code was rather cryptic mentioning finding 'a picture of a Christmas tree' in a long sequence of generated images. I first thought that the Christmas tree would be centered in the middle at the bottom and I designed some code to detected this. When this resulted in nothing promising, I went back to the puzzle description and realizing that it said 'some' and not 'all', implying that there could be dots (robots in the description) outside of the Christmas tree. I wrote some code to see if at some point there would be a horizontal concentration of dots. That was indeed the case, but there were multiple occurences of this. When I added code that also looked at a vertical concentration of dots, I did find the correct answer to the puzzle. When I later watched the video Advent of Code 2024 Day 14 - 12th gold star! by Neil Thistlethwaite solving the puzzle, I got the idea to check for the iamge that did not have any dots on top of each other. For him that did result in the correct answer. I later noticed several others also mentioning this idea. I verified it for my puzzle input and found that there was but one image with no overlapping dots. I still wonder if this always the case or that it was engineered like this.

Sapphire Blue

In the past months, I did not find a Moleskine dairy for 2025 in the shops I visited. Last Friday, I went to their Dutch webshop and discovered that they did not have the black version that I normaly buy in stock. So, I ordered a 'Moleskine 2025 12M Daily Hardcover Pocket Sapphire Blue', article code DHB2012DC2Y25, for € 23.90. The postage costs were € 3.95. Today, it arrived at 14:06 (according to the tracking page) in the mail.


Saturday, December 21, 2024

Rozendaal Ateliers

I went into the city where I saw the exhibition Rozendaal Ateliers at Concordia. It is about the artist working at Rozendaal Ateliers. I found the works of the following artist noteworhty:


Sunday, December 22, 2024

Ein Endloses Geflochtenes Band

At 15:03:27, I bought the book Gödel, Escher, Bach: Ein Endloses Geflochtenes Band written by Douglas R. Hofstadter, translated from the English Gödel, Escher, Bach: an eternal golden braid to German by Philipp Wolff-Windegg and Hermann Feuersee, and published by Deutscher Taschenbuch Verlag GmbH in September 1991, ISBN:9783423114363, from bookshop Broekhuis for € 10.00. I already saw this book yesterday, when I visited the shop, and this afternoon, I went back to buy it. I already have the original and the Dutch translation of this book. I have only read parts of those books. I do not know exactly why I bought this German translation.


Wednesday, December 28, 2024

Advent of Code: Rank 1719

My alarm went of at 5:40, such that I could go down and be ready at 6:00 to solve the last puzzle of this years Advent of Code challenge. Yesterdays puzzle was really difficult and it was way after midnight before I solved the second half of that puzzle with a bit of hacking. I might look at a better program to solve that puzzle. For today, I did get the correct algorithm to solve the problem, but I made a small mistake that required me to do some debugging with the example input that was provided with the puzzle (as there is some examples with every puzzle).When I found the bug, it found the correct answer for the example input and my puzzle input. At 6:18:26, I submitted my answer for the puzzle (being the 2060th person doing so). The second part of the puzzle is simply clicking a link that is only available if you have already solved all other puzzles, and because I had, at 6:18:51, I as the 1719th person doing so. The fact that this rank is a bit lower than the first, means that about 341 persons who solved this puzzle, had not yet solved all other puzzles.


Thursday, December 26, 2024

Language for TinyCoPoOS

In the past weeks, I have been thinking about a programming language that is an extension to (a subset) of C that can be compiled to code that for cooperative, polling operating system that I came up with last month, because it is hard to write correct code for it. An example of a some code in this language, using a I2C peripheral to read a 16 bit value from some temperature sensor every 4 ticks.
uint32_t temp = 0;
err_t temp_err = ERR_OK;

task int get_temp(void)
{
    queue for I2CExec {
       I2COpen(TEMP_DEVICE_ADDR);
       I2CStartWrite();
       I2CWrite(TEMP_DEVICE_GET_TEMP_CMD);
       I2CReadValues(2);
       temp_err = I2CExec();
       if (temp_err == ERR_OK) {
            uint8_t x = I2CRead();
            uint8_t y = I2CRead();
            temp = (x << 8) | y
       }
    }
}
I have marked the extensions bold in the above example. The task keyword (type modifier) indicates that the function should be executed as a task. The queue for keywords indicates that following code needs to be queued for the call of I2CExec task. The other function starting with I2C are low level functions that compose the I2C-request that is going to be executed. The implementation of I2CExec will make use of a timer for the case when the I2C peripheral continues producing errors due to a bad behaving slave device. The implementation for this could look like:
task err_t I2CExec(void)
{
    I2CStop();
    err_r err;
    timer bus_err_timer;
    poll {
        if (I2CDone()) {
            err = I2CError();
            break;
        }
    } at most (2) {
        err = ERR_TIMEOUT;
    }
    if (err == ERR_OK) {
        TimerReset(bus_err_timer);
    }
    else {
        I2CResetFSM();
        TimerStart(bus_err_timer, 100);
        if (TimerDone(bus_err_timer)) {
            I2CBusreset();
            poll {
                if (!I2CBusBusy())
                    break;
            }
    }
    return err;
}
The keyword timer is used to allocate a timer. The keyword poll stands for an infinite loop that yields at each iteration of the loop. The yielding means that the execution is interrupted to allow other tasts to execute. The at most keywords after a poll indicates a time-out timer will be started at the start of the poll and that the following statement will be executed if the time-out has occred. The TimerStart function will not restart the timer when it is already running. To execute the get_temp task every 10 ticks, the following code can be used, that uses the every (10) start construct. If the task is not finished yet, it will restart as soon as it is finished.
void run(void)
{
    every (10) start get_temp;
}


Friday, December 27, 2024

WinterGo

I went to Wintergo, a friendly go tournament (just one round per day) with various workshops and ample time to play board games, for just one day. primarily to talk to some people that I had not seen for a long time. This year the event was held at Brick Works De Panoven, a little over a one hour drive from were we live. I played my first game of go in more than five years during the first round, which as usual started later than according to the schedule. I lost the game with five and half points (if we counted correctly) against a 9 kyu player. I was quite happy about this because I had enlisted myself as a 11 kyu player, although according to the European Go Database my rating was just a little less than 10 kyu, because I had expected that my strength would have gone down after not having played any game for more than five years. I was a little surprised by how strong I played. I did make some tactical mistakes that costed me about twenty points, but probably also because I had played some bold moves that I could not have defended anyway. I guess I would have felt guilty had I been paired up with a 11 kyu player, as it seems that my strength is still around 10 kyu. I also watched several other go games being played, all outside the tournament and watched some strong players teach others about go. I was happy to see that the strongest player, took ample time to analyze the game he played against another player, almost replaying the whole game, and sharing his ideas about what his opponent could have done better. Strong go players have no problems with replaying a game without having taking notes, because they can usually remember the whole game. There is always an eagerness with strong players to tutor less strong players. There was a code yellow alart because of possible fog. When driving home there was some fog, just as on the way going there, but not so bad that I had to significantly my driving speed. With respect to the end position shown on the right, black captured 10 stones and I captured one.


Sunday, December 29, 2024

FDA Clearance for spinal cages

Today, I read the press release: Nvision Biomedical Technologies™ Secures FDA Clearance for First 3D-Printed Porous PEEK Interbody System made with Invibio PEEK-OPTIMA™ from September 24 earlier this year, which mentions the usages of the proprietary Bond3D additive manufacturing technology. Surpisingly the blog on the Bond3D website does not mention this achievement although it has been one of the two primary goals from April 2023 until the end of 2023 when the application for the FDA Clearance was submitted. During that period it was also my top priority to support the process team responsible for the application with respect to developing features for the Bond3D Slicer. For this, I also joined the weekly meeting of the process team to know about all the relevant developments and to see how we of the software team could support them. During that period, I did not take any holidays except for the last weeks of December, when I did joined Advent of Code, but even during that time I was on standby ready to return to the office if needed, checking my emails daily. So, I do feel part of the achievement of getting the FDA Clearance. The blog of Bond3D does mentioned that Bond3D joined the Demcon group on October 12. On October 1, 2019, I joined Bond3D as a senior software developer working primarily on the Bond3D Slicer, which is an application that taken a geometry specified with one or more 3D models (in the STL format) can produce instructions (in G-code) for a 3D-printer according to the various settings that the user has selected in the slicer. When I joined the company, the slicer was already developed and I helped to develop many of the features. Without knowing it at the time, it was my first experience with continous intergration and continuos delivery. I estimate that on the DORA Quick Check we scored an 8.3 at that time. In the years that followed, management forced a more project oriented according to the V-model on the development of the slicer, which probably resulted in a much lower score and a less effective software development process. At my preformance review at the start of 2024, I got a less than good score on the areas of cooperation and predictability due to my 'attitude' with one of the projects, a project that did not have top priorities and for which I nevertheless did achieve all the goals that were set. This caused me to lose my confidence in management, which resulted, after a lot of struggling and feeling burn-out, in quiting on March 29. Earlier that month, in the blog 'Being too senior', I implied that I did not feel recognized for my abilities as a senior software engineers.


Tuesday, December 31, 2024

403: Access Denied

I chatted with the Dutch helpdesk of Albert Heijn, the largest supermarket chain in the Netherlands, because the link https://ah.nl/producten when opening with Firefox under Linux was returning a 403 error: Access Denied with the contents (similar to):
Access Denied

You don't have permission to access "http://ah.nl/producten" on this server.

Reference #18.55071002.1735742594.142133ce

https://errors.edgesuite.net/18.55071002.1735742594.142133ce

If you follow the link to https://errors.edgesuite.net/ it says that if you are the site owner you can find more information on the control center under: "Hamburger menu > SUPPORT > Edge Diagnostics". Edgesuite.net is a content delivery network. I already had cleared the cookies for the ah.nl website. The people at the helpdesk (I chatted with three different people) suggested I use a different browser. And indeed, the link returned the expected contents with Chrome and Chromium. (According to Client Reputation Overview my IP Address did not receive a bad risk score.) I told them that I was a little surprised that Firefox was no longer supported as is only in the past week that the 403 errors are returned. The last person asked me to provide a lot of details such that the IT deparment could investigate the problem. I told that I already had provided all the necessary information by copying the above reply and the User-Agent string, which gives information about the version of Firefox and the operating system.


This months interesting links


Home | November 2024 | January 2025