selfaware soup

Esther Weidauer

Week of the Crab


I’m shamefully stealing the idea of weekly journal posts from several other friends and people I follow on Twitter. This is the first.

low-polygon vector drawing of a crab in purple colors

It’s been a mostly quiet week after travelling last weekend and I really needed the time to rest, more that I initally thought. So a lot of time was spent on my couch.

I tried getting into Final Fantasy 14 (the MMORPG) and I was very happy to see that it offers the option to play as a really tall and buff woman. In many games, female player character options are short, super-thin and almost never muscular. As a very tall woman, I appreciate this chance of representation.

Character next to an average size male NPC, she's about 1.5x his size

I was very happy with the character I made. The character creator in the game is pretty good, not too overwhelming with options but still pretty flexible. Not only could I make a tall female character but also one that doesn’t have a cute, soft, and rounded face.

Character closeup, she has a strongly defined face and a purple/orange sidecut. Her expression is serious.

However I bounced off the game because it’s clearly made to be played with a keyboard and mouse, and the console control scheme they put on top of that feels very clunky. I also got overwhelmed with all the different mechanics , quests, lore, locations, etc. It’s a bit much for me. Especially since I already play a game that’s intense in much the same way: Destiny 2. I don’t have the capacity for another one.

Because I keep running out of storage on my PS5, I finally installed a second SSD. It was much easier than I expected and requires no tools other than a small Phillips screwdriver.

Playstation 5 with the bottom cover removed, exposing the SSD expansion slot. iPad with a howto video next to it

There’s how-to videos on Youtube that guide you through the process. I was following this one.

Why Crabs? Because I got back into Rust (the programming language). I had tried before to learn it but due to a lack of an actual project, I never stuck with it and the difficult parts of it became frustrating. But I had planned to move my daily piano practice sheets from a Ruby/Sinatra app to a static site and save myself the hosting cost. I tried to stick with Ruby but realized (again) that templating outside of frameworks like Rails and Sinatra is a pain. Seriously, I’m continuously puzzled by how bad templating engines in the Ruby ecosystem are documented, or even available. E.g. in Sinatra, you can do template inheritance using ERB, but if you use plain ERB, you can’t. It’s a feature that Sinatra provides through some hidden magic and there’s effectively zero documentation about how it’s done.

I looked at Liquid as an alternative but it doesn’t support template inheritance at all. It’s also a Shopify thing so I would avoid it just out of spite.

So, I took the opportunity to build this thing in Rust, because the Rust ecosystem has good templating engines now. Namely tera, which I ended up using.

In my ealier attempts I struggled with really understanding the ownership concepts in Rust, never sure when something was moved or borrowed. This time though I had this excellent book and it turned out to be realy helpful to actually get a good overview and to look up things a I went along. Thanks, Nora 💜

Programming Rust, 2nd Edition, Jim Blandy, Jason Orendorff & Leonora F. S. Tindall

Other resources that were helpful:

You can find the source full code of here on Github.

This project has shown me that Rust can actually work as a general-purpose langage for me. It takes more time to write things compared to Ruby or JavaScript but it leads to so much less frustration and the reassurance of a well enforced type system really fits nicely into my workflow and how I approach programming.

🦀 🦀 🦀 🦀