Yesterday I noticed that the Archive section of this blog had a 2026
link while I hadn't blogged yet thanks to the email notification I got
from Ahrefs. Inside the message it mentioned a
critical 4XX page. When I checked my blog, I noticed that the 404 was
caused by the Archive section: the first week of januari 2026 starts
in 2025, hence there was already a 2026 link.
Today I came up with a solution: keeping track of years blogged and
using that to decide if the year is a link or not. So I increased the
version to 6.0.0. The change log is as follows:
Fix year bug in archive creation: a year could show up while it
wasn't available
Use utf-8 in read_entries to make it more consistent in
tumblelog.py
As usual the latest version is available on
GitHub.
An uptight and by-the-book cop tries to protect the outgoing widow
of a drug boss as they race through Texas pursued by crooked cops
and murderous gunmen.
In the evening Alice, Esme, and I watched Hot
Pursuit. I liked the movie and
rate it a 7 out of 10.
A hard-working small business owner and his two associates travel to
Europe to close the most important deal of their lives. But what
began as a routine business trip goes off the rails in every way
imaginable, and unimaginable.
In the evening Esme and I watched Unfinished
Business. I liked the movie
and rate it a 7 out of 10.
Just before the end of the year Jaiden had lighted two candles. Our
cat, Lina, was very curious and ended up examining one close
up. Jaiden managed to take a photo.
Lina the cat gazing at a candle. Photo taken by Jaiden.
Later she got even closer to a candle so we shooed her away before she
could hurt herself.
Lina handled the fireworks outside quite well. Only close to 12
o'clock she became restless.
At the end of the afternoon the router I ordered yesterday at Amazon
arrived: a GL.iNet GL-AX1800 Flint. Setting up the router was a piece
of cake and soon it had replaced the TP-Link TL-WDR4300 with
OpenWrt. The latter was causing unexplained disconnects very often. At
least, I suspected the router. The Flint is noticeable faster and
seems to have a slightly stronger signal.
In Daretana’s greatest mansion, a high imperial officer lies
dead—killed, to all appearances, when a tree erupted from his
body. Even here at the Empire’s borders, where contagions abound and
the blood of the leviathans works strange magical changes, it’s a
death both terrifying and impossible.
Assigned to investigate is Ana Dolabra, a detective whose reputation
for brilliance is matched only by her eccentricities. Rumor has it
that she wears a blindfold at all times, and that she can solve
impossible cases without even stepping outside the walls of her
home.
At her side is her new assistant, Dinios Kol, magically altered in
ways that make him the perfect aide to Ana’s brilliance. Din is at
turns scandalized, perplexed, and utterly infuriated by his new
superior—but as the case unfolds and he watches Ana’s mind leap from
one startling deduction to the next, he must admit that she is,
indeed, the Empire’s greatest detective.
As the two close in on a mastermind and uncover a scheme that
threatens the Empire itself, Din realizes he’s barely begun to
assemble the puzzle that is Ana Dolabra—and wonders how long he’ll
be able to keep his own secrets safe from her piercing intellect.
In the evening I started in The Tainted
Cup
by Robert Jackson Bennett.
A psychoanalyst is sentenced to community service following a
traffic accident and is assigned to provide therapeutic support to a
police agent devastated by his wife's infidelity. The two will face
unimaginable dangers together.
In the evening Esme and I watched A Time for
Bravery. I liked the movie
and rate it a 7 out of 10.
After a family tragedy, three generations of the Deetz family return
home to Winter River. Still haunted by Beetlejuice, Lydia's life is
turned upside down when her teenage daughter, Astrid, accidentally
opens the portal to the Afterlife.
In the evening Alice, Esme, and I watched Beetlejuice
Beetlejuice. I liked the movie
and rate it a 7 out of 10.
A separated couple tries celebrating one last Christmas together
with their kids before their divorce. However, the husband's new
girlfriend joins the festivities, causing tension and chaos during
the holidays.
In the evening Alice, Esme, and I watched A Merry Little
Ex-Mas. The movie was OK and
I rate it a 6 out of 10.
In the afternoon I did two releases of tumblelog. After I had made
several small code changes and pushed those to
GitHub as version 5.8.0 I
decided to make a new style as well.
The change log for 5.8.0 is as follows:
Avoid needless object creation in HTML generation in tumblelog.py
Don't keep track of tag count twice in create_tag_pages
Today I continued with making some small improvements to
tumblelog. Yesterday, inspired by "The Story of Python", I added the
walrus operator to the Python version where it made sense. And today I
did some other changes. The complete change log for tumblelog 5.7.0
is as follows:
Use the walrus operator in tumblelog.py
Use tuple unpacking in create_year_pages in tumblelog.py
Use sorted() without keys in tumblelog.py
Precompute years list in create_year_pages in tumblelog.py
Make create_blog cleaner in both tumblelog.pl and tumblelog.py
As usual the latest version is available on GitHub.
In the afternoon I replaced the deprecated @import with @use in
all styles of tumblelog. I had planned to do so for quite some time
and today I finally could find the time. I also generated a new
screenshot for each style.
The change log for tumblelog 5.6.0 is as follows:
Switch to @use instead of deprecated @import in all styles
Generate new screenshots
Update README
Bump version to 5.6.0
Nothing spectacular but a most needed update. As usual the latest
version is available on GitHub.
In the afternoon, when I wanted to watch "The Story of Python" I
discovered that LibreELEC, at least the version I have on my Raspberry
Pi, didn't support the file format. It crashed each time when I opened
the file. So I decided to download the file as an MP4 as follows:
bv*+ba/b: combine video+audio, fall back to best single file
--merge-output-format mp4: final file is MP4
Note that youtube-dl is an alias for yt-dlp in the above command.
The download video and the merging took 17 minutes and 32 seconds.
But, alas, this video also didn't work with LibreELEC. So I ended up
watching the video on the Apple TV using the YouTube app. I liked the
documentary, it was nice to see the people I knew only by name. And
the commercials? Only once somewhat in the middle.
In the evening I pushed a new version of tumblelog to
GitHub. Most of the
changes I had done in the evening but the Docker related ones I had
done earlier. The complete change log for tumbelog 5.5.0 is as
follows:
Pin Alpine version to avoid gcc 15 issue in perl.Dockerfile
Pin versions and optimize sass.Dockerfile
Make sass.Dockerfile distroless resulting in a smaller image
Use say instead of print "...\n"; in tumblelog.pl
Obtain current year using year method in tumblelog.pl
Optimize create_tag_pages by using a defaultdict in tumblelog.py
Use meta.get('id'); more Pythonic, in tumblelog.py
Use f-string in get_tag_path in tumblelog.py
Use generator expression instead of list comprehension tumblelog.py
Use groupby from itertools in create_tag_pages in tumblelog.py
I also posted an announcement to the Usenet group
comp.lang.python. Yes, I am back on Usenet after like 15 years or
so. It's still not dead but not much traffic. Some of the groups I was
subscribed to in the past hardly get any messages if any.
After a very long wait the installation of yt-dlp was ready.
The program can be used to download videos from a large number of
sites, including YouTube. It is a fork of youtube-dl. Since I can
recall that command easier, I added the following to my .zshrc:
Note that youtube-dl is an alias for yt-dlp in the above command.
I downloaded the movie so I can watch it without commercials on our TV
via a Raspberry PI running an older version of
LibreELEC. The
download of the video and merging took 33 minutes and 31 seconds. The
resulting video has extension webm so I hope LibreELEC can play it.