Weeknotes 2025 W34: Irrational aspiration

August 18​–​24, 2025

Quick bits:


Shower thoughts:


Earlier this week, a cyclist veered off the cycle path onto the pedestrian path right where I was walking, and without braking slammed into me. I fortunately managed to brace and avoided any harm, but psychologically, I am not alright.

The cyclist got angry, threw off his backpack, and advanced at me with the clear intent to land a punch, but fortunately that didn’t happen.

This cyclist shouted at me that I was in the way and that I must not stand in the way of him cycling where he desires. Remember: this is on the sidewalk. Unbelievable.

The entitlement that cyclists have in Berlin is through the roof. It has been all too common for cyclists on the sidewalk to ring their bell to request that you step out of the way, but the last few years it has gotten worse, with cyclists forcefully taking the sidewalk for themselves. Never, however, have I been run over by a cyclist on the sidewalk and then be told that I, the pedestrian, was the problem.

It is antisocial and egocentric behaviour, and I am so sick of it.

While I’m not the greatest fan of the police, oh how much I would like them to start handing out fines for cycling on the sidewalk.


Moving to London might be an irrational aspiration.

Don’t get me wrong: there is a lot to like about London, and I’d love to live and work there.

It’s just that getting into the UK and staying there is far from easy. I’d be on a risky UK Skilled Worker visa, where losing my job means I have 60 days to find another job or leave the country. 60 days is nothing.

I’d have to spend at least five years on such a visa before I’d qualify for permanent residency (ILR; indefinite leave to remain). That means spending five years on a risky visa where I need to have a backup plan at the ready.

I’d only be able to get a job from a company that is authorized to sponsor a visa. There are few of those. On top of that, a Skilled Worker visa is expensive, and even if a company is authorized to sponsor such a visa, it doesn’t mean they will. This makes the 60 days seem even more absurdly short.

Five years to get indefinite leave to remain might not seem like too long, but it’ll take longer than that, because it takes five years to qualify for ILR, not to get ILR, so it is more realistic to wait 6–7 years to get ILR. That is a lot of time of being on such a risky visa. Also, if Labour get their way, that five years might go up to ten.

Qualifying for ILR requires a continuous five-year period of living in the UK, which means that losing one’s job and not being able to find new employment means that it’s likely that the time towards qualifying for ILR will reset.

The Global Talent visa isn’t an option. The bar for meeting its requirements is absurdly high.

Sigh.

The UK is making it enormously hard for anyone to move there. It’s not going to change; the world feels like it’s been getting a lot more protectionist and isolationist as of late.

So the question is: how much risk am I okay with? How does the desire to live and work in London weigh up against that risk?


I spent some time this week on adding live-reload support to ddwww, and released version 0.2. It’s neat to be back to writing Go code!

GoReleaser is a pain, though. It is complex and badly documented. It falls over often, and when it does, the situation is tough to debug. I wish there was an easy-to-use tool for releasing software, independent from Go. Perhaps it is time to resurrect the idea behind released?


I’ve been struggling with Ruby this week.

For no clear reason, I started getting errors like Symbol not found: _rb_cFalseClass and Symbol not found: _rb_cObject. I solved this by reinstalling Ruby and all gems from scratch,1 but I am still mystified as to what could have caused it.

My attempts at writing a Ruby extension in Zig have not been successful. Ruby’s C API is not very nice, and the hundreds of C macros make it hard to write Ruby extensions in anything but C.

In addition, Ruby extensions on macOS need to be bundles rather than dynamic libraries. In other words, the linker ld needs -bundle rather than -dylib or -dynamic.2 Zig, at the moment, does not support creating bundles.

For now, I’ll likely go the FFI route (using Fiddle) which is a little slower, but doesn’t require a bundle, and also sidesteps using the rather nasty Ruby C API.

As for the SSG itself: I’ll get back to it soon.


Zig 0.15 is out, and I’ve upgraded my TomatenMark parser to this new version. Even though there are quite a few breaking changes in Zig 0.15, I think the process wasn’t too bad.

The upgrade to Zig 0.15 yielded a nice speed improvement. Last week, I wrote about not wanting to spend time fixing the slow IO, and the wait was worth it: I’m measuring a 2.3× performance improvement from 0.14 to 0.15. This new parser processes a 44 MB document in about 160ms. That’s a rate of 275 MB/s, well above the sustained throughput of the best HDDs these days. What more can I ask?


Entertainment:


Links:

Entertainment links:


  1. Fortunately, with ddenv, that was a single command, followed by a bit of waiting. Not to toot my own horn, but ddenv is great. ↩︎

  2. I don’t really understand the difference between a shared library and a bundle. They are both shared libraries. (Note that I’m not referring to “bundles” as directories that masquerade as files here.) ↩︎

  3. Cyberpunk 2077 (CD Projekt Red, 2020), published by CD Projekt. ↩︎

  4. Vivarium, directed by Lorcan Finnegan, written by Garret Shanley and Lorcan Finnegan (Fantastic Films, Frakas Productions, Fís Éireann / Screen Ireland, 2020). ↩︎

You can reply to this weeknotes entry by email. I’d love to hear your thoughts!
If you like what I write, stick your email address below and subscribe. I send out my weeknotes every Sunday morning. Alternatively, subscribe to the web feed.