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:
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.
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.
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:
- Digital print on foil on the window.
- Traffic light. MDF, lights, stickers.
- Do Not Believe in US: 6 digital prints 84×118 cm.
- Let us belive in you: 3 animation loops surrounded by many smaller prints.
- Small animations: many displayed on a single screen.
- Wise Buddha. Digital print on Forex® with LED lightning, 156×150 cm.
With the text: 'Try a little gendermess. Your inner buddha has a skill issue.
Sometimes your worst just hypnotize me.'
- 5B. Digital print on Forex®, 147×210 cm.
- We R the C-Men. Animation on music.
- Peepbox. MDF, animation.
In the shop I bought from the 'Brokjes serie 1' the '02 Alien' for € 10.00.
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:
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.
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.
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.
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.
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:
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.
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.
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;
}
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.
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.
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