Weeknotes 2025 W04: Scary, man

January 20​–​26, 2025
 
2000 words

Quick bits:


Shower thoughts:


DHH, the person whose software — Ruby on Rails — I use on a daily basis and get paid well to work with, now openly supports Trump.1

Trump is a nazi. Supporting a nazi makes you a nazi. Ergo, DHH is a nazi.

It’s not a surprise. DHH has quite the history of tirades against DEI and “woke.” He has been at it for years.

But what does this mean for me using Ruby on Rails? I no longer feel comfortable recommending it, purely based on its fascist connections. (Another major contributor is Shopify, a company with far-right leadership.)


Sometimes when the far-right politics of the world get to me, a thought pops into my head: “at least you’re a cis white male.”

I hate that thought. It abhors me that it brings me some sense of comfort.

I think of myself as diametrically opposed to anything that fascism stands for. And yet, as fascism sows division amongst the people, I find myself thinking: “at least I’m not part of them.”

Again, I cannot stress enough how much I hate that thought. It is fascist ideology worming itself into my brain. I don’t want it to — and yet it happens anyway.

It is fucking scary, man.

And that little bit of comfort isn’t even meaningful. What about my friends? My friends who are gay, female, Black, trans, Jewish? I care about you all. You deserve to survive and thrive. You deserve as much as anyone else. And that applies to everyone — not just friends.

Not only that, but fascism will come for me at some point anyway. I will be part of the “them” before I know it. There is no “them” — it’s just us, as long as we stick together and look out for one another.


I’ve released an update to my Solitaire game. This one fixes an unusual bug that could leave the game in an unfinishable and crash-prone state.

Developing third-party applications on macOS is increasingly painful. After downloading the game and moving it into the Applications folder, you’ll need to open up a terminal window and run the following command:

xattr -d com.apple.quarantine /Applications/Denis’\ Solitaire.app

Without it, you’ll get a warning:

A Finder warning dialog titled “Denis’ Solitaire Not Opened.” Below it, there is some detail text: “Apple could not verify “Denis’ Solitaire” is free of malware that may harm your Mac or compromise your privacy.” Below it, two buttons: “Done” (which does nothing) and “Move to Trash.”

I could enroll into the Apple Developer Program, but that’s €99/year which is far too much for what I would use it for. If that limits the audience of the games I create… so be it. Bleh.


I have been making little progress with DELI, the language I’m designing and implementing for my Writing an Interpreter book. The book itself is on hold for now, at least until DELI is finished.

In DELI, I am now using Pratt parsing rather than using the Shunting Yard algorithm. Pratt parsing is easier and more powerful, and it might be the only approach I use from now on.2

I have also been playing with three different DELI implementations:

I am fully aware that working on three implementations at once is silly. I’d like to drop the Ruby implementation and put my focus on DELI-in-DELI, but that only works if I have a host implementation first. I don’t think Ruby is appropriate for hosting the primary implementation, so that means shifting my focus onto the Go implementation.3

It’s a lot of work: finish the host implementation, finish DELI-in-DELI, and then pick up work on the book again.

But it’ll be worth it.

I hope.


I’ve been toying with a variant of D★Mark that has two specific differences:

But first, have an example of what that could look like:

Laborum vero godard. Veniam readymade ut five dollar toast. %em{Selfies} yolo aperiam et hella qui. Distillery roof magnam quia. Eum offal quia selvage.

#begin:listing[ruby]
def greet(name)
  puts "Uhh, hi #{name} I guess"
  roll_eyes
end
#end:listing

Pork belly et tattooed aut corporis quidem intelligentsia. Impedit schlitz gastropub nihil meditation voluptatem ullam viral.

When I say anonymous blocks, I mean that paragraphs are no longer explicitly marked up with #p or #para. Because D★Mark is intended for prose, any writing is virtually guaranteed to have paragraphs. So, it makes more sense to not have to incessantly mark up paragraphs explicitly — not dissimilar from TeX or Markdown.

As for no indentation: Replacing indentation-based blocks with #begin:something and #end:something syntax makes it simpler to author in environments that don’t have explicit support for D★Mark. Specifically, it makes it realistic to write using D★Mark in Scrivener, my favorite long-form writing tool.4

I haven’t gotten around to implementing this variation yet. There is no urgency for me to get to it, though I’d love to play around with it for my interpreter book, once I get back to it.

I’ll need to find a different name for it. FlatMark? D★MarkLite? TomatenMark?! Something else? What do you think?

I might be yak shaving a little with this whole project. Yak shaving just a tiny bit.


Entertainment:


Links:

Links, but less political:

Entertainment links:

Tech links:


  1. I am not going to link to the article that DHH wrote, because fuck that. But I’ll quote one line from him: “The current American optimism is infectious!” — what the fuck?! This is not normal. ↩︎

  2. I might do a write-up on Pratt parsing, because it’s so simple and elegant. There are tutorials on Pratt parsing out there on the Internet, but they overcomplicate the concept. ↩︎

  3. I’ll admit that I was tempted to look into other languages, like Rust or Zig, but I don’t want to distract myself with learning another programming language. But now that I think about it, perhaps Crystal wouldn’t be a bad choice. ↩︎

  4. As an added benefit, removing the indentation likely makes it faster to parse, too. And much less complex. ↩︎

  5. The Witcher 3: Wild Hunt (CD Projekt Red, 2015), published by CD Projekt. ↩︎

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.