-
We need a unified Agents document for codebases
- Cursor uses
.cursor/rules - OpenAI uses
AGENTS.md - Claude uses
CLAUDE.md - The list goes on…
Whilst these text based instructions are fantastic for hosting in a repo, how can we account for multiple developers working in the same repo but using different AI tools?
If I had to vote for an existing route, I think
AGENTS.mdis the most elegant.If I could offer my own implementation, I think
.agents/rules.mdwould be better. That way we could establish a canonical folder that holds the likely-to-grow list of reference files and docs we’ll be providing to AI agents in the future. - Cursor uses
-
Using a Gutenberg Block to run Snake
TL:DR I made Snake in React and it runs in a Gutenberg editor block. Try it out in one click on WordPress Playground.

The code is of course open source and available over at my Github. The actual Snake game is adapted from MaelDrapier’s React Simple Snake, and whilst that is even available on NPM, I wanted to Fork the code and make some tweaks so that it would run better in Gutenberg.
The original React Simple Snake uses a recursive function to handle the main game loop, a timer that re-calls itself each time it completes. For my implementation instead I use a frame counter that increases each time the timer completes, and then
useEffect()to monitor changes in that frame counter and re-call the timer function. It’s a small tweak but it forces a re-render of the block at the expected timing.I also migrated the high score system away from JS LocalStorage and instead moved it directly onto a block attribute. That means whenever your score exceeds a high score, the post editor becomes dirty and is ready to save your changes. Using attributes like this on the block also means I have a simple way of offering game options, like colours, text styling etc. really simply.
The game needs work, the code needs work and linting, but this MVP is pretty fun. Add the block to your post editor whenever you want to play Snake, and if you save the post, don’t worry, nothing renders to the front-end!
I did this mainly to test a few things:
- Could WordPress Playground reasonably be used as a game distribution service?
- Could Gutenberg blocks be used for gaming, or fun things in general.
The answer to both is yes! This is something I’d like to keep pushing at, keep making WordPress weird and just generally fun.
-
Admitting Failure
12 games in 12 months didn’t work out. I managed 3 in the end (although the 12 months isn’t over).
I had to face my own ADHD riddled reality. I created 19 prototypes in the space of 4 months, entirely to my own detriment.
I took a break from Playdate dev because I could no longer focus on just one thing, and instead the pull of wanting to start a new project was constantly nagging at me.
After a 6 month break, I’ve started thinking about projects again.
Whether this means I’ll begin development again is yet to be seen, I’d rather keep myself healthy and happy rather than flood my thoughts with “what if this game?” or similar.
Also Hades II is superb and is taking up my hobby time for now.
-
April’s Game, Orbit Angler, for FishFest Game Jam
I’m feeling pretty great about announcing that game 2 of my 12 games in 12 months challenge is now ready! You can get Orbit Angler now on Itch.io https://tommusrhodus.itch.io/orbit-angler

It’s a game about launching a fish into orbit and trying to keep it there as long as possible, and it’s surprisingly moreish. This game though makes firm use of the crank, there’s no alternative control scheme, it’s also (at time of writing) needing a bunch more polish.
Development
Development went well for this one, learnt a bunch about offsetting graphics on the playdate to allow for screen scrolling, as well as more about maths and geometry than I ever did in high school.
The planet acts as an anchor point, all “physics” point right back to the middle, gravity is applied per frame to Angler, and a tiny TINY amount of friction is applied to ensure that the game actually has an end state. Without friction, it was possible to drift forever in space, which whilst a hilarious side-effect, was pretty boring overall.
Future Plans
The current build is completely free and needs some more polishing work. I’d like to add a credits screen in-game, a “how to play” section and some more graphical polish.
After that I’ll build in highscore tracking and sell that build for $2 like my previous game, Legally Distinct, Planetary Based, Suika Game Clone for Playdate. This time though, I’m thinking of hiring an illustrator to put together an intro comic for the game, I think there could be some fun there and would be worth the investment.
-
Building 12 Games in 12 Months
Recently I got myself a Playdate, a tiny, yellow, underpowered games console by the people over at Panic. I tried out their SDK and fell in love, having already released my first game for the system: Legally Distinct, Planetary Based, Suika Game Clone for Playdate.
Taking some inspiration from the old Dev Diary series by Yahtzee, I’ve decided to set myself the challenge of creating 12 games in 12 months for the Playdate, here’s the rules:
- Between March 2024 & March 2025, release 12 games for Playdate.
- Some games will be short, some longer, there’s no specific size goal.
- Some will be original, some will be clones, some remixes etc.
- All games will be made by me, but I’ll be pulling in appropriate assets where needed.
- Doesn’t have to be 1 game per month, just an average of 12 in 12 months.
The game for March 2024 is Legally Distinct, Planetary Based, Suika Game Clone for Playdate.




-
Have you checked your cars 12v battery health recently?
TL:DR I hadn’t, and found myself with a totally dead car when I was away from home. The kicker? The 12v in my car was bolted away under a cover in the boot (trunk).
There’s a whole bunch of ways to check the health of a car battery yourself, a quick search will reveal that.
In the UK, there’s also a bunch of garages you can go to for a battery checkup, so if doing this yourself doesn’t sound like your kind of thing, maybe try that route?
For context, my car had shown zero indications of battery issues before this happened, so don’t wait for failure, get it checked out early.
-
Converting external links to open in a new window automagically.
First, the code. Add this as a plugin, an mu-plugin, or a snippet straight into
functions.phpI’m really excited by all of the upcoming HTML modification API’s in WordPress. Since 6.2 we’ve had the WordPress HTML Tag Processor API which allows parsing HTML without REGEX, and then allows modifying attributes on elements.
That’s basically what this snippet does, parses post content, searches for links, compares the URL to the site URL, and alters the
targetattribute if it’s deemed to be an external link.In WordPress 6.4 there’s updates coming and a new HTML processor which should further simplify markup modification directly from PHP without using REGEX.
