Vibe Coding a WordPress Plugin

I’ve written a lot of code this year and the vast majority of it I did without too much help. However, I did turn to AI (mostly ChatGPT) when I needed either a specific function written or some help with a particular issue.

What I hadn’t done was use AI to write a complete program without any code from me. I believe that this is termed “Vibe Coding“, named Collins Dictionary’s Word of the Year for 2025. Not a phrase that particularly appeals to me but I don’t get to choose.

Going with the Flow

Then, yesterday, … Read the rest

Transfering a Smart Card to Apple Wallet

On a recent trip to Washington DC we discovered the Metro’s smartcard “SmarTrip” which can be used to tap-in and tap-out at stations and on buses too. This was pretty convenient, but it meant yet another plastic card to carry around and potentially lose.

However, there were signs up saying that it was possible to transfer the balance from a physical card to your Apple Wallet (or Google equivalent if you were that way inclined). The instructions were simple enough:

To transfer your SmarTrip card to Apple Wallet, open the Wallet app on your iPhone, tap the “+”

Read the rest

Automatic WordPress Plugin Updates

I wrote a plugin for our local U3A group, but I didn’t want to add it to the official WordPress.org repository as it had no relevance to the general WordPress user base. However, I still wanted to make it as easy as possible for people to install and update but WordPress wonโ€™t know how to check for updates on its own. Thatโ€™s where Plugin Update Checker comes in.

Plugin Update Checker is a lightweight PHP library that adds WordPress-style update notifications to custom or private plugins. Once configured, your plugin behaves just like an official WordPress.org hosted plugin: WordPress checks … Read the rest

Apple Pencil vs Metapen Pencil A8

I’ve recently bought a new iPad A16 to use for watching films, reading magazines and for help with my family history research. My existing iPad, an M1 iPad Mini, has served me well and I will continue to use it as a Kindle but I wanted something with a larger screen.

When I bought the iPad Mini I also bought an Apple Pencil to go with it which I used along with the Goodnotes app to jot notes for both professional and home use cases. It wasn’t something that I used often but was useful occasionally. I decided that … Read the rest

Exporting Foursquare check-ins to Day One

This is the project that I expected to do for my November 12 Apps in 12 Months challenge but, as you will see, that wasn’t actually possible.

Don’t rely on someone elseโ€™s API

I had two projects in mind for Day One: sync my WordPress blog posts and my Foursquare/Swarm check-ins to it. I felt that the latter was probably the easier of the two, so I started with that last September.

I went through the OAuth process to get my key and then started making authenticated calls to the https://api.foursquare.com/v2/users/self/checkins endpoint. This should have returned a list … Read the rest

Grabbing YouTube’s Thumbnail Image

Sometimes there are simple solutions to life’s little problems. I had a need to get the thumbnail image associated with a YouTube video. I spent ages mucking around in the browser code inspector trying to work out how I could achieve this without much success.

Turns out that there is a simple, repeatable way using YouTubeโ€™s built-in thumbnail URLs

Get the Video ID

Every YouTube video has a predictable thumbnail URL, for example: https://www.youtube.com/watch?v=dQw4w9WgXcQ. Go on, click it, you know you want to!

So generically this is:

https://www.youtube.com/watch?v=VIDEO_ID

And in our example above the ID is dQw4w9WgXcQ.

Get Images

Read the rest

Exporting WordPress Posts to Day One

For this month’s “12 Apps in 12 Months” challenge I decided that I wanted to try and import my WordPress posts into the Day One app. Given that Day One is now owned by Automattic who also “own” WordPress I was surprised that something like this didn’t already exist as an option within the app.

Into the Unknown

As a local app, albeit one with cloud storage and syncing, there isn’t an API for Day One. Instead there is a CLI which you can use to create new entries from the command line. This was the approach I took to … Read the rest

Storing Data in a PHP Project

Over the last year I have been reevaluating how and were I store the data for my projects. Traditionally I have added a new database in MySQL for each but I thought that was a bit overkill for some of the smaller, single user, projects that I was working on.

There are several options for storing your data, but each comes with its own trade-offs in setup time, performance, and scalability. Here I look at the ones I have used in my prejects โ€” flat files, SQLite, and MySQL โ€” and see where each one shines (and where … Read the rest

Payment Security, Greek Style

Handheld chip and pin machines aren’t as universal as I thought they were. On a recent trip to the States, I found that it is still much more likely that they will take your card away to some dark corner to produce you a paper receipt, no doubt cloning it in the meantime!

In the UK that almost never happens but the vast majority of restaurants will come to the table with a machine these days, demanding payment before you’ve even seen this bill!

While holidaying in Greece earlier this year I found in a number of places where not … Read the rest

Using bookshelf – a reading list manager

Yesterday I wrote about my latest project โ€” bookshelf. Today, I am going to show you how to use it. This post assumes that you have already downloaded the code and got it up-and-running.

Views

bookshelf has a number of different views to satisfy the different groups using it.

All Books

The main view (Home) is straight list of all your books which can be filtered by author, title, … Read the rest