Easóg

My cat with her own dedicated page on this site.

Hey

I tried to put a batman mask on your cat on your webpage, refreshed the page and it… did not save most of the attempt, so it looks like I just scribbled over the top of its face, im really sorry, I cant see any way to undo it.

A screenshot showing the photo of the cat with black scribbles over her face.





Caoimhe

I don’t watch game streamers much but one of the few who I have enjoyed a lot is Videochess (a.k.a. Chess). She doesn’t stream regularly at the moment but she has wonderful chaotic energy and a propensity for “crimes”, a term she uses for playfully exploring the mechanics of and pushing at the boundaries of games and seeing what is possible if one strays from the designated path. This can manifest as things like impromptu sequence breaking but not for the purposes of speedrunning or anything like that, just to see where it goes and tease out the foibles of a game. And sometimes she does things like collecting every star in Super Mario 64 while playing the game with a DJ Hero controller.

There are two main places to find her videos, her own Youtube channel that has her streams up until 2022 and another unofficial but endorsed channel that has archived more recent streams. One of her most popular series is an Ocarina of Time randomiser with GGDG but below I will share some of her videos that have had the largest influence on me.

Snolf

Her truly Sisyphean streams of Melon’s Snolf hacks inspired me to make my own Snolf Robo Blast 2 mod for Sonic Robo Blast 2 as well as a chat control mod that Chess ended up playing herself.

Discovering new games

I have also learnt about games and mods that I have since played or are now on my (long) list of things I want to get around to.

Robot Alchemical Drive I still have not gotten around to playing but seems fascinating. I love games with weird controls and especially when there is a diegetic basis for them. Having to remote control a giant robot from the perspective of someone on the ground who has to watch it from a distance rather than getting a camera from the perspective of the robot itself or even a cockpit is an incredible concept. You may be familiar with the game from clips that get shared online showcasing the best value greengrocer or Nanao having a miserable time.

I had only vaguely heard of Cave Story before watching her play “Cave Story Normal Regular”1, i.e. Sonic Story, a mod that replaces the main character of the game, Quote, with Sonic the Hedgehog. Yes, I know this is a massively important and influential game. No, I never bothered looking into it at all despite having had the Steam version in my library for years from some Humble Bundle or another. I have played both Cave Story and Sonic Story since and I can attest that Sonic Story perfectly replicates the feeling of how Mega Drive Sonic games control. It’s not just a reskin it is is playing as Sonic the Hedgehog in the wrong game in a way that is wonderful and silly.

For the opposite she has played Mario put into a Sonic game with the SM64 Generations mod, which uses libsm64. She has also played some other games using libsm64 as well as other regular normal Mario 64 mods.

Willy Wombat

I also became obsessed with Willy Wombat for a while after watching her play it. It is a fascinating, experimental 3D platformer with an isomorphic perspective with maps that have the same limitations as a Doom level: There are no slopes and not only are there no floating platforms but it’s impossible to have a floating platform in this game. Like Doom the levels are defined by floor sectors with designated heights. There are pillars and walls that rise out of the ground for vertically, but you can never go under anything. It leads to some unique level design, especially as the game progresses to areas were the developers had clearly gotten much more comfortable with their tools. The only thing I can think of that is similar (though lacking the top-down perspective) is older versions of Sonic Robo Blast 2 and that is literally a fork of Doom.

It’s also one of those bygone ’90s games that is fully voiced in English with a script penned and directed by a Japanese crew, giving it a surreal quality that is aided by a post-apocalyptic setting with jarring name choices and very little up-front exposition. Above is a fan animation I adore of a cutscene of Notes and Mail talking about “the peace and eternal life of Prison.”

Mail from Willy Wombat
Art of Mail from Hudson Soft’s official website that I used as an avatar for a while.

I have a page on this website dedicated to my cat Easóg where you can see a video of her trying to kill Willy while I am watching Chess play the game and mushroom32x made a fun little Neocities webpage for the game’s 20th anniversary.

There’s plenty more

That’s enough for now. If you want to watch more check out the official and unofficial Youtube channels to dig through yourself.

  1. Calling things “normal regular” or “regular normal” when they are, in fact, peculiar is one of several Chessisms that have infected my vocabulary. 


I have to take my blood pressure a few times a day at the moment and the cat is absolutely terrified of the velcro strap. It’s because of the noise it makes but she runs out of the room when sees me so much as get out the blood pressure monitor.





Caoimhe

Easóg

Easóg, a white cat with yellow eyes, staring off into space while a television behind her says “no signal”.
Head empty.

Easóg is the Irish word for stoat and also the name of my cat. There are a couple layers to this name. The first is simply I find it funny to call animals by the wrong species and I have a fondness for the Irish language. The second is she is a thin, white thing and I think sometimes she somewhat resembles a stoat in its winter coat (though stoats in Ireland don’t actually have winter coats).

The final layer to this comes from the medieval Irish law, commonly known as Brehon law, or at least a little titbit about it in a book I read by Niall Mac Coitir titled Ireland’s Animals: Myths, Legends and Folklore, which says that for the purposes of determining legal penalties by offences commitid by a pet, a stoat was legally considered to be a type of cat. I sometimes amuse myself thinking about some exasperated judge who had to decide the original precedent about how to calculate damages when someone’s stoat killed a chicken.

Easóg, standing astride a sink, yelling at the camera, blurry from motion.
If anyone asks, this is legally a stoat.

I adopted her when she was, I was told, about eleven months old, though I never got a birthday for her. She’s a very timid creature and the morning after the first night I brought her home I couldn’t find her. I searched my flat top to bottom but she was nowhere to be seen. I was worried that she had somehow gotten out but suspected that she had found a hiding spot in the space under and behind the kitchen cabinets. I did have a look around outside and put up a few posters with my number on it in case anyone spotted her, but inside I left out food for her, sprinkled flour around it so that I could see any footprints she left if she went for it, and set up a webcam with some software to automatically capture video if it detected motion. Here is the first video captured of her.

Target spotted.

This worked but sadly it was the only way that I saw her for three weeks. She would hide during the day when I was around and only come out at night to eat, use the litter tray that I had left out, and slowly start to explore her new home. There was no real way of getting to her hiding spot without dismantling the kitchen and that would have terrified her more anyway. Eventually she started to venture out when I was around and would explore other parts of the flat during the day (I left the doors open for her) but would keep her distance and flee back to her hole if I motioned towards her or even moved very quickly or made any noise at all.

Easóg starting at the base of a sink for some reason.
Corner.

Once she was tolerating my (distant) presence more I decided to try and make myself as unthreatening as possible. When she stepped out into the hallway I lay on the floor of the living room and waited for her to come back. When she did she very, very slowly and very, very carefully stalked up ot me then sniffed my hand before running away. Then she slowly came up again and sniffed my hair and ran away. I continued to lay still to not scare her but she very visibly relaxed at this point. She had been deathly silent in those weeks but now started to meow and take some experimental swipes at a mouse toy that I had left on the floor and rubbing her head against the furniture.

She left the room again and I decided to sit up with my legs crossed and wait for her again. When she came back again she sniffed at my hand and experimentally rubbed up against me before running off a short distance. When she came back to me it was like a switch had been flipped. She started rubbing up against me in earnest while purring loudly before headbutting my hand affectionately and licking the hell out of me as I pet her. When I eventually moved over to my desk she jumped up in my lap and settled in. My clothes were absolutely covered in white hair that evening.

My lower body covered in cat hair.
Send help.

To this day she is extremely affectionate (and vocal) and while she is still quite timid and doesn’t like sudden noises or movements she has gotten much more used to people.

Easóg sleeping in my arms.

I do spoil her a bit, though.

Easóg watching a monitor hooked up to a Raspberry Pi playing a video of a chipmunk.
I should get her a yurt.

Also a friend pointed out to me that the character I made in Sonic Forces several years before adopting Easóg, who I called Blitz, is also a white cat with yellow eyes. Perhaps they are sisters.

A white cat in Sonic Forces.
Blitz the Cat.

The rest is just a photo dump.

Easóg examining a jar of Lao Gan Ma.
Easóg’s head poking out from under an exercise mat.
Easóg watching the Youtube video “How to Crash SM64 Using a Pendulum (Commentated)”.
Easóg examining a mirror.
Easóg sitting looking angery.
Easóg sitting on a trans flag.
Wide angle lens photo of Easóg.
My cat Easóg sitting on my lap as we watch the alien catgirl Aisha Clan-Clan from Outlaw Star on the TV.
Easóg lying sideways on a staircase being pet.

Caoimhe

A different GIF will displayed below depending on your browser’s prefers-reduced-motion and prefers-color-scheme settings. There’s four different possibilities:

A white cat

I hadn’t used prefers-reduced-motion before but I saw a chost from Kore linking to a blog post about accessibility and GIFs and decided I wanted to follow it but I also didn’t want to have to manually write the HTML code for it each time. Thankfully programming is the art of being tactically lazy and I can put some effort in up front and solve an interesting problem once and then let my site generator handle it automatically from then on.

Also thankfully I had done something like this before after taking inspiration how Luna’s blog handles images. I don’t have high D.P.I. images but I do have different dark and light mode versions of images for the The “the Ring” Podcast series tracker chart and the Dracula International diagram I made.

The way I had initially done that was, characteristically, a mess. I wrote a custom custom Liquid tag to handle it which meant that instead of actually using the existing, basic Markdown syntax I had to put images into my posts with something like this:

{% image /bog/images/easóg.gif %}

So revisiting this to include prefers-reduced-motion options I decided to do it differently this time. A way that would allow me to just type the normal Markdown syntax and let my code handle everything else.

![A white cat](/bog/images/easóg.gif "Easóg")

The next step was to look into how to extend and customise Jekyll’s Markdown parsing and output but that sounds hard and I didn’t want to do that so I just used a regular expression1:

/((!!?)\[([^\[\]]*)\]\((.*?) *("([^"]*)")?\))/

This runs against the raw Markdown before it’s parsed into HTML and pulls out the link, alt text and title. That last part is also a big improvement over the custom tag I previously made as that didn’t support alt text or titles at all.

The code then takes the link and checks if there are any alternative versions listed in the site’s static file list like easóg.dark.gif, easóg.static.gif or easóg.dark.static.gif. when writing a new post now I don’t have to do anything extra other than have those other versions with the right naming scheme in the same folder as the original image.

From there it it compiles it into HTML and replaces the original Markdown in the document:

<picture>
  <source srcset="/bog/images/easóg.dark.gif" media="(prefers-color-scheme: dark) and (prefers-reduced-motion: no-preference)" />
  <source srcset="/bog/images/easóg.gif" media="(prefers-reduced-motion: no-preference)" />
  <source srcset="/bog/images/easóg.dark.static.gif" media="(prefers-color-scheme: dark)" />
  <img src="/bog/images/easóg.static.gif" alt="A white cat" title="Easóg" loading="lazy" />
</picture>

Well, actually it does something else too. You might have noticed in the regular expression up above I am actually checking for an optional, second exclamation mark at the start of the image tag. That’s my own extension of the syntax. If I’m doing my own parsing I might as well go wild with it. If there are two exclamation marks at the start of the tag it also wraps the image in a link to itself and adds an extra class:

<a href="/bog/images/easóg.static.gif" class="dynamic-image-link">
  <picture>
    <source srcset="/bog/images/easóg.dark.gif" media="(prefers-color-scheme: dark) and (prefers-reduced-motion: no-preference)" />
    <source srcset="/bog/images/easóg.gif" media="(prefers-reduced-motion: no-preference)" />
    <source srcset="/bog/images/easóg.dark.static.gif" media="(prefers-color-scheme: dark)" />
    <img src="/bog/images/easóg.static.gif" alt="A white cat" title="Easóg" loading="lazy" />
  </picture>
</a>

The classes are to enable a little bit of Javascript2 to swap out the destinations of the links on the fly when swapping if the user’s media preferences change. Whichever one you currently see in the browser is the one you’ll go to if you click on it.

I might review the double bang syntax if I can figure out something that could be added to the tag that would get stripped out and ignored by a normal Markdown parser for better compatibility. If only Markdown had comments.

Is this a robust solution? Absolutely not! Will I eventually run into annoying weird cases that make me bang my head against the wall as a result of this? I already have! While writing this very bog post! Because the regular expression cannot tell that the markdown code example I have above is not meant to be parsed and turned it into HTML, making it impossible to show the before part of the before and after. Did this make me go back and implement this in a better way? No!

I added some metadata to this post telling it do disable my custom image parsing, made the parser skip doing anything if it finds that metadata on a page and then hardcoded the example at the top of this page. That’s right: This post isn’t actually using the one thing it’s meant to be demonstrating!

  1. I could have also tried parsing the resulting HTML instead of the Markdown like Luna did but that also seemed like it would take slightly more effort. 

  2. One of only three four a sadly increasing number of things Javascript is used for on the site.