Weeknotes 2025 W06: Delicious hell
Quick bits:
-
Not to get too into politics, but… the chaos is part of the plan; the exhaustion is the intended effect. I’m fairly successful at diverting my focus away from it all, and putting my attention on the things that matter to me and that I have control over.
-
I helped out a crow yesterday! It was hopping around with a walnut in its beak. When I approached, it dropped the nut near me. And so, I cracked the nut carefully with my shoe. The crow flew back to me and it had a feast. Crows are friends!
-
I accidentally gave 2-eurocent tip rather than a 2-euro tip. Awkward! I’m somehow still not used to the digital devices to enter a tip amount.
-
Apple Intelligence turned itself on1 automatically after the latest macOS update. I could tell because I started getting bizarre, incongruent notification summaries. Gross.
-
I’ve released a new version of ddenv, which now automatically cleans up obsolete Shadowenv files.
Shower thoughts:
-
The existence of Washington DC implies the existence of Washington AC, capable of carrying power much more efficiently.
-
A reminder: “ElastiCache” is pronounced “elastic ache.”
Out of curiosity, I did a test to see where I’m at on the Political Compass:

No surprise there — except, perhaps, that there genuinely aren’t any political parties that at least vaguely align with my political views.
I thoroughly cleaned my coffee grinder this week. It had been a while, and it probably would’ve been a good idea to have done that earlier.
Strangely, the first cup I brewed after the cleaning tasted much worse than anything I had in a long time. The grind is much finer now, making the coffee much more bitter. I had to adjust, but now I’m back to being able to brew a nice cup of coffee.
This week, I also realized that coffee creates headaches in two ways: (a) caffeine withdrawal leads to headaches, and (b) the diuretic effect of caffeine can lead to dehydration and thus to headaches. There is no escape. I suppose I am trapped in coffee hell. Mmmm… delicious, delicious hell.
I finally bought a proper coffee scale yesterday: the Hario V60 Metal Drip Scale. The idea was to finally have a scale that would replace my crude supermarket scale.
But… the Hario scale is so terrible to be basically unusable. The buttons simply do not respond 95% of the time. This is especially a problem with the “start” and “stop” timer buttons: they need to respond instantly, but the last time I tried to use it, it took me 1m 51s of pressing the “stop” button in various ways and with various fingers to attempt to stop the timer. It takes me ages to try to turn it on. It takes me ages to try to tare it. And then I can’t get it to turn off again.
Perhaps I just have a defective model,2 but I think there are design flaws with this model that make me not like it. In particular: the buttons give no feedback. This is particularly problematic with buttons that don’t have an immediate and clear effect, like the “start” and “stop” buttons.
In the mean time, I’ve still got my old, clunky, ugly, and imprecise kitchen scale with its hard-to-read, non-backlit display. It’s not a great one, but at least it works.
I will be returning the Hario V60 Metal Drip Scale very soon.
If you have coffee scale recommendations, let me know!
The lightweight markup language I spoke about two weeks ago has evolved into TomatenMark,3 which now looks like this:
@begin section
#title Ruby’s string scanner
Ruby provides a %code{StringScanner} class, which is is an excellent building block for lexers. It offers a clean API to split up a string into individual parts.
I’ll run you through a simple example, so that you can get a feel of how it works. First, we require %code{strscan}, and then we instantiate the %code{StringScanner} with the string to scan:
~listing[lang=ruby]
require "strscan"
str = "let amount = 5;"
scanner = StringScanner.new(str)
~
@end section
When comparing D★Mark to TomatenMark™ — the ™ stands for TomatenMark itself by the way — very self-referential — it’s clear that the latter certainly has more bits of syntax, but that is expected when no longer using significant whitespace as a syntactically meaningful construct.
I’ve got a functioning albeit crude parser, and now I am ready to start using it. I believe I want to start using it for my operator precedence parsing article. I’m also considering it for an article on the concepts behind ddenv, which I think are worth talking about.
Entertainment:
-
I continue to immerse myself in the wonderful world of The Witcher 3.4 I’m playing both expansions and the base game at the same time, though, which is probably not the best in terms of immersion or realism.
The game used to crash on me rather often, but after running GOG’s “repair game” functionality, it’s back to normal. I’m not sure what caused it to break.
-
I made it through page one of the first book in Sanderson’s Mistborn series5 before somehow being distracted. I have calculated that at this rate, it will take me ninety-one years to finish this book — enough for the empire to fall, maybe? I don’t really know what this book is about — after which I can finally move on to book two.
Links:
-
Shopify’s a Nazi bar (Jason Garber)
-
Netflix Is Silencing Trans Critics to Save Emilia Pérez (Jessie Gender): Blah! Jessie hasn’t been able to catch a break.
-
Licking the AI boot (Iris Meredith)
-
Some Actions That Are Not Protesting or Voting: A good document to have around.
-
Everyone knows your location: tracking myself down through in-app ads: Yikes!
Links, but less political:
- None, hah. Everything is political, whether you like it or not.
Tech links:
-
Ambsheets: Spreadsheets for exploring scenarios (Ink & Switch): I love all the stuff that Ink & Switch works on.
-
HTML Whitespace is Broken (Devel without a Cause): I believe this is one of the reasons why writing in HTML sucks so much, and people use alternatives like Markdown, and why I’m working on stuff like D★Mark and TomatenMark.
-
UK Orders Apple to Break iCloud Advanced Data Protection (Michael Tsai): Ugh. Uuuugh.
-
The origin and unexpected evolution of the word “mainframe” (Ken Shirriff): Whoa! It had never occurred to me that there would be frames that aren’t main.
-
Cliffle on why their Rust translations of C programs tend to default to being faster:That makes sense to me! Though not obvious at all that this is a potential source of slowness.
-
I’m fully aware that it didn’t actually “turn itself on” — some people at Apple decided that it should become enabled by default — but it just sounds so Sci-Fi that I couldn’t resist writing it this way. Has Apple Intelligence become self-aware?! (No. Obviously.) ↩︎
-
Another possible cause: I’ve got particularly dry skin, and that generally causes problems with capacitive touch buttons — but usually it is nowhere near as bad as with the Hario V60 drip scale. ↩︎
-
The next markup language I create will be called ApfelMark. Thanks for the name suggestion, Tom! You are very silly. ↩︎
-
The Witcher 3: Wild Hunt (CD Projekt Red, 2015), published by CD Projekt. ↩︎
-
Brandon Sanderson, The Final Empire: Mistborn Book One (London: Gollancz, 2009). ↩︎