#programming
Sending webmentions on deploy
I’ve spent a fair bit of time on the receiving end of webmentions, from adding support for them in the first place through to fetching them at build time and...
Merge Commits Are Just Noise
Run git log --graph on most team projects and you’ll see the problem. Parallel lines everywhere, merge commits that just say “Merge branch ‘feature/x’ into develop”. None of it useful....
Baking webmentions into the build
Back in 2022 I added webmention support to this blog. The implementation worked but it was entirely client-side, so the page would load, JS would fire, fetch from webmention.io, and...
Reducing commit log noise caused by a GitHub Action
I have a “now playing” widget on my /now page that shows the last track scrobbled to Last.fm. It’s powered by a GitHub Actions workflow that polls the Last.fm API...
Plugins instead of patches
I’ve been running Known as my social posting hub for a while now. It’s a solid IndieWeb-friendly CMS that handles status updates, photos, and syndication to various silos. Recently I...
Building an emoji-only chat app
My daughter finds emoji hilarious. She’s 6 and will scroll through an emoji picker for ages. My wife and I started by letting her use WhatsApp’s emoji picker to send...
Building a Balatro-lite game with vanilla web tech
I’ve spent countless hours playing Balatro, and I’ve always wanted to create my own game with similar mechanics. When TrinketOS announced a game jam, it was the perfect excuse to...
A Bit of a Bodge To Make MASSIVE Emoji
I’ve been fiddling with an instance of Known over on social.omgmog.net. As part of my fiddling I’ve been trying out some of the plugins for Known. I came across the...
Adding support for Webmentions
I’ve added Webmention support to the posts on this blog. Webmentions are a method for websites to know that they’ve been linked to (or mentioned) from elsewhere on the web....
The Raspberry Pi Pico and the Pimoroni Pico RGB Keypad
In January the Raspberry Pi Pico was announced. The Pico is a RP2040 microcontroller featuring a dual-core Arm Cortex-M0+ processor with 264KB internal RAM and support for up to 16MB...
Approaches for a simple state system
Outlining text and sprites
A custom font
A Dialog System
Extra small extra macro keys v2.0
Useful bash aliases for VPS
Summer of Hacks: Game Dev Day
As part of the JS Oxford-organised Summer of Hacks, I co-organised the “Game Dev Day” hack day in Oxford. This is the second time I’ve held an event during the...
SusHack #1: Building the foundations of the Oxford Flood Network Stack
This past weekend I held my first hack day. This is a recollection of why/how SusHack came to be, and how the day went.
Awesome Bash arrays
The woes of trailing commas in IE
Getting to grips with git log
Using jQuery to create a custom thumbnail for an embedded video
Updates to my 'install all firefox' bash script for Mac OS X
Bash script to install all major versions of Firefox on OS X
Trying coffeescript
My solution to the JavaScript challenge 07/03/11
Javascript function to group repeated values of an array with totals
Javascript/jQuery challenge of the week 07/03/11
Building JavaScript arrays from HTML using regular expressions
A simple solution for a jQuery animation loop memory leak
Using Greasemonkey scripts with Google Chrome
Waka Waka - Pacman Moleskine! and some Objective-C
Using jQuery to supply and clear default input values