Advent of Code
I was a little hesitant whether I should join Advent of Code this year, but this morning, I decided to give it a try.
I had a bit of trouble getting the hang of using literature programming with
MarkDownC.
The first puzzle took me a bit more work than I had expected, especially the
second part of the puzzle. But I saw on Reddit r/adventofcode that I was not the only one. Again, I have been thinking
about a small language to solve these kind of puzzles, but for the moment, I
think I just stick with C. My progress can be followed in the repository
AdventOfCode2023.
Today, the report Leren van Twee Vuurwerkrampen (which translates as: lessons from two
firework disasters). The report is about the firework disaster that happened
on Saturday, May 13, 2000 and about a firework
disaster in Culumburg that happened on Thursday, February 14, 1991. The main
conclusions (translated from Dutch to English with the help of Google
Translate):
- 'Light' classified fireworks are much more dangerous in the event of a
fire than thought.
- Extinguishing instructions for the fire brigade are inadequate for safely
extinguishing fireworks fires.
- Problem of parallel licensing.
- Heated conflict between two ministries.
- Supervision of the fireworks industry was vulnerable.
- The role of the central government was much greater than has been reported
so far.
On the website of the indepent observers (Alle Kiezers Tellen Mee in Dutch), I found a report of their findings and
a database with data from their observers. They claim that all data, based on
photographs taken from the process report. In Enschede there was only one such
report and it was about the polling station were I went to count, strengthening my impression that the observer that was present
uploaded his photographs to the website. When I looked at the figures, I saw
that there was an error. The party NSC is said to have gotten 237 votes, but it
should be 337. That is also the number that is mentioned in the process report
and in one of the data files. They claim that the numbers have been checked by
at least one person besides the person who entered the data. Below a screen
capture of the data:
I have send an email to the indepent observers about this difference. In their
report they presenta a outcome of the election based on the 315 process reports
that they have collected and entered into their database (with at least one
mistake). It seems that they have not (yet) verified if the photographs they
took from the process reports match with those published by the various city
counsels. They do make some statements that the summing of the votes is not
transparend, but how can they say this if they even have not yet taken the
efforts to compare their data with the official published data.
They report that at ten polling stations, the observers were not allowed to
take pictures of the process report. In a questionair filled in by the
observers some more irregularities were reported. For example, one observer was
asked to help with the counting of the votes, while this is forbidden. Also
some process reports were signed by people counting before all results were
entered.
Harvest
This morning I cycled to Herenboeren Usseler Es.
Some light snow fell from the sky on my poncho and I
saw all kinds of small six pointed, star-shaped snowflakes on my poncho. I
cannot remember ever seeing this. The snow did not really settle, except for
some spots. It was not that busy at the farming cooperative. What you get
depends on the number of mouths you are paying for and what choice you make
when there are options to select from. I brought the following home:
- Roots with foliage
- Lacinato kale
- Romanesco
- Savoy cabbage (one large and one small)
- two heads of Brussles sprout (not to be confused with the sprouts)
- Small turnip (from the giveaway table)
They can be seen in the picture below:
This morning, around 10:15, the Dutch House of Representatives came together for a meeting that lasted but
3 minutes and 3 seconds to vote about whether the ballots for four voting
stations in the city Tilburg should be recounted. It is rather exceptional that they come
together on a Saturday. Yesterday, the electoral council published the outcome
of the 2023 Dutch general election. However, the 'Commission for the
Verification of Credentials' raised some questions about the result outcome,
because for some polling stations there was a rather large and unexplained gap
between the ballot count at the polling station and the central recount of the
ballots the next day. The counting report of polling station 21 reports a matching number of
ballots compared to the voter cards. It does not contain a count per candidate.
The recounting report reported a difference of 24 ballots less. I understand
that in Tilburg the count per candidate is done at a central location. (This is
legal according to the rules.) The report mentions one unexplained difference
in the number of ballots for the VVD and an explained difference for the
NSC where it states that the ballot was found with the DENK. From this I
understand that the ballots were bundled per party. For the PVV there were
nineteen less ballots counted and for the DENK seven (including the one that
belonged to NSC). This indeed a bit strange. The electoral council advised
against a recount, because they concluded that a recount would not change the
outcome of the election. The House of Representative voted to have the ballots
of four polling stations to be recounted. In the past weeks, already many
recounts have been performed when people complained that they did not see their
vote on a specific candidate. In many cases this lead to a correction, in some
not. (There must be cases where voters made mistakes as well marking their
ballot either by marking a different candidate or by marking way that made it
an invalid vote. A ballot is counted as invalid if not exactly one circle has
been marked with red or when the ballot contains text that could identify the
voter, such as a name.) There are 15 pages with comments, recounts and/or
recorrections in the report from the election counsel.
I did get a reply from independ observers. They acknowledge the error and said
that it was going to be corrected on their website.
2.5 cm of snow
This morning, there was about 2.5 cm of snow on the
table in our backgarden. However, not all the ground was covered with snow. The
snow was mostly on the trees, the plants and the grass. During the day it
quickly melted away. The temperatures are going to rise in the coming days.
Below a picture that Conny took of our backgarden.
Decompiler Explorer
I uploaded the M0 program produced when executing the i386 emulator to the Decompiler
Explorer to see what it would produce. I looked at the input produced by
the four decompilers that are selected on default. I noticed that the
decompilers angr and Ghilda ignore the interupt 0x80 calls, which are rather essential for
understanding the code. There is not even a comment about some part of the
machine code not being included. Binary Ninja does include them, but has a hard time dealing with arguments
that are passed through the regsters. The functions are annotated with
__convention("regparm"), but the function bodies contain nonsense
declarations of variables with the names of the registers. Also the results of
interupts are not returned correctly. It looks like IDA Pro by Hex-Rays, a commercial solution, performs the best. I
downloaded the source and tried to compile it. I made some edits, but did not
make much progress. I decided to leave it at this for the time being. I tried
the other decompilers. Boomerang and dewolf
reported an error not being able to decompile the file. RecStudio did produce some output, but I could not locate any interupt
0x80 calls. Reko, Relyze, and RetDec do
recognize the interupt calls, but seem to have a hard time with handing passing
values through registers. Snowman does generate structure definition and also seems to deal well
with the register passing, but does not process the interupt 0x80 calls. It
also generates some illegal C(++) syntax. I the M2 program to
decompilers behaved, because it has a different calling strategy.
Debugging the emulator: generating code
In the past weeks (since November 28), I have
continued on debugging the emulator. I have done this by implementing a
code generator that can generate a program with the same behaviour as that
of the interpreter with the idea of being able to debug the code. It seems that
the generated program has the same behaviour as the emulator. I am now in the
process of comparing this behaviour with the source program.
Book
At 15:05, I bought the book '60 '80, Attitudes, Concepts Images written
in Dutch and English and published by Stedelijk Museum in 1982,
ISBN:9789060125267, from thrift store Het Goed
for € 3.50.
Enschede Lights Up
Conny and I went to the Enschede Lights Up event, just like we did a
year ago. We again recieved two glow sticks when I went to get the booklet.
We both liked the 'Digital Forest' installation with over 100,000 LEDs, the
best.
Harvest
This morning I cycled to Herenboeren Usseler Es
to collect my part of the harvest for the last time this year. There was hot
chocolate and mulled wine. A group was singing outside and there was also
someone who was going to blow a midwinter horn a little later, but that was after I left. What you get
depends on the number of mouths you are paying for and what choice you make
when there are options to select from. I brought the following home:
- Jerusalem artichokes
- Thyme
- Winter cherry
- 2 kilos of whole wheat flour
- Radicchio
- Curly kale
- Chives
- Endive
- Leek
They can be seen in the picture below:
Advent of Code, Day 17
I woke up at 5:52, stayed a bit in bed and decided to get up and give todays
Advent of Code
puzzle a try. At 6:02, I opened my laptop and started reading. I solved both
parts of the puzzle at 7:08. Although, I have decided to take a relax approach
this year, like I did last year, I notice that I still become competitive when
I start early like today and that as a result of this I become nervous and
making more mistakes than I should. This year, I am trying to implement correct
solutions in one time, taking some time to think over everything carefully.
Most of the time, I only have to fix some syntax mistakes to get the correct
answer. Today, I ignored several compiler warnings, that could have helped
solve the bugs in the code I had written. Todays experience made me aware again
that when competing in mental games (just like playing chess or go) the
greatest challengs if often to keep your mind under control and not be overcome
with your nervousness.
Square polygons
Yesterdays Advent of
Code puzzle was about
calculating area of a polygon on a grid. Because the input polygon was
not self-overlapping, the answer could simply be found by use of Pick's theorem. If the polygon would have been self-overlapping and the
question would have been to determine the area inside the most outside lines
of the polygon, the question would have been much harder. Yesterday, I thought
I could solve this keeping tracks of minimum and maximum values on each line
(for example the most left and right squares on each horizontal line) and I
wrote an implementation for this only to find out that it does not work. I am
well aware of libraries, such as Clipper2 - Polygon Clipping and Offsetting Library and polybooljs, which implement algorithms for operations on polygons. I have
been thinking about an implementation for the case of square polygon where all
edges are horizonal or vertical connecting points on a grid, or even more
close to the puzzle, consist of squares on a grid that touch at the sides.
Someone approached me with the question what I would feel about becoming a
Scrum Master, which is an important, maybe the most important role in a
team that follows the Scrum software development method, which is said to be a
agile
software developement method. The first agile software methode that I came
in contact with is eXtreme Programming (XP). (I have
never been able to practice XP in a job.) Later, I heard about the Manifesto for Agile Software Development, which basically consists of four
statement, where the first one is: We have come to value individuals and
interaction over processes and tools. I think that this statement should be
true for every software development method because people are central to
software development. Earlier this year I wrote about my life of a software engineer and why I think that software developing is
a very demanding task. I have developped software with and without Scrum and I
come to the conclusion that I am more effective when working without Scrum.
This is partly due to how it was implemented and the people who fullfilled the
various roles at the working places where it was used. I have several
experiences where people were given the role of Scrum Master who did not have
the personal qualities for the role. I think it is an error to ask people who
admire a leadership position for this role. I also think that most software
engineers are not good Scrum Masters and that maybe it is better to ask people
outside the field of software development who have a job coaching and/or
psychological background. They should be at least people who understand the
needs of software engineers. And that is not something you automatically have
after you followed a on-line course and received a Certified Scrum Master
title. In the past years, I did have had some good experiences with team
leaders who simply helped me dealing with work related issues.
At my current job, we do not have daily-standups. We just have one meeting per
week and it only lasts one hour where report what we have been working on. We
just use a rather chaotic development method. Of course, we keep a list of
issues with some prioritization, but for there rest everybody just picks issues
that we feel comfortable to work on. We just communicate with each other when
needed, either face-to-face, but probably more often through one of the several
messaging apps or our group chat. I do not miss the daily-standups, a common
practice with Scrum, and I even got conviction that they are not the right
solution to the problem of a lack of communication between team members and
might even hamper normal communication during the working day.
I am rather introvert and I know that meetings, especially with larger groups,
drain my energy. I still have a deep need for time on my own, to work on
complex problems. I do know that I am strongly motivated in my work, when I can
help others, no matter in which way. I also like helping others figure out how
they work best, deal with their weaknesses and to help develop themselves. I
am well aware that software development is a team effort and it makes me happy
when a team functions well and everyone feels happy. I think I am good at
resolving conflicts and helping to find solutions that both parties can work
with. I have a lot of experiences with developing software and I would like to
pass this on to the next generation. One way of doing this is to take upon me
the role of 'Scrum Master', but probably not in combination with the Scrum
development methode. Because Scrum has so many processes, that you have to
follow in order to claim that you do Scrum, I wonder whether it does adhere to
the Agile Manifesto and thus can be considered as a true agile development
method.
City archive
This afternoon, I went to the city archive because I had discovered that they
had a document about a narrow gauge to the Usselerveen moor that from 1926 till
about 1954 was used to transport garbage from the city to a dump. I wanted to
know if I could found out where exactly this narrow gauge was running. When I
arrived at the archive, I discovered that it was not a single document but a
folder with all kinds of materials including several maps about the plans. I
made several pictures of the documents. Later, at home, I spend some time to
create a KML file
(in Google Maps) with the estimated location of the tracks. Besides
Google Earth, I made use of the following
websites:
It looks like the tracks ran along a bike path for far from our home. The
bike track is slightly elevated from the surrounding streets.
While I was in the city, I also visited two exhibitions at Concordia. I first saw the exhibition Iemand en Niemand with drawings/paintings by Astrid Oudheusden. Upstairs I saw the exhibition Liefde Houdt Ons Bij Elkaar with works (paintings,
drawings and some sculptures) by six artist from Syria who came to the
Netherlands as refugee. I liked the works by:
Adent of Code
Yesterday, I spend a lot of time working on the first part of the puzzle of
Day 24 of Advent of Code. I did not
finish the second part. I also have no clear idea how to solve it. With a
low-level language like C without the help of packages to solve equaltions and/or inverse
matrices, it is a rather difficult puzzle, only solvable for people who have
solved it before and are versed in the field. I woke up early this morning, I
could not fall asleep again, as I am usual able to do, because the puzzle kept
on going in my mind. I am not sure whether I should continue working on this or
that I better work on one of my other projects. I always get annoyed when other
are able to solve a certain problem and I not. I just saw that todays puzzle is
a graph connection problem. Simple to describe but probably hard to solve,
unless you know the trick.
Flooding
Some rivers in the Netherlands are having high water levels and in several
locations sandbags are used to prevent flooding. There are also mentiones
of many reports of water nuisances in crawl spaces and basements of hourse.
When we went walking through the neighbourhood we had take some detour because
an alley was flooded. We saw also saw large pools of water in some of the
fields. Yesterday, when we went walking with Annabel and her partner, to the fields of Herenboeren Usserler Es we saw some water pools there as well. I did
check our crawl space to see if it had any water, but it was dry. We have had
a lot of rain in the past months. This year is going to be wettest on record.
It looks like this year is also going to be hotest on record. I you look at the
Daily
Surface Air Temperature you will see that this year temperature has been
the highest for more than half of the year and at some days breaking the
previous record with 0.7° Celsius. Sinds may the Daily Sea Surface Temperature has been breaking records everyday since
mid May for the Word (60S-60) and North Atlantic (0-60N, 0-80W). Although the
Antarctic Sea Ice Anomaly seems to be over it it still kind of shocking to
see how large it was compared with the past years.
Nico
I finished reading the book You Are Beautiful and
You Are Alone: The Biography of Nico written by Jennifer Otter Bickerdike, which I started reading on July 23 this year,
after I bought it on July 18. It is quite a tragic
story. She definitely is not the only female artist who does not receive the
recognition that she deserved. I was impressed by the amount of sources that
the author has researched. On October 28, I
listed some videos about Nico.
Advent of Code
In the past days I was a bit under the weather with a fever. I did spend some
time working on the last two Advent of Code puzzles. It took me a long time to
solve the second part of the puzzle of December 24. At the end I did have a
peak at the video Advent of Code 2023 Day 24: Never Tell Me The Odds, which made me realize
that I had ignored an important fact that helped me solve the puzzle. I last
puzzle was related to finding a 3-cut in a graph. I already the problem om December 25 and spend some time thinking
about it. Today, I tried out the approach that I had in mind. In the end it
turned out to be the right approach. I struggled a long time with it due to a
bug in the function to parse the input. Maybe I should have spend some time to
reproduce the input from the internal representation. For all the details
see AdventOfCode2023 on GitHub.
This months interesting links
Home
| November 2023
| January 2024