Weeknotes 2025 W40: Normal fucking

September 29​–​October 5, 2025

Quick bits:


I’ve got nine sessions left in my acting class.

In just over two months, we’ll have a semi-public performance of the scenes we’ve worked on. As before: if we’re mutuals and you’d like to attend this evening of assorted scenes (in Berlin), let me know and I’ll get you an invite.

Gotta have an audience for the stakes to be real, you know?

I’m working on three unrelated monologues. Doing monologues has its benefits and drawbacks: it’s nice to be fully in control, but not having a scene partner to bounce off of creates its own challenges.

In any case, I’ve got my work cut out for me; three monologues is plenty. I’d have liked to have a scene with a scene partner, but that wouldn’t be particularly wise at this time given my workload. At least for one of these three monologues, I feel quite confident with the text; the other two need more practice. Consistent daily practice is key, and I think I’ve become pretty good at that.1

For now, I’m still exploring these monologues, figuring out where I can take the text and the characters. I imagine I’ll start narrowing things down by mid to late October.

I’ve come to realize that I quite like playing eccentric characters.


This was the busiest week in my job search so far, to the point of being exhausting. Alas, not as much progress as I had hoped for (and I’m probably sounding like a broken record at this point).

Behold the worst-worded rejection letter I’ve ever received:

Hi Denis,

Sorry for the late update.

We won't be moving forward. 

Thank you for your time and all the best in your search.

Regards,

This followed an interview was so strange that I had no idea what the interviewer wanted from me.2

I then interviewed for another company where both the head of engineering and one of the principal engineers were just immensely dull. It sure is a red flag when you ask the question “what are you most proud of during your tenure here” and the answer, after quite a pause, is “nothing comes to mind.”

Lastly, I had one interview that was scheduled soon after a GP appointment where I had some blood drawn. Not having eaten for quite a while and having blood drawn meant I was far too low on energy to perform well; I rather unsurprisingly got a rejection soon after. I wish I had rescheduled. Mistakes were made.


I’m making only slow progress on Deng. My desire to have a clean C API certainly isn’t making things easy for me, but it’ll be worth it. After all, I don’t want Deng to be only usable from Zig!

My current struggle is adding decent support for arrays. The difficulty comes from not wanting to be limited to C arrays; for example, I’d like to be able to take in a Ruby array (a rb_cArray) without hassle.

And so I think it makes more sense to define an array as a struct with len and get methods, like this:

typedef struct _deng_ArrayValue {
  const void* ptr;

  const size_t (*len)(
    void* ptr
  );

  const struct _deng_Value (*get)(
    void* ptr,
    size_t idx
  );
} deng_ArrayValue;

C syntax is rough. But what this means is that an array value has three items:

Rather OOP, and I like that! Here are some examples of how this API would be used:

my_array_value.len(
  my_array_value.ptr
);
my_array_value.get(
  my_array_value.ptr,
  42
);

This approach has one significant drawback: the ArrayValue definition assumes that random access is cheap — O(1). This is not the case for lists in general. I would’ve liked to have a generic iterator pattern, but it’s surprisingly complicated to implement in a language with manual memory management.

At least the array value definition is nicely in line with the already existing ObjectValue API:

typedef struct _deng_ObjectValue {
  const void* ptr;

  const struct _deng_Value (*get)(
    const void* ptr,
    deng_LookupKey lookup_key
  );
} deng_ObjectValue;

Entertainment:


Links:

Tech links:


  1. Except during my trip to Belgium, but that’s to be expected. ↩︎

  2. This was for the same people I mentioned back in Week­notes 2024 W22: Worst job interview; I don’t know what I was expecting from giving them another chance. ↩︎

  3. By “value,” I mean a deng_Value struct, which can contain (through the magic of tagged unions) a boolean, a number, a string (either C string or pointer+length tuple), an object, or an array. ↩︎

  4. Night of the Living Dead, directed by George A. Romero, written by John A. Russo and George A. Romero (Image Ten, 1968). ↩︎

  5. La mala educación, written and directed by Pedro Almodóvar (Canal+ España, El Deseo, Instituto de la Cinematografía y de las Artes Audiovisuales (ICAA), 2005). ↩︎

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.