Weeknotes 2025 W31: Making life hard
Quick bits:
-
The general sense of tiredness continues.
-
I forgot that it was CSD (Christopher Street Day) in Berlin last weekend. Not that I would have attended. It has become a corporate parade more than anything. Gross.
-
Friday was International World Wide Web Day and International Spider-Man Day. A coincidence? I think not!
I considered lounging in my Spidey suit on Friday, but I decided against it, as I had a job interview coming up later.1
Shower thoughts:
-
My ranking of specific illnesses: (5) common cold, (4) uncommon cold, (3) rare cold, (2) epic cold, (1) legendary cold.
-
An incomplete inventory of the types of hearts: Honest Hearts (the Fallout game DLC), Paper Hearts (the X-files episode), and Lost Hearts (the M. R. James short story).
-
The sizes of batteries are inversely correlated to the size of games. AAA game: the biggest; AAA battery: the smallest.
-
Schiphol should be renamed to Vliegtuighol in my opinion.
The job search continues. There are a few open threads, though there’s nothing that’s making much progress.
Help me out: Get me a job in 2025.
As of two days ago — August 1st — I am officially unemployed. The unemployment money isn’t confirmed yet; hopefully I’ll get some good news about that from the Arbeitsagentur2 soon. I don’t expect there to be any issues.
My external mouse (the Evoluent VerticalMouse™ 4) has been not working great lately. The cursor gets hung up on invisible obstacles frequently, which is infuriating.
Mice are annoying. They take up space because you need to shove them around a large surface, yet no amount of space feels enough.
I had been eyeing alternative pointing devices, like an external trackpad (e.g. the Apple Magic Trackpad) or a trackball. And trackball it became: I’ve bought the Kensington Orbit with scroll ring.
It’ll undoubtedly take a while for me to get properly used to. For now, I’m surprised by how much force it needs to activate: sometimes my finger slides across the ball without making it move. The scroll ring however, is excellent.
Even though I wanted to reduce my expenses going forward (not having a job and all that), not having a properly functioning pointing device is just not a reasonable status quo.
For no good reason in particular, I have decided to switch to Colemak — transitionally, at least, swapping the letters J, N, E and K as part of the Tarmak (Transitional Colemak) approach.
I’ve physically swapped out the keys on my ZSA Moonlander keyboard, and set up a layer that allows me to revert to QWERTY momentarily, because I imagine that having the option to switch back to QWERTY will be very welcome.
Changing my keyboard layout and my pointing device might be a bit much. Sometimes, I wonder if I am deliberately making life hard for myself.
Speaking of making life hard for myself: I’ve been playing around with Zig.
I had a project for which I wanted to use a compiled language without a runtime and with C interop. Initially, I thought of doing plain old C. But oof, C is a painful language to work with.
The first alternative to C that I tried was Rust. I keep bouncing off of Rust, though. I don’t think that language clicks for me. It’s big and complex, and most importantly: I don’t ever really enjoy using it.
Zig, however, is rather nice. It is a small language and improves on C in so many ways. It has modules! Strings with lengths (not just NUL-terminated)! Safe pointers! Slices! Actual array types! Structs with methods! A built-in test system! Custom allocators!
My Zig honeymoon period has officially started.
So what am I using Zig for? Writing a new static-site generator, of course!
For me, the priorities of a static-site generator are as follows (in order):
-
Flexible/extensible: I want to have full control over how content is processed, and I want to be able to provide my own processing steps (e.g. transformers for my home-brewed markup languages).
-
Fast/scalable: I want web sites to compile as fast as possible. This includes parallelism. Effective incremental compilation is a must, too.
-
Easy to distribute: I want installation to be a one-command deal. I don’t want to have to maintain a Ruby installation.
Nanoc succeeds at point 1 (even though there is certainly potential for improvement there), is quite mediocre at point 2 (doing a reasonable job given the circumstances though), and fails at point 3 (because it needs a Ruby installation).
For a SSG to follow these priorities, there are some restrictions on the tech stack:
-
I do not want to use interpreted languages (like Ruby and JavaScript) because they generally are far too slow, and often don’t have parallelism support. Also, this would make the SSG hard to distribute (can’t usually create a standalone executable).
-
I do not want to use compiled languages that have a runtime (like Go and Crystal) because function calls between such languages and C tends be difficult or unsupported. I’ll need this if I want to enable people to write their own plugins.
-
I would like to avoid languages with garbage collection (like Go and Crystal) for performance reasons. GC is convenient and safe, but it is certainly possible to go without it. Also: a language with GC likely has a runtime anyway.
This leaves primarily C, Rust, and Zig, which I’ve talked about before.3
This static-site generator project is an experiment. It is not Nanoc 5. No promises and no guarantees etc. I am building this thing for myself first and foremost.4
Entertainment:
- I started watching The Other Lamb,5 but fell asleep halfway through,6 and now it is no longer available on Mubi. Oops.
Toots and skeets:
Links:
-
Substack sent a push alert promoting a Nazi blog (Taylor Lorenz)
-
How do you find the positive integer solutions to (x/(y+z)) + (y/(z+x)) + (z/(x+y)) = 4?: This is from a while back already, but it’s been on my mind again lately. Absolutely fantastic meme.
-
I appreciate the “dress for the job you want“ comments. The job of web developer, obviously. ↩︎
-
Employment office. ↩︎
-
There is also C++, but that is a language that I am staying clear of. I have a tiny bit of experience with it, though that experience is enough to make me realise that I do not want to continue with it. I think this would also apply to the D programming language. ↩︎
-
Well, I created Nanoc for myself first and foremost, too. It just ended up being used by a ton of other people and corporations. It certainly got a little out of hand. ↩︎
-
The Other Lamb, directed by Malgorzata Szumowska, written by Catherine Smyth-McMullen (Rooks Nest Entertainment, Rumble Films (II), Subotica, 2020). ↩︎
-
I seem to have developed the habit of falling asleep during films. Maybe — hopefully — it’s just the general sense of exhaustion that I’ve been feeling. ↩︎